K8S dashboard搭建部署,以及拒絕訪問,ImagePullBackOff,ErrImagePull,CrashLoopBackOff問題解決

heliu3發表於2020-09-24

K8S dashboard搭建部署,以及拒絕訪問,ImagePullBackOff,ErrImagePull,CrashLoopBackOff問題解決

dashboard部署

官網有詳細步驟:https://github.com/kubernetes/dashboard#kubernetes-dashboard

1. 執行一下程式碼安裝

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml

2. 配置外網訪問,官網提供代理proxy、port-forward、NodePort三種方法。這裡使用NodePort方式。

kubectl -n kubernetes-dashboard edit service kubernetes-dashboard  #編輯配置檔案

#找到裡面的type: ClusterIP 改成 type: NodePort
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
...
 name: kubernetes-dashboard
 namespace: kubernetes-dashboard
 resourceVersion: "343478"
 selfLink: /api/v1/namespaces/kubernetes-dashboard/services/kubernetes-dashboard
 uid: 8e48f478-993d-11e7-87e0-901b0e532516
spec:
 clusterIP: 10.100.124.90
 externalTrafficPolicy: Cluster
 ports:
 - port: 443
   protocol: TCP
   targetPort: 8443
 selector:
   k8s-app: kubernetes-dashboard
 sessionAffinity: None
 type: ClusterIP
status:
 loadBalancer: {}

4. 檢視暴露的埠

kubectl -n kubernetes-dashboard get service kubernetes-dashboard
NAME                   TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes-dashboard   NodePort   10.100.124.90   <nodes>       443:31707/TCP   21h

5. 一定要注意,如果是單機版,則直接master-ip:port即可以訪問,如果是雲版本,一定到找到pod對應的node,然後瀏覽器訪問 node-ip:port訪問,我之前不知道,部署成功後也一直訪問失敗,官網上有說明,但沒有看到整了好久。

6,可以通過

kubectl describe pod -n namespace podname #檢視節點位於在node上。
kubectl -n kubernetes-dashboard get service kubernetes-dashboard # 檢視暴露的埠。

7,建立account並繫結管理員叢集角色

$ kubectl create serviceaccount dashboard-admin -n kube-system
$ kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
# 記住token,瀏覽器輸入token登入。
$ kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

在這裡插入圖片描述

ImagePullBackOff,ErrImagePull,CrashLoopBackOff問題解決

dashboard不能正常訪問

1,通過 kubectl get pods -A檢視dashboard具體情況,發現dashboard的pod節點ImagePullBackOff

2,通過 kubectl describe pod -n namespace podname 檢視節點詳細情況,看到node2節點無法正擦pull下映象。

3, 通過kubectl log pod -n namespace podname檢視日誌。

4,遇到的情況node節點的dns不能用導致映象pull不下來

vi  /etc/sysconfig/network-script/ifcfg-ens33
#修改 DNS1=8.8.8.8為DNS1=114.114.114.114
systemctl restart network 

然後 ping 百度可以ping 通

5,重啟dashboard的pod,方法有三種

1,在有 yaml 檔案的情況下可以直接使用
kubectl replace --force -f xxxx.yaml 來強制替換Pod 的 API 物件,從而達到重啟的目的。
2,沒有 yaml 檔案,但是使用的是 Deployment 物件。kubectl scale deployment esb-admin --replicas=0 -n {namespace}
3,沒有 yaml 檔案,直接使用的 Pod 物件。kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace --force -f -

7,重啟後kubectl get pods -A檢視啟動情況

8,通過 kubectl describe pod -n namespace podname 檢視節點位於在node上。

9,kubectl -n kubernetes-dashboard get service kubernetes-dashboard 檢視暴露的埠。

相關文章