k8s安装教程:https://www.cnblogs.com/StreamPlume/p/18006734
坑一: containerd的配置文件sandbox的标签与实际的sandbox标签不一致
该坑导致kubeadm init时启动kubelet报错无法向apiserver注册
因为cri根本没起来,所以k8s的组件也没起来。kubelet自然无法注册
docker ps | grep pause 查看镜像名称
修改 /etc/containerd/config.toml 中sandbox为对应的pause镜像名称
坑二: 无法启动cni flannel
一般是因为无法访问docker官方镜像仓库导致的,我们可以先使用国内代理将flannel插件拉取下来
国内代理:https://docker.aityp.com/image/docker.io/flannel/flannel-cni-plugin:v1.5.1-flannel2
ctr images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/flannel/flannel:v0.25.6
ctr images tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/flannel/flannel:v0.25.6 docker.io/flannel/flannel:v0.25.6
ctr images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/flannel/flannel-cni-plugin:v1.5.1-flannel2
ctr images tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/flannel/flannel-cni-plugin:v1.5.1-flannel2 docker.io/flannel/flannel-cni-plugin:v1.5.1-flannel2
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 获取flannel配置
修改配置文件中的DaemonSet中的container镜像地址为ctr中的
坑三:coredns无法启动
安装flannel后coredns仍然无法启动,使用kubectl describe查看信息发现是/opt/bin/cni下缺少xxx插件
去https://github.com/containernetworking/plugins/releases安装插件,并将这些插件解压到对应目录
坑四:k8s1.24后使用containerd作为cri,国内需要为它配置镜像源
修改/etc/containerd/config.toml,添加docker.io和k8s.io的镜像源
[plugins."io.containerd.grpc.v1.cri".registry]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://docker.m.daocloud.io"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
endpoint = ["https://docker.m.daocloud.io"]