天天看点

K8S dashboard搭建部署,以及拒绝访问,ImagePullBackOff,ErrImagePull,CrashLoopBackOff问题解决K8S dashboard搭建部署,以及拒绝访问,ImagePullBackOff,ErrImagePull,CrashLoopBackOff问题解决dashboard部署ImagePullBackOff,ErrImagePull,CrashLoopBackOff问题解决

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}')

           
K8S dashboard搭建部署,以及拒绝访问,ImagePullBackOff,ErrImagePull,CrashLoopBackOff问题解决K8S dashboard搭建部署,以及拒绝访问,ImagePullBackOff,ErrImagePull,CrashLoopBackOff问题解决dashboard部署ImagePullBackOff,ErrImagePull,CrashLoopBackOff问题解决

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 查看暴露的端口。