ubuntu 使用 kubeadm 安装 kubernetes 问题

2022年11月6日 1944点热度 0人点赞 0条评论
内容纲要

由于新版本的 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

痴者工良

高级程序员劝退师

文章评论