一、Node加入集群时K8S报错cgroupfs驱动问题

错误信息:

detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/

解决方法:修改启动方式为systemd

1.修改docker的配置文件

vim打开/etc/docker/daemon.json文件,改成以下内容。

{ "registry-mirrors": ["https://x3nqjrcg.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"]}

重启docker服务

systemctl daemon-reload
systemctl restart docker

2.修改kubelet配置

新建/etc/systemd/system/kubelet.service.d/10-kubeadm.conf文件,并添加以下内容。

Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --cgroup-driver=cgroupfs"

3.重启kubelet

systemctl daemon-reload
systemctl restart kubelet

二、Node节点加入集群时卡住 “[preflight] Running pre-flight checks”

3个解决方法:

1.时间异常:同步NTP时间,node和master节点要时间正常

master和node执行以下

yum install ntpdate
ntpdate ntp1.aliyun.com;hwclock --systohc
date;hwclock

2.token过期失效:重新获取token和加入命令

node执行以下

kubeadm token create --ttl 0 --print-join-command

3.node未关闭防火墙

node和master执行以下关闭

systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld

三、node加入k8s集群报错this Docker version is not on the list of validated versions: 20.10.17. Latest validated...

详细报错:[preflight] Running pre-flight checks

[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 20.10.17. Latest validated version: 18.09

查看源支持安装的版本列表:yum list docker-ce --showduplicates | sort -r
降级到1806版本(1809会报错):yum downgrade --setopt=obsoletes=0 -y docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7 containerd.io

重启docker随后查看版本

systemctl start docker
docker version

四、kubernetes-dashboard无证书,浏览器无法打开访问

生成个证书就好了

#Step 1: 新建目录:
mkdir key && cd key

#Step 2: 生成 SSL 证书
openssl genrsa -out dashboard.key 2048

#Step 3: 我这里写的自己的 node1 节点,因为我是通过 nodeport 访问的;如果通过 apiserver 访问,可以写成自己的 master 节点 ip
openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=192.168.9.143'
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt

#Step 4: 删除原有的证书 secret
kubectl delete secret kubernetes-dashboard-certs -n kubernetes-dashboard

#Step 5: 创建新的证书 secret
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard

#Step 6: 查看 pod
kubectl get pod -n kubernetes-dashboard

#Step 7: 重启 pod
kubectl delete pod kubernetes-dashboard-7b5bf5d559-gn4ls  -n kubernetes-dashboard

获取token:kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')

最后修改:2024 年 10 月 22 日
喜欢就支持一下吧