8. k8s集群环境搭建之集群检查
各服务启动是否正常
etcd kube-apiserver kube-controller-manager kube-scheduler
kubelet kube-proxy flanneld docker
node 是否都正常
kubectl get nodes
若为notready 则重启该节点上的kubelet systemctl restart kubelet
pod中无法通过service ip访问其它容器
kubernetes service对应的endpoint是否正常,有时重启ip会变;
kubectl describe service kubernetes
如果不对则重启master node
若service对应 endpointip 正确 但仍无法访问service ip
确认kube-proxy是否启动正常,是否有权限调用api
若均正常则重启kube-proxy,若仍有问题 查看 proxy日志
flannel是否正常启动,且已管理 docker ip
ip addr
解决方案:
* systemctl stop docker
* systemctl restart flanneld
* mk-docker-opts.sh -i
* source /run/flannel/subnet.env
* ifconfig docker0 ${FLANNEL_SUBNET}
* ip addr查看是否正常
* systemctl restart docker
* systemctl restart kubelet
* 删除pod 重新自动生成
若出现重启docker后,通过ip addr查看docker0已自动重置的情况
原因为systemd在启动 dockerd 进程前,先导入flannel生成的网络相关环境变量
解决方案:删除/var/lib/docker/network/files/
下的文件local-kv.db
重启docker
如果上述操作后仍有问题 通过iptables -L查看iptables规则,然后通过 iptables -F/-X/-Z 清除iptables规则
无法通过域名连接其它容器
- dns容器是否均已启动
kubectl get pods -n kube-system
解决方案:
* 重新创建sa kube-dns
* 重新创建deploy kube-dns
* 查看service kubernetes绑定的ip是否正确,若不正在重启kube-apiserver
创建sa时未创建secret
原因为:
apiserver中的安装ip为127.0.0.1,而controller-manager及scheduler中的masterip设置的并不是127.0.0.1
所以出现该问题,查看controller-manager日志是否正常
也可手动创建secret,并通过label
"kubernetes.io/service-account.name": "myserviceaccount"
关联 sa