k8s在1.24版本以后删除了内置dockershim插件,原生不再支持docker运行时,需要使用第三方cri接口cri-docker
https://github.com/Mirantis/cri-dockerd.git
安装前,需要先升级systemd和主机内核,本操作文档安装的是最新的版本kubernetes1.28.3 需要较高的systemd和内核版本支持
开始安装kubernetes,大体分为三步:
一、安装容器运行时(docker、container、podman任选一种)
我这里选择使用docker,原因是docker经过这么多年发展,相对成熟,操作易上手
yum -y install docker-ce
安装cri-docker插件
git clone https://github.com/Mirantis/cri-dockerd.git
我使用的是较新的0.3.6版本的cri,会依赖containerd.io-1.2.13
安装service
cd cri-dockerd/
install -o root -g root -m 0755 cri-dockerd /usr/local/bin/cri-dockerd
cp packaging/systemd/* /etc/systemd/system
sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service
systemctl daemon-reload
systemctl enable --now cri-docker.socket
二、集群初始化
集群初始化工具kubeadm、kuops等、我这里使用的是kubeadm
在所有节点都需要安装如下工具:
yum -y install kubeadm kubelet kubectl
打印出默认初始化配置
kubeadm config print init-defaults > init.yaml
自定义init.yaml文件需要修改几处地方:
advertiseAddress: #主节点master ip
criSocket: unix:///var/run/cri-dockerd.sock #使用cri-docker后修改为调用cri-docker接口
name: k8s-master: #master节点名称
imageRepository : #镜像仓库地址,修改为私库地址
networking: #定义pod分配子网,初始配置文件中没有,需要新增一条
podSubnet: 10.10.0.0/16
拉取镜像
kubeadm config images list --config=init.yaml
kubeadm config images pull --config=init.yaml
初始化:
kubeadm init --config=init.yaml --upload-certs
重置集群:
kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock
三、安装网络插件
初始化之后,coredns还没启动,需要安装网络插件,集群才能正常运行,
flannel、calico等插件都可支持,我这里使用的是flannel
network设置为kubeadm init时指定的podSubnet
kubectl apply -f kube-flannel.yaml