一、报错A

  • 安装flannel报错

[root@master ~]# kubectl apply -f kube-flannel.yml
error: error parsing kube-flannel.yml: error converting YAML to JSON: yaml: line 2: found character that cannot start any token

报错原因:yml文件中有格式符或编码问。或有类似的问题,大部分都是kube-flannel.yml的问题,这里建议使用我的文件上传到主节点即可

  • kube-flannel.yml免费下载地址(提取码:000a):网盘

二、报错B

在主节点使用这个命令:

kubectl get node

发现节点一直处于NotReady状态
通过命令在该节点查看相关kubectl日志提示如下错误:

主节点输入这个命令:[root@master ~]# journalctl -f -u kubelet  

[failed to find plugin “flannel” in path [/opt/cni/bin]]

查看 /opt/cni/bin 缺少 flannel
解决方式:
需要下载CNI插件:
CNI plugins v0.8.6github下载地址:
https://github.com/containernetworking/plugins/releases/tag/v0.8.6
(在1.0.0版本后CNI Plugins中没有flannel)

  • CNI Plugins免费下载地址(提取码:000b):网盘

  • 我这边通过windterm上传到主节点(直接将文件丢进去,软件会自动上传。前提是节点已经安装过这个: [root@master bin]# yum -y install lrzsz)
    在这里插入图片描述

  • 上传到主节点这个位置:
    [root@master bin]# pwd /opt/cni/bin

  • 开始解压软件
    [root@master bin]# tar zxvf cni-plugins-linux-amd64-v0.8.6.tgz
    在这里插入图片描述

  • 验证主节点状态
    [root@master bin]# kubectl get nodes
    在这里插入图片描述

  • 其他从节点也是同样操作

在其他从节点也是上传此文件并解压(从节点也需要)。cni-plugins-linux-amd64-v0.8.6.tgz

从节点解压完成后在主节点查看所有节点状态都是ready[root@master bin]# kubectl get nodes
在这里插入图片描述

三、报错C

  • 在dashboard页面发现报错(且左侧点击后没有内容)
    -
    在这里插入图片描述
    报错信息如下(或类似):
customresourcedefinitions.apiextensions.k8s.io is forbidden: User "system:serviceaccount:kubernetes-dashboard:kubernetes-dashboard" cannot list resource "customresourcedefinitions" in API group "apiextensions.k8s.io" at the cluster scope
或
storageclasses.storage.k8s.io is forbidden: User "system:serviceaccount:kubernetes-dashboard:kubernetes-dashboard" cannot list resource "storageclasses" in API group "storage.k8s.io" at the cluster scope
或
persistentvolumes is forbidden: User "system:serviceaccount:kubernetes-dashboard:kubernetes-dashboard" cannot list resource "persistentvolumes" in API group "" at the cluster scope
或
nodes is forbidden: User "system:serviceaccount:kubernetes-dashboard:kubernetes-dashboard" cannot list resource "nodes" in API group "" at the cluster scope
  • 解决方式(主节点执行):

[root@master ~]# kubectl create clusterrolebinding
serviceaccounts-cluster-admin --clusterrole=cluster-admin
–group=system:serviceaccounts

在这里插入图片描述
参考:报错参考

四、报错D

k8s的Dashboard再次web登录时无法登录,问题解决方式
安装完k8s的Dashboard后,第一次可以web页面访问。过几天后重新再访问时发现不能访问

dashboard的镜像拉取成功,容器创建成功,但容器在启动的时候启动失败,状态为CrashLoopBackOff
查看pod状态:[root@master ~]# kubectl get po,svc -n kubernetes-dashboard
在这里插入图片描述

  • 故障排查:
    1)查看dashboard pod的详细信息,在最后的Events中看到容器的状态异常(Back-off restarting failed container):
[root@master ~]# kubectl describe po -n kubernetes-dashboard dashboard-metrics-scraper-c79c65bb7-vwjws

报错信息:
Events:Type Reason Age From Message
/ ---- ------ ---- ---- -------
Warning Unhealthy 5m54s (x199 over 5d23h) kubelet, slave1 Liveness probe failed: Get http://10.244.1.3:8000/: dial tcp 10.244.1.3:8000: connect: connection refused
Warning BackOff 67s (x746 over 5d22h) kubelet, slave1 Back-off restarting failed container
在这里插入图片描述
然后再然后马上查看dashboard pod的日志

[root@master ~]# kubectl logs -f -n kubernetes-dashboard kubernetes-dashboard-55fd8c78bd-776rt 
报错信息:
panic: Get "https://10.96.0.1:443/api/v1/namespaces/kubernetes-dashboard/secrets/kubernetes-dashboard-csrf": dial tcp 10.96.0.1:443: connect: no route to host
goroutine 1 [running]:
github.com/kubernetes/dashboard/src/app/backend/client/csrf.(*csrfTokenManager).init(0xc0004fa200)

在这里插入图片描述
把报错信息去搜索引擎搜索了下,说可能是ipatables规则问题,于是查看了下iptables规则:

iptables -L -n --line-numbers | grep dashboard

在这里插入图片描述
根据上图可以很明显看到,dashboard的数据包直接被REJECT(拒绝)了,找到原因就好办了,设置成允许(ACCEPT)就行

1)先把现有的防火墙规则保存下

[root@master ~]# iptables-save > iptables.rules

2)执行以下命令以确保默认策略为ACCEPT

[root@master ~]# iptables -P INPUT ACCEPT
[root@master ~]# iptables -P FORWARD ACCEPT
[root@master ~]# iptables -P OUTPUT ACCEPT
[root@master ~]# iptables -F

4)把创建的dashboard pod删掉并重启下docker,再次创建dashboard,创建成功

# 只在主节点操作(两个pod都删除)
[root ~]# kubectl delete pod dashboard-metrics-scraper-c79c65bb7-mkh8h -n kubernetes-dashboard
pod "dashboard-metrics-scraper-c79c65bb7-vwjws" deleted
[root ~]# kubectl delete pod kubernetes-dashboard-55fd8c78bd-8ptbk  -n kubernetes-dashboard
pod "kubernetes-dashboard-55fd8c78bd-776rt" deleted

# 重启docker 所有节点
[root ~]# systemctl restart docker

5)再次查看状态

[root ~]# kubectl get pods -n kubernetes-dashboard
# 下面状态为running 则正常

在这里插入图片描述
6).重新登陆页面:
一般上述操作完等一会儿.试试自己的各个节点访问(之前第一次安装成功是是主节点地址,现在是192.168.30.101访问),访问重新获取一些ak登录即可:

[root@master ~]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

在这里插入图片描述

在这里插入图片描述
参考:学习

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐