问题分析
输入命令查看状态”kubectl get pods,svc -n kubernetes-dashboard“,发现状态为CrashLoopBackOff
问题排查
通过命令查看”kubectl describe po -n kubernetes-dashboard xxx“
输入命令”kubectl describe po -n kubernetes-dashboard dashboard-metrics-scraper-79c5968bdc-v6zzz“
查看下面的容器,也是同理,
kubectl describe po -n kubernetes-dashboard kubernetes-dashboard-658485d5c7-vvl8r
查看具体的日志情况
kubectl logs -f -n kubernetes-dashboard xxx
命令:kubectl logs -f -n kubernetes-dashboard kubernetes-dashboard-658485d5c7-vvl8r
查看iptables,命令”iptables -L -n --line-numbers | grep dashboard“,其实很多时候访问不通就是火墙的问题,如果开通火墙还解决不掉,基本上简单粗暴的方法就是重装。
删除原有的dashboard
查看所有pod对应的namesapce
kubectl get pods --all-namespaces
删除命令:kubectl delete service kubernetes-dashboard --namespace=kubernetes-dashboard
关于安装
在重新安装的时候,建议将原有的kubernetes-dashboard都进行删除了,或者重新下载对应版本的"recommended.yaml",这里面说一下,可以在recommended.yaml中设置端口号,对外访问的时候。
安装完成后,通过命令”kubectl get svc -A |grep kubernetes-dashboard“查看对外的端口号,注意这个type类型要改成NodePort
然后通过slave的ip进行访问对应的端口就可以了。
这里要注意一下,在访问https的时候,需要生成证书。
证书生成参考:zhuanlan.zhihu.com/p/91731765
#新建目录:
mkdir key && cd key
#生成证书
openssl genrsa -out dashboard.key 2048
#我这里写的自己的node1节点,因为我是通过nodeport访问的;如果通过apiserver访问,可以写成自己的master节点ip
openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=10.247.62.213'
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
#删除原有的证书secret
kubectl delete secret kubernetes-dashboard-certs -n kubernetes-dashboard
#创建新的证书secret
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard
#查看pod
kubectl get pod -n kubernetes-dashboard
#重启pod
kubectl delete pod kubernetes-dashboard-7b5bf5d559-gn4ls -n kubernetes-dashboard
参考学习
zhuanlan.zhihu.com/p/368578555
官方(主要查版本兼容性,很重要,不同的k8s版本兼容对应的dashboard):github.com/kubernetes/…