前几天嫌服务器上镜像太多占空间,全部删掉了,今天看到 microk8s 更新了 1.30 版本,果断更新,结果集群跑不起来了。
先通过 microk8s.kubectl get pods --all-namespaces 命令看看 pod 状态。

如上图可以看到,所有的业务 pod 都是 Unknown 状态,然后有一个 calico-node 的系统 pod 卡在 Init 状态,初步怀疑是 calico-node 初始化卡住了,导致集群起不起来。
执行命令 microk8s.kubectl describe pods calico-node-pnrbj -n kube-system 可以看到如下输出:

如上图所示,calico-node 启动时,需要拉取一个 registry.k8s.io/pause:3.7 镜像,但是由于某些网络原因导致拉取不下来。
这时候我们可以采取换一个国内源拉取这个镜像,然后重新打个 tag 的方式来解决。
registry.k8s.io/pause:3.7 对应阿里源上的镜像是 registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7。
执行命令:
microk8s.ctr image pull registry.k8s.io/pause:3.7
如下图所示,镜像拉取成功。

使用如下命令重新打标签:
microk8s.ctr image tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7 registry.k8s.io/pause:3.7
重启下集群,或者等一会儿就好啦~