基于kubeamd搭建集群遇到的问题汇总
如果上述操作完成后,还存在某个节点处于NotReady状态,可以在Master将该节点删除
1)# master节点将该节点删除
kubectl drain k8snode1 --delete-local-data --force --ignore-daemonsetskubectl delete node k8snode1
2)# 然后到k8snode1节点进行重置
kubeadm reset
3)# 重置完后在加入
kubeadmjoin 192.168.177.130:6443--token8j6ui9.gyr4i156u30y80xf--discovery-token-ca-cert-hashsha256:eda1380256a62d8733f4bddf926f148e57cf9d1a3a58fb45dd6e80768af5a500
1.错误一
在执行Kubernetes init方法的时候,出现这个问题
error execution phase preflight:[preflight] Some fatal errors occurred:[ERROR NumCPU]: the number of available CPUs 1 is less than the required 2
是因为VMware设置的核数为1,而K8S需要的最低核数应该是2,调整核数重启系统即可
错误二
在给node1节点使用 kubernetes join命令的时候,出现以下错误
error execution phase preflight:[preflight] Some fatal errors occurred:[ERROR Swap]: running with swap on is not supported. Please disable swap
错误原因是需要关闭swap
# 关闭swap
# 临时 swapoff -a
# 永久 sed -ri 's/.*swap.*/#&/' /etc/fstab (-r 表示使用扩展的正则表达式)
3.错误三
在给node节点使用 kubernetes join命令的时候,出现以下错误
The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get http://localhost:10248/healthz: dial tcp[::1]:10248: connect: connection refused
解决方法,首先需要到 master 节点,创建一个文件
# 创建文件夹
mkdir /etc/systemd/system/kubelet.service.d
# 创建文件
vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# 添加如下内容
Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --fail-swap-on=false"
# 重置
kubeadm reset
#删除刚刚创建的配置目录
rm -rf $HOME/.kube
#然后 在master重新初始化
kubeadm init--apiserver-advertise-address=192.168.31.200 --image-repositoryregistry.aliyuncs.com/google_containers--kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
#初始完成后,再到 node节点,执行 kubeadm join命令,加入到master
kubeadm join 192.168.31.200:6443 --token darpgd.1hc96uxp56e4sso2 \
--discovery-token-ca-cert-hash sha256:4b7d42d21c6dd78d3dd552b5937b48cd65d5b1b7091d6237d8283d1756b6c930
#添加完成后,使用下面命令,查看节点是否成功添加
kubectl get nodes
4.错误四
在执行查看节点的时候, kubectl get nodes 会出现问题
Unable to connect to the server: x509: certificate signed by unknown authority(possibly because of " crypto/rsa: verification error" while trying to verify candidate authority certificate"kubernetes")
这是因为之前创建的配置文件还存在,也就是这些配置
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id-u):$(id-g) $HOME/.kube/config
#需要做的就是把配置文件删除,然后重新执行一下
rm -rf $HOME/.kube
然后再次创建一下即可
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id-u):$(id-g) $HOME/.kube/config
这个问题主要是因为在执行 kubeadm reset 的时候,没有把 $HOME/.kube 给移除掉,再次创建时就会出现问题了
5.错误五
1)在使用下面命令,添加node节点到集群上的时候
kubeadm join 192.168.31.200:6443 --token darpgd.1hc96uxp56e4sso2 \
--discovery-token-ca-cert-hash sha256:4b7d42d21c6dd78d3dd552b5937b48cd65d5b1b7091d6237d8283d1756b6c930
然后出现了这个错误
报错截图出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将包发往本机另一网卡,该网卡根据路由表继续发送数据包。这通常就是路由器所要实现的功能。也就是说 /proc/sys/net/ipv4/ip_forward 文件的值不支持转发
0:禁止
1:转发
所以需要将值修改成1即可
echo "1" > /proc/sys/net/ipv4/ip_forward && sysctl -p
修改完成后,重新执行命令即可
2)重新执行命令后报错:
报错截图解决方法:
rm -rf /etc/kubernetes/kubelet.conf
rm -rf /etc/kubernetes/pki/ca.crt
再次执行添加node命令:
kubeadm join 192.168.31.200:6443 --token darpgd.1hc96uxp56e4sso2 \
--discovery-token-ca-cert-hash sha256:4b7d42d21c6dd78d3dd552b5937b48cd65d5b1b7091d6237d8283d1756b6c930
6.问题六
在安装网络插件的时候flannel状态为Init:ImagePullBackOff
1)查看kube-flannel.yml文件时发现quay.io/coreos/flannel:v0.13.1-rc2-amd64
quay.io网站网络不可达
2)下载flanneld:v0.13.1-rc2-amd64导入到docker中
可以去https://github.com/coreos/flannel/releases官方仓库下载镜像
3)导入镜像,命令,特别提示,3个机器都需要导入,
docker load < flanneld-v0.13.1-rc2-amd64.docker
4)再次查看kubectl get pod -n kube-system