执行初始化命令: # kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
问题很low,直接甩结论了
从报错信息中可以看到apiserver、controller-manager。。。版本是错误的
需要重新下载正确版本的镜像
# 获取要拉取的镜像信息,images.txt是临时文件
kubeadm config images list > images.txt
###注意:检查images.txt文件中的镜像版本是否与自己环境中的版本一致,不一致需要手动修改下
# 替换成registry.aliyuncs.com/google_containers的仓库,该仓库国内可用,和k8s.gcr.io的更新时间只差一两天
sed -i 's@k8s.gcr.io@registry.aliyuncs.com/google_containers@g' images.txt
#拉取各镜像
cat images.txt | while read line
do
docker pull $line
done
# 修改镜像tag为k8s.gcr.io仓库,并删除registry.aliyuncs.com/google_containers的tag
sed -i 's@registry.aliyuncs.com/google_containers/@@g' images.txt
cat images.txt | while read line
do
docker tag registry.aliyuncs.com/google_containers/$line k8s.gcr.io/$line
docker rmi -f registry.aliyuncs.com/google_containers/$line
done
# 操作完后显示本地docker镜像
docker images
# 删除临时文件
rm -f images.txt
最后重新初始化就好啦!!!
问题二: 1、报错信息:执行初始化命令: # kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log [wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s [kubelet-check] Initial timeout of 40s passed. ror execution phase wait-control-plane: couldn't initialize a Kubernetes cluster Unfortunately, an error has occurred: timed out waiting for the condition 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) If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands: - 'systemctl status kubelet' - 'journalctl -xeu kubelet' Additionally, a control plane component may have crashed or exited when started by the container runtime. To troubleshoot, list all containers using your preferred container runtimes CLI, e.g. docker. Here is one example how you may list all Kubernetes containers running in docker: - 'docker ps -a | grep kube | grep -v pause' Once you have found the failing container, you can inspect its logs with: - 'docker logs CONTAINERID'2、排查过程:(其中还百度了许多方法,but木有用)
1. 检查docker、kubelet服务运行状况(确认正常) 2. 执行# journalctl -u kubelet 发现报错: 6月 08 16:26:42 master kubelet[16048]: E0608 16:26:42.454465 16048 kubelet.go:2248] node "master" not found 6月 08 16:26:42 master kubelet[16048]: E0608 16:26:42.556547 16048 kubelet.go:2248] node "master" not found 6月 08 16:26:42 master kubelet[16048]: E0608 16:26:42.658097 16048 kubelet.go:2248] node "master" not found 6月 08 16:26:42 master kubelet[16048]: E0608 16:26:42.758757 16048 reflector.go:125] k8s.io/client-go/informers/factory.go:133: Failed to list *v1beta1.CSI 6月 08 16:26:42 master kubelet[16048]: E0608 16:26:42.758830 16048 reflector.go:125] k8s.io/kubernetes/pkg/kubelet/kubelet.go:453: Failed to list *v1.Node: 6月 08 16:26:42 master kubelet[16048]: E0608 16:26:42.758873 16048 reflector.go:125] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:47: Failed to list * 6月 08 16:26:42 master kubelet[16048]: E0608 16:26:42.758907 16048 reflector.go:125] k8s.io/kubernetes/pkg/kubelet/kubelet.go:444: Failed to list *v1.Servi 6月 08 16:26:42 master kubelet[16048]: E0608 16:26:42.758940 16048 reflector.go:125] k8s.io/client-go/informers/factory.go:133: Failed to list *v1beta1.Run 6月 08 16:26:42 master kubelet[16048]: E0608 16:26:42.758967 16048 kubelet_node_status.go:94] Unable to register node "master" with API server: Post https: 6月 08 16:26:42 master kubelet[16048]: E0608 16:26:42.759005 16048 controller.go:115] failed to ensure node lease exists, will retry in 7s, error: Get http 6月 08 16:26:42 master kubelet[16048]: E0608 16:26:42.759084 16048
看到node “master” not found就差不多明白了,果然检查了一下,hosts解析文件有错误。。。。
3、解决办法:1. 修改/etc/hosts文件中的主机名 ip 10.0.0.201 master 10.0.0.202 node01 10.0.0.203 node02 2. 清除之前kubeadm初始化的残留数据 kubeadm reset 3. 重新执行初始化命令 4. OK!



