内容目录
由于新版本的 docker 跟 kubernetes 对系统有要求,因此首先要做以下操作,确保 docker、kubelet 可以正常工作。
首先修改或添加 /etc/docker/daemon.json
,内容替换如下:
{
"registry-mirrors": ["https://94zlnekp1.mirror.aliyuncs.com"],
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "1"
},
"exec-opts": ["native.cgroupdriver=systemd"]
}
94zlnekp1.mirror.aliyuncs.com
是个人专属的 Docker 加速地址。
重启 Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
这一步主要是解决 cgroups
的问题。
This error is likely caused by:
- The kubelet is not running
- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)
接着,关闭 swap ,这个是 kubelet 的要求。
关闭虚拟内存:
swapoff -a
修改配置:
nano /etc/fstab
删除这一行
/swap.img none swap sw 0 0
然后删除 swap.img
文件即可。
接着,重启容器运行时:
systemctl restart containerd
如果在 journalctl -xeu kubelet
查看日志发现
"Error getting node" err="node \"k8smain\" not found"
那么可以打开 /etc/hosts
文件,加入或修改当前机器名称对应的 ip。
127.0.0.1 myhost
如果需要使用多个节点,那么每个节点都需要配置,且配置为主节点所在的内网 ip。
如果报:
r="failed to run Kubelet: unable to determine runtime API version: rpc error: code = Unavailable d
则
crictl config runtime-endpoint unix:///run/containerd/containerd.sock
crictl config image-endpoint unix:///run/containerd/containerd.sock
再查看
systemctl status containerd -l
文章评论