第五章 kubernetes常见故障排错

一、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
posted @ 2021-09-23 16:39  年少纵马且长歌  阅读(1532)  评论(0编辑  收藏  举报