因为没有K8s基础的坑
kubeadm kubelet 最好指定版本安装,因为kubelet的版本需要小于等于kubeadm的版本,否则就会报错。
运行 kubeadm init
,不用手动 systemctl start kubelet
,因为会报错不满足某某条件。
openSUSE的官方的kubernetes-kubelet
包安装后,/usr/bin/kubelet
只是一个shell脚本而非k8s官方的可执行文件。
而/usr/bin/kubelet1.22
才是可执行文件,因为kubeadm init
会默认引用/usr/bin/kubelet
,所以要ln -sf /usr/bin/kubelet1.22 /usr/bin/kubelet
来使用。
安装不指定版本就会出现报错:
this version of kubeadm only supports deploying clusters with the control plane version >= 1.26.0. Current version: v1.23.4
很奇怪的是,/usr/bin/kubelet
、/usr/bin/kubeadm
、/usr/local/bin/kubectl
的版本分别为v1.27.3、v1.26.6、v1.26.5;
为什么会出现 Current version: v1.23.4
呢?可能是附带其他组件版本的问题?
安装流程
操作时间在2023年7月。
禁用 swap、编辑 /etc/hosts 这些参考别的文章。
安装 K8s 相关包
安装kubernetes1.23-kubeadm
,就会附带安装:
The following 12 NEW packages are going to be installed:
conntrack-tools cri-o cri-o-kubeadm-criconfig cri-tools ebtables kubernetes1.22-kubelet kubernetes1.23-kubeadm kubernetes1.27-kubelet kubernetes1.27-kubelet-common
libebtc0 libnetfilter_cthelper0 libnetfilter_cttimeout1
链接 kubelet 特定版本二进制文件
cd /usr/bin
ln -sf kubelet1.22 kubelet
kubeadm 初始化
kubeadm init --apiserver-advertise-address=0.0.0.0 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.10.0.0/16 --pod-network-cidr=10.244.0.0/16 \
--cri-socket=/var/run/dockershim.sock