一、kubernetes服务没找到
#报错:
no server found for cluster "kubernetes"
#因为在master上面建立的 kube-proxy.kubeconfig 不对,忘记了:
export KUBE_APISERVER="https://172.16.1.80:8443";
#重新建立 kube-proxy.kubeconfig 即可。
二、kubelet启动报错
#安装k8s的node节点上的kubelet,启动报错:
kubelet: error: failed to run Kubelet: cannot create certificate signing request: Unauthorized
#查看apiserver日志报错:
k8s_master kube-apiserver: E0202 14:25:20.749540 40045 authentication.go:64] Unable to authenticate the request due to an error: [invalid bearer token, [invalid bearer token, invalid bearer token]]
#原因是:kuber-apiserver启动参数中的token.csv和kubelet启动参数中指定的bootstrap文件bootstrap.kubeconfig中的token值是否一致,此外该token必须为实际数值,不能使用变量代替
#修改 bootstrap.kubeconfig中的token 等于 kuber-apiserver启动参数中的tokn.csv即可。
三、Flannel插件版本不兼容
# 报错:Flannel插件工作状态正常,但无法与其他主机之间通信
# 原因:
1.flannel v0.10 不支持 etcd v3
[root@k8s-master-01 ~]# etcd --version
etcd Version: 3.3.24
[root@k8s-master-01 ~]# flanneld --version
v0.10.1-rc1
2.flannel v0.13.1 兼容性可能有问题
[root@k8s-master-01 ~]# flanneld --version
v0.13.1-rc1
#解决
1.安装v0.13.1版本flannel:
查看运行状态:systemctl status flannel 发现无报错日志且主机间可相互通信
即可使用 flannel:v0.13.1
2.推荐安装 flannel:v0.11 版本可完美解决兼容性问题
四、集群DNS无法正常工作
# 报错:运行容器卡在主界面
[root@k8s-master-01 ~]# kubectl run test -it --rm --image=busybox:1.28.3
#原因:
1.将集群创建了角色(master节点不会调度任何服务,卡在主界面属于正常现象)
2.集群DNS无法提供IP
3.网络插件无法正常工作
#解决:
1.首先执行 kubectl describe pod test 命令查看底部信息:
# 报错:kubelet, k8s-master-03 Failed to pull image “busybox:1.28.3": rpc error: code = Unknown desc = Error response from daemon: Get https:/registry -1.docker.io/V2/: dial top: lookup registry-1.docker.io on 223.5.5.5:53: servermisbehaving
2.修改所有主机DNS网络为114.114.114.114,重启systemctl restart flannel
3.进入容器界面,输入:
/ # nslookup kubernetes
Server: 10.96.0.2
Address 1: 10.96.0.2 kube-dns.kube-system.svc.cluster.local
server can‘t resolve kubernetes.default
4.再次 kubectl describe pod test命令查看底部信息:
# 报错:Failed to list *v1.Namespace: Get https://10.0.0.1:443/api/v1/namespaces?limit=500&resourceVersion=0: dial tcp 10.0.0.1:443: i/o timeout
解决方案:重启Node上的kube-proxy、重新创建coredns,重启flannel
5.进入容器界面,输入:
/ # nslookup kubernetes
Server: 10.96.0.2
Address 1: 10.96.0.2 kube-dns.kube-system.svc.cluster.local
Name: kubernetes
Address 1: 10.96.0.1 kubernetes.default.svc.cluster.local
表示DNS服务正常工作
五、没有或者缺失加入集群请求
#原因:
1.kubelet或者kube-proxy未启动或启动报错
2.docker文件系统有问题(systemd, cgroupfs)
#解决:
1.查看kubelet或者kube-proxy是否正常启动
2.查看docker文件系统:
docker info | grep "Cgroup Driver"
3.修改[root@k8s-master-01 ~]# vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://8mh75mhz.mirror.aliyuncs.com"],
# "exec-opts": ["native.cgroupdriver=systemd"]
# systemd不需要注释,cgroupfs则需注释掉,默认使用cgroupfs
}
4.重启docker服务
systemctl daemon-reload
systemctl restart docker