1、Kubernetes Dashboard 是 k8s集群的⼀个 WEB UI管理⼯具,代码托管在 github 上,地址:
  1. https://github.com/kubernetes/dashboard

 2、安装直接使用官方文件就行(如果地址失效去github 看一下)

  1. wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
  2.  
  3. kubectl apply -f kubernetes-dashboard.yaml

 3、我在master执行完现在如下

  1. [root@master ~]# kubectl get pods --all-namespaces
  2. NAMESPACE NAME READY STATUS RESTARTS AGE
  3. kube-system coredns-576cbf47c7-2g27x 1/1 Running 0 18h
  4. kube-system coredns-576cbf47c7-47mgd 1/1 Running 0 18h
  5. kube-system etcd-master 1/1 Running 0 18h
  6. kube-system kube-apiserver-master 1/1 Running 0 18h
  7. kube-system kube-controller-manager-master 1/1 Running 0 18h
  8. kube-system kube-flannel-ds-amd64-hw277 1/1 Running 4 18h
  9. kube-system kube-flannel-ds-amd64-j5jcr 1/1 Running 1 18h
  10. kube-system kube-proxy-8tfsp 1/1 Running 1 18h
  11. kube-system kube-proxy-k6k79 1/1 Running 0 18h
  12. kube-system kube-scheduler-master 1/1 Running 0 18h
  13. kube-system kubernetes-dashboard-65c76f6c97-htfxt 1/1 ImagePullBackOff 0 18h
  14. #ImagePullBackOff:这个状态是有问题的,然后我就各种百度,从启服务器,发下没有什么卵用啊,初学就是比较费劲,然后才百度出来下面的解决方法
  1. [root@master ~]# kubectl describe -n kube-system pod/kubernetes-dashboard-65c76f6c97-htfxt
  2. Name: kubernetes-dashboard-65c76f6c97-htfxt
  3. Namespace: kube-system
  4. Priority: 0
  5. PriorityClassName: <none>
  6. Node: node01/172.21.0.14
  7. Start Time: Sun, 13 Oct 2019 19:42:52 +0800
  8. Labels: k8s-app=kubernetes-dashboard
  9. pod-template-hash=65c76f6c97
  10. Annotations: <none>
  11. Status: Running
  12. IP: 10.244.1.3
  13. Controlled By: ReplicaSet/kubernetes-dashboard-65c76f6c97
  14. Containers:
  15. kubernetes-dashboard:
  16. Container ID: docker://7f9d2b3f22112c761af8c451376fb2155ac2014f7c13a4a7cda8ebcefebb0de3
  17. Image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
  18. Image ID: docker://sha256:f9aed6605b814b69e92dece6a50ed1e4e730144eb1cc971389dde9cb3820d124
  19. Port: 8443/TCP
  20. Host Port: 0/TCP
  21. Args:
  22. --auto-generate-certificates
  23. State: Running
  24. Started: Sun, 13 Oct 2019 20:20:58 +0800
  25. Ready: True
  26. Restart Count: 0
  27. Liveness: http-get https://:8443/ delay=30s timeout=30s period=10s #success=1 #failure=3
  28. Environment: <none>
  29. Mounts:
  30. /certs from kubernetes-dashboard-certs (rw)
  31. /tmp from tmp-volume (rw)
  32. /var/run/secrets/kubernetes.io/serviceaccount from kubernetes-dashboard-token-m4s7k (ro)
  33. Conditions:
  34. Type Status
  35. Initialized True
  36. Ready True
  37. ContainersReady True
  38. PodScheduled True
  39. Volumes:
  40. kubernetes-dashboard-certs:
  41. Type: Secret (a volume populated by a Secret)
  42. SecretName: kubernetes-dashboard-certs
  43. Optional: false
  44. tmp-volume:
  45. Type: EmptyDir (a temporary directory that shares a pod's lifetime)
  46. Medium:
  47. kubernetes-dashboard-token-m4s7k:
  48. Type: Secret (a volume populated by a Secret)
  49. SecretName: kubernetes-dashboard-token-m4s7k
  50. Optional: false
  51. QoS Class: BestEffort
  52. Node-Selectors: <none>
  53. Tolerations: node-role.kubernetes.io/master:NoSchedule
  54. node.kubernetes.io/not-ready:NoExecute for 300s
  55. node.kubernetes.io/unreachable:NoExecute for 300s
  56. Events:
  57. Type Reason Age From Message
  58. ---- ------ ---- ---- -------
  59. Normal Scheduled 60m default-scheduler Successfully assigned kube-system/kubernetes-dashboard-65c76f6c97-htfxt to node01
  60. Normal Pulling 58m (x4 over 60m) kubelet, node01 pulling image "k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1"
  61. Warning Failed 58m (x4 over 60m) kubelet, node01 Failed to pull image "k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1": rpc error: code = Unknown desc = Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
  62. Warning Failed 58m (x4 over 60m) kubelet, node01 Error: ErrImagePull
  63. Normal BackOff 57m (x6 over 60m) kubelet, node01 Back-off pulling image "k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1"
  64. Warning Failed 50m (x37 over 60m) kubelet, node01 Error: ImagePullBackOff
  65. Warning FailedMount 28m kubelet, node01 MountVolume.SetUp failed for volume "kubernetes-dashboard-certs" : couldn't propagate object cache: timed out waiting for the condition
  66. Warning FailedMount 28m kubelet, node01 MountVolume.SetUp failed for volume "kubernetes-dashboard-token-m4s7k" : couldn't propagate object cache: timed out waiting for the condition
  67. Warning FailedCreatePodSandBox 28m kubelet, node01 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "0ac235fed359b9d102282bcc816ff3de7c9e26d18270067761f5304aa998d747" network for pod "kubernetes-dashboard-65c76f6c97-htfxt": NetworkPlugin cni failed to set up pod "kubernetes-dashboard-65c76f6c97-htfxt_kube-system" network: open /run/flannel/subnet.env: no such file or directory
  68. Warning FailedCreatePodSandBox 28m kubelet, node01 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "233c431e6bceddf5f315f1b8aac762359202ca5a13cd4e4d2fd6a2aaf4123cd2" network for pod "kubernetes-dashboard-65c76f6c97-htfxt": NetworkPlugin cni failed to set up pod "kubernetes-dashboard-65c76f6c97-htfxt_kube-system" network: open /run/flannel/subnet.env: no such file or directory
  69. Normal SandboxChanged 28m (x3 over 28m) kubelet, node01 Pod sandbox changed, it will be killed and re-created.
  70. Warning FailedCreatePodSandBox 28m kubelet, node01 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "0de536b8aa18baa69b6fbdd645063b61ee7fe0fb141b063a0387872e216a6d18" network for pod "kubernetes-dashboard-65c76f6c97-htfxt": NetworkPlugin cni failed to set up pod "kubernetes-dashboard-65c76f6c97-htfxt_kube-system" network: open /run/flannel/subnet.env: no such file or directory
  71. Normal Pulling 27m (x3 over 28m) kubelet, node01 pulling image "k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1"
  72. Warning Failed 27m (x3 over 28m) kubelet, node01 Failed to pull image "k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1": rpc error: code = Unknown desc = Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
  73. Warning Failed 27m (x3 over 28m) kubelet, node01 Error: ErrImagePull
  74. Normal BackOff 26m (x4 over 28m) kubelet, node01 Back-off pulling image "k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1"
  75. Warning Failed 23m (x14 over 28m) kubelet, node01 Error: ImagePullBackOff

结果是镜像不存在,我是阿里云所有直接从阿里云pull,在打包,然后在看,还是不行,然后又一顿百度,

  1. docker pull mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1
  2. docker tag mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1

 一顿百度解决方法如下: 查看详细信息,发下pod在node01 上运行的,然后吧镜像save 一份到node01服务器就好了,或者直接在node01上面直接pull

  1. [root@master ~]# kubectl get pods --all-namespaces -o wide
  2. NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
  3. kube-system coredns-576cbf47c7-2g27x 1/1 Running 0 18h 10.244.0.4 master <none>
  4. kube-system coredns-576cbf47c7-47mgd 1/1 Running 0 18h 10.244.0.5 master <none>
  5. kube-system etcd-master 1/1 Running 0 18h 172.21.0.10 master <none>
  6. kube-system kube-apiserver-master 1/1 Running 0 18h 172.21.0.10 master <none>
  7. kube-system kube-controller-manager-master 1/1 Running 0 18h 172.21.0.10 master <none>
  8. kube-system kube-flannel-ds-amd64-hw277 1/1 Running 4 18h 172.21.0.14 node01 <none>
  9. kube-system kube-flannel-ds-amd64-j5jcr 1/1 Running 1 18h 172.21.0.10 master <none>
  10. kube-system kube-proxy-8tfsp 1/1 Running 1 18h 172.21.0.14 node01 <none>
  11. kube-system kube-proxy-k6k79 1/1 Running 0 18h 172.21.0.10 master <none>
  12. kube-system kube-scheduler-master 1/1 Running 0 18h 172.21.0.10 master <none>
  13. kube-system kubernetes-dashboard-65c76f6c97-htfxt 1/1 Running 0 18h 10.244.1.3 node01 <none>

 4、删除现有的dashboard服务,dashboard服务的namespace是kube-system,但是该服务的类型是ClusterIP,不便于我们通过浏览器访问,因此需要改成NodePort型的;

  1. kubectl delete service kubernetes-dashboard --namespace=kube-system

 5、执行以下命令,创建dashboard服务的配置文件

  1. cat <<EOF > ~/dashboard-svc.yaml
  2. kind: Service
  3. apiVersion: v1
  4. metadata:
  5. labels:
  6. k8s-app: kubernetes-dashboard
  7. name: kubernetes-dashboard
  8. namespace: kube-system
  9. spec:
  10. type: NodePort
  11. ports:
  12. - port: 443
  13. targetPort: 8443
  14. selector:
  15. k8s-app: kubernetes-dashboard
  16. EOF

 6、用刚刚创建的yaml文件创建新的dashboard服务: 

  1. kubectl create -f ~/dashboard-svc.yaml

 7、想要访问dashboard服务,就要有访问权限,这里需要先设置一个dashboard服务的权限和绑定关系,执行以下命令创建对应的资源文件dashboard-svc-account.yaml: 

  1. cat <<EOF > ~/dashboard-svc-account.yaml
  2. apiVersion: v1
  3. kind: ServiceAccount
  4. metadata:
  5. labels:
  6. k8s-app: kubernetes-dashboard
  7. name: kubernetes-dashboard-admin
  8. namespace: kube-system
  9. ---
  10. apiVersion: rbac.authorization.k8s.io/v1beta1
  11. kind: ClusterRoleBinding
  12. metadata:
  13. name: kubernetes-dashboard-admin
  14. labels:
  15. k8s-app: kubernetes-dashboard
  16. roleRef:
  17. apiGroup: rbac.authorization.k8s.io
  18. kind: ClusterRole
  19. name: cluster-admin
  20. subjects:
  21. - kind: ServiceAccount
  22. name: kubernetes-dashboard-admin
  23. namespace: kube-system
  24. EOF

8、执行命令创建ServiceAccount和ClusterRoleBinding:

  1. kubectl create -f ~/dashboard-svc-account.yaml

9、找出secret,这个secret中有token,该token是登录dashboard时用到的

  1. [root@master data]# kubectl -n kube-system get secret|egrep kubernetes-dashboard-admin
  2. kubernetes-dashboard-admin-token-2q42n kubernetes.io/service-account-token 3 18h

10、查看kubernetes-dashboard-admin-token-2q42n 的详情,里面有对应的token信息:  

  1. kubectl describe -n kube-system secret/kubernetes-dashboard-admin-token-2q42n|egrep token:

11、查看pod 位于node01节点:

  1. kubectl describe -n kube-system pod/kubernetes-dashboard-65c76f6c97-htfxt

  1. #查看服务
  2. kubectl get svc -n kube-system

12、用Firefox访问   https://ip:31330     地址,得到以下提示:

13、创建以config方式登录dashborad的用户参考

https://blog.51cto.com/dellinger/2442038 

k8s安装dashboard的更多相关文章

  1. 【K8S】K8S 1.18.2安装dashboard(基于kubernetes-dashboard 2.0.0版本)

    [K8S]K8S 1.18.2安装dashboard(基于kubernetes-dashboard 2.0.0版本) 写在前面 K8S集群部署成功了,如何对集群进行可视化管理呢?别着急,接下来,我们一 ...

  2. k8s 安装步骤

    1 安装Docker 1.1 增加中国区镜像 https://registry.docker-cn.com 2 下载安装k8s的镜像的脚本 https://github.com/AliyunConta ...

  3. k8s安装部署过程个人总结及参考文章

    以下是本人安装k8s过程 一.单机配置 1. 环境准备 主机名 IP 配置 master1 192.168.1.181 1C 4G 关闭所有节点的seliux以及firewalld sed -i 's ...

  4. kubernetes(安装dashboard)

    https://blog.csdn.net/qq_22917163/article/details/84527420 1. 通过yaml文件安装dashboard 我们可以从https://githu ...

  5. Kubernetes 入门-学习-nginx安装-dashboard安装

    一.入门 1.Kubernetes中文社区---http://docs.kubernetes.org.cn/ 2.Kubernetes集群组件: - etcd 一个高可用的K/V键值对存储和服务发现系 ...

  6. Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)

    背景: 由于工作发生了一些变动,很长时间没有写博客了. 概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别).使用了Centos 7系统. 一.Centos7 ...

  7. kubernetes系列(十七) - 通过helm安装dashboard详细教程

    1. 前提条件 2. 配置https证书为secret 3. dashboard安装 3.1 helm拉取dashboard的chart 3.2 配置dashboard的chart包配置 3.3 he ...

  8. kubeadm部署安装+dashboard+harbor

    kubeadm 部署安装+dashboard+harbor master(2C/4G,cpu核心数要求大于2) 192.168.80.10 docker.kubeadm.kubelet.kubectl ...

  9. K8S 部署Dashboard UI

    Kubernetes Dashboard是Kubernetes集群的通用.基于Web的UI.它允许用户管理集群中运行的应用程序并对其进行故障排除,以及管理集群本身. 访问到DashBoard有两种方式 ...

随机推荐

  1. 使用Fiddler抓取手机APP数据包--360WIFI

    使用Fiddler抓取手机APP流量--360WIFI 操作步骤:1.打开Fiddler,Tools-Fiddler Options-Connections,勾选Allow remote comput ...

  2. Kubernetes中的Volume介绍

    Kubernetes中支持的所有磁盘挂载卷简介发表于 2018年1月26日 Weihai Feb 10,2016 7400 字 | 阅读需要 15 分钟 容器磁盘上的文件的生命周期是短暂的,这就使得在 ...

  3. 如何简单使用tensorboard展示(一)

    我使用tensorboard中的graph做了展示,至于其它功能可以类推,其代码如下: import numpy as npimport tensorflow as tf x_img = np.arr ...

  4. spark源码解析--Shuffle输出追踪者--MapOutputTracker

    Shuffle输出追踪者--MapOutputTracker 这个组件作为shuffle的一个辅助组件,在整个shuffle模块中具有很重要的作用.我们在前面一系列的分析中,或多或少都会提到这个组件, ...

  5. 易语言网页登录 POST

    使用精易模块 打开网页登录窗口 抓取数据 输入用户名密码,抓包 保存抓到的数据 包含post地址和数据信息 易语言代码 解决乱码

  6. Class.forName() 与 ClassLoader.loadClass()的区别

        看到一个面试题,说说Class.forName() 与 ClassLoader.loadClass()的区别,特意记录一下,方便后续查阅.     在我们写java代码时,通常用这两种方式来动 ...

  7. OEL7.6安装Oracle Database 19C(VERSION 19.3.0.0)

    1.eDelivery中下载Oracle Database 19C和Oel的安装介质,并安装好操作系统 2.安装Oracle环境准备工具 环境准备工具会自动完成用户和用户组的创建.系统参数配置.依赖包 ...

  8. Linux小知识点

    磁盘 Linux的磁盘类型有IDE和SCSI两种. IDE的命名方式是采用/dev/hdx(x代表磁盘块),其下的分区则是/dev/hdxy(y代表该磁盘上的分区号) SCSI则是采用/dev/sdx ...

  9. youtube-dll工具使用,很好用!!

    最近喜欢上youtube-dll这个插件,下载东西真的很好用,墙裂推荐,github地址如下 https://github.com/ytdl-org/youtube-dl 安装 1.Linux 1.1 ...

  10. 利用DNS日志进行MySQL盲注

    0x01 技术原理 这里是利用load_file这个函数利用smb请求方式请求域名机器下的一个文件,由于计算机对该域名不熟悉所以需要优先请求DNS,所以我们通过DNS日志记录中的内容来获取回显.解决了 ...