前提是机器需要能访问互联网。
如果是单机就跑一下命令:
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="--docker" sh -s - server
如果是主从关系:
Master主机:
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="--docker" sh -s - server
从:Master主机执行命令,执行完成后获取master主机的K3S_TOKEN用于slave(默认路径:/var/lib/rancher/k3s/server/node-token)
slave主机执行命令,加入K3S集群
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="--docker" K3S_URL=https://主机IP:6443 K3S_TOKEN=K10bb35019b1669197e06f97b6c14bb3b3c7c7076cd20afe1f550d6793d02b9eed8::server:9599c8b3ffbbd38b7721207183cd6a62 sh -
如果是不能连接互联网的话,下载k3s的脚本和tar.gz
https://github.com/k3s-io/k3s/releases
- 离线镜像:k3s-airgap-images-amd64.tar.gz
- 二进制文件:k3s
使用的 v1.22.7+k3s1 版本下载地址:
离线镜像:https://github.com/k3s-io/k3s/releases/download/v1.22.7%2Bk3s1/k3s-airgap-images-amd64.tar.gz
二进制文件:https://github.com/k3s-io/k3s/releases/download/v1.22.7%2Bk3s1/k3s
#cd k3s
# 解压文件
gzip -d k3s-airgap-images-amd64.tar.gz
# 将 tar 文件放到 images 目录下
sudo mkdir -p /var/lib/rancher/k3s/agent/images/
sudo cp ./k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/
# 将二进制文件放在每个节点的 /usr/local/bin 中
sudo cp k3s /usr/local/bin
# 授予可执行权限
sudo chmod +x /usr/local/bin/k3s
# 下载 K3s 安装脚本,并命名为 install_k3s.sh
wget -c -O install_k3s.sh https://get.k3s.io(可提前下载好)
# 授予可执行权限
chmod +x ./install_k3s.sh
然后
单节点
# 在k3s-s01执行
# --advertise-address 需替换为server节点配置的IP
$ INSTALL_K3S_SKIP_DOWNLOAD=true K3S_KUBECONFIG_MODE="644" INSTALL_K3S_EXEC="--advertise-address 192.168.3.30" ./install_k3s.sh
# [INFO] Skipping k3s download and verify
# [INFO] Skipping installation of SELinux RPM
# [INFO] Creating /usr/local/bin/kubectl symlink to k3s
# [INFO] Creating /usr/local/bin/crictl symlink to k3s
# [INFO] Creating /usr/local/bin/ctr symlink to k3s
# [INFO] Creating killall script /usr/local/bin/k3s-killall.sh
# [INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh
# [INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
# [INFO] systemd: Creating service file /etc/systemd/system/k3s.service
# [INFO] systemd: Enabling k3s unit
# Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → # /etc/systemd/system/k3s.service.
# [INFO] systemd: Starting k3s
查看集群状态:
$ kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:6443
CoreDNS is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/https:metrics-server:https/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
当集群状态全部 running
后,查看节点状态:
$ kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k3s-s01 Ready control-plane,master 37s v1.22.7+k3s1 10.0.2.15 <none> Ubuntu 20.04.3 LTS 5.4.0-90-generic containerd://1.5.9-k3s1
有主从:
查看添加 worker 节点使用的 token:
$ sudo cat /var/lib/rancher/k3s/server/node-token
# K10e903b153e357f6de73205841342678d142f2df0c2f46d7a3205350a214329d1d::server:078...950
从机
# 在 k3s-node-1 执行:
$ INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://192.168.3.30:6443 K3S_TOKEN=K10...d1d::server:078...950 INSTALL_K3S_EXEC="--node-ip 192.168.3.31" ./install_k3s.sh
# 在 k3s-node-2 执行:
$ INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://192.168.3.30:6443 K3S_TOKEN=K10...d1d::server:078...950 INSTALL_K3S_EXEC="--node-ip 192.168.3.32" ./install_k3s.sh
# [INFO] Skipping k3s download and verify
# [INFO] Skipping installation of SELinux RPM
# [INFO] Creating /usr/local/bin/kubectl symlink to k3s
# [INFO] Creating /usr/local/bin/crictl symlink to k3s
# [INFO] Creating /usr/local/bin/ctr symlink to k3s
# [INFO] Creating killall script /usr/local/bin/k3s-killall.sh
# [INFO] Creating uninstall script /usr/local/bin/k3s-agent-uninstall.sh
# [INFO] env: Creating environment file /etc/systemd/system/k3s-agent.service.env
# [INFO] systemd: Creating service file /etc/systemd/system/k3s-agent.service
# [INFO] systemd: Enabling k3s-agent unit
# Created symlink /etc/systemd/system/multi-user.target.wants/k3s-agent.service → /etc/systemd/system/k3s-agent.service.
# [INFO] systemd: Starting k3s-agent
查看节点状态,看是否有报错:
$ sudo systemctl status k3s-agent
集群访问
存储在 /etc/rancher/k3s/k3s.yaml
的 kubeconfig 文件用于对 Kubernetes 集群的访问。
设置 kubectl 使用的上下文环境变量:
$ export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
查看节点状态:
$ kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k3s-node-1 Ready <none> 8m58s v1.22.7+k3s1 192.168.3.31 <none> Ubuntu 20.04.3 LTS 5.4.0-90-generic containerd://1.5.9-k3s1
k3s-node-2 Ready <none> 3m33s v1.22.7+k3s1 192.168.3.32 <none> Ubuntu 20.04.3 LTS 5.4.0-90-generic containerd://1.5.9-k3s1
k3s-s01 Ready control-plane,master 16m v1.22.7+k3s1 10.0.2.15 <none> Ubuntu 20.04.3 LTS 5.4.0-90-generic containerd://1.5.9-k3s1
查看是否安装良好:
kubectl get pod -o wide --all-namespaces