一,简单搭建,未使用ssl证书,可载谷歌浏览器访问

1,拉取镜像

  1. docker pull gcrxio/kubernetes-dashboard-amd64:v1.10.1
  2. docker tag gcrxio/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
  3. # 为主节点打标签,使容器起在主节点,修改部署文件见第2步
  4. kubectl label node k8s-master type=master

2,k8s dashboard 部署yaml

wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml 后有修改。

  1. cat kubernetes-dashboard.yaml
  2. # Copyright 2017 The Kubernetes Authors.
  3. #
  4. # Licensed under the Apache License, Version 2.0 (the "License");
  5. # you may not use this file except in compliance with the License.
  6. # You may obtain a copy of the License at
  7. #
  8. # http://www.apache.org/licenses/LICENSE-2.0
  9. #
  10. # Unless required by applicable law or agreed to in writing, software
  11. # distributed under the License is distributed on an "AS IS" BASIS,
  12. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. # See the License for the specific language governing permissions and
  14. # limitations under the License.
  15. # ------------------- Dashboard Secret ------------------- #
  16. apiVersion: v1
  17. kind: Secret
  18. metadata:
  19. labels:
  20. k8s-app: kubernetes-dashboard
  21. name: kubernetes-dashboard-certs
  22. namespace: kube-system
  23. type: Opaque
  24. ---
  25. # ------------------- Dashboard Service Account ------------------- #
  26. apiVersion: v1
  27. kind: ServiceAccount
  28. metadata:
  29. labels:
  30. k8s-app: kubernetes-dashboard
  31. name: kubernetes-dashboard
  32. namespace: kube-system
  33. ---
  34. # ------------------- Dashboard Role & Role Binding ------------------- #
  35. kind: Role
  36. apiVersion: rbac.authorization.k8s.io/v1
  37. metadata:
  38. name: kubernetes-dashboard-minimal
  39. namespace: kube-system
  40. rules:
  41. # Allow Dashboard to create 'kubernetes-dashboard-key-holder' secret.
  42. - apiGroups: [""]
  43. resources: ["secrets"]
  44. verbs: ["create"]
  45. # Allow Dashboard to create 'kubernetes-dashboard-settings' config map.
  46. - apiGroups: [""]
  47. resources: ["configmaps"]
  48. verbs: ["create"]
  49. # Allow Dashboard to get, update and delete Dashboard exclusive secrets.
  50. - apiGroups: [""]
  51. resources: ["secrets"]
  52. resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs"]
  53. verbs: ["get", "update", "delete"]
  54. # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.
  55. - apiGroups: [""]
  56. resources: ["configmaps"]
  57. resourceNames: ["kubernetes-dashboard-settings"]
  58. verbs: ["get", "update"]
  59. # Allow Dashboard to get metrics from heapster.
  60. - apiGroups: [""]
  61. resources: ["services"]
  62. resourceNames: ["heapster"]
  63. verbs: ["proxy"]
  64. - apiGroups: [""]
  65. resources: ["services/proxy"]
  66. resourceNames: ["heapster", "http:heapster:", "https:heapster:"]
  67. verbs: ["get"]
  68. ---
  69. apiVersion: rbac.authorization.k8s.io/v1
  70. kind: RoleBinding
  71. metadata:
  72. name: kubernetes-dashboard-minimal
  73. namespace: kube-system
  74. roleRef:
  75. apiGroup: rbac.authorization.k8s.io
  76. kind: Role
  77. name: kubernetes-dashboard-minimal
  78. subjects:
  79. - kind: ServiceAccount
  80. name: kubernetes-dashboard
  81. namespace: kube-system
  82. ---
  83. # ------------------- Dashboard Deployment ------------------- #
  84. kind: Deployment
  85. apiVersion: apps/v1
  86. metadata:
  87. labels:
  88. k8s-app: kubernetes-dashboard
  89. name: kubernetes-dashboard
  90. namespace: kube-system
  91. spec:
  92. replicas: 1
  93. revisionHistoryLimit: 10
  94. selector:
  95. matchLabels:
  96. k8s-app: kubernetes-dashboard
  97. template:
  98. metadata:
  99. labels:
  100. k8s-app: kubernetes-dashboard
  101. spec:
  102. nodeSelector:
  103. type: master
  104. containers:
  105. - name: kubernetes-dashboard
  106. image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
  107. imagePullPolicy: IfNotPresent
  108. ports:
  109. - containerPort: 8443
  110. protocol: TCP
  111. args:
  112. - --auto-generate-certificates
  113. # Uncomment the following line to manually specify Kubernetes API server Host
  114. # If not specified, Dashboard will attempt to auto discover the API server and connect
  115. # to it. Uncomment only if the default does not work.
  116. # - --apiserver-host=http://my-address:port
  117. volumeMounts:
  118. - name: kubernetes-dashboard-certs
  119. mountPath: /certs
  120. # Create on-disk volume to store exec logs
  121. - mountPath: /tmp
  122. name: tmp-volume
  123. livenessProbe:
  124. httpGet:
  125. scheme: HTTPS
  126. path: /
  127. port: 8443
  128. initialDelaySeconds: 30
  129. timeoutSeconds: 30
  130. volumes:
  131. - name: kubernetes-dashboard-certs
  132. secret:
  133. secretName: kubernetes-dashboard-certs
  134. - name: tmp-volume
  135. emptyDir: {}
  136. serviceAccountName: kubernetes-dashboard
  137. # Comment the following tolerations if Dashboard must not be deployed on master
  138. tolerations:
  139. - key: node-role.kubernetes.io/master
  140. effect: NoSchedule
  141. ---
  142. # ------------------- Dashboard Service ------------------- #
  143. kind: Service
  144. apiVersion: v1
  145. metadata:
  146. labels:
  147. k8s-app: kubernetes-dashboard
  148. name: kubernetes-dashboard
  149. namespace: kube-system
  150. spec:
  151. ports:
  152. - port: 443
  153. targetPort: 8443
  154. selector:
  155. k8s-app: kubernetes-dashboard

此处为修改位置,添加了 :

imagePullPolicy: IfNotPresent #使用本地的镜像

nodeSelector: #容器起在主节点上

type: master

  1. # ------------------- Dashboard Deployment ------------------- #
  2. kind: Deployment
  3. apiVersion: apps/v1
  4. metadata:
  5. labels:
  6. k8s-app: kubernetes-dashboard
  7. name: kubernetes-dashboard
  8. namespace: kube-system
  9. spec:
  10. replicas: 1
  11. revisionHistoryLimit: 10
  12. selector:
  13. matchLabels:
  14. k8s-app: kubernetes-dashboard
  15. template:
  16. metadata:
  17. labels:
  18. k8s-app: kubernetes-dashboard
  19. spec:
  20. nodeSelector:
  21. type: master
  22. containers:
  23. - name: kubernetes-dashboard
  24. image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
  25. imagePullPolicy: IfNotPresent
  26. ports:
  27. - containerPort: 8443
  28. protocol: TCP

部署:

kubectl apply -f kubernetes-dashboard.yaml

查看:

kubectl get pods --all-namespaces

使用API Server 访问

  1. https://<master-ip>:<apiserver-port>/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

访问结果为:

  1. {
  2. "kind": "Status",
  3. "apiVersion": "v1",
  4. "metadata": {
  5. },
  6. "status": "Failure",
  7. "message": "services \"https:kubernetes-dashboard:\" is forbidden: User \"system:anonymous\" cannot get services/proxy in the namespace \"kube-system\"",
  8. "reason": "Forbidden",
  9. "details": {
  10. "name": "https:kubernetes-dashboard:",
  11. "kind": "services"
  12. },
  13. "code": 403
  14. }

这是因为没有进行认证,需要去创建一个证书

创建证书

  1. #将kubectl的配置文件复制到$HOME/.kube/config中,$HOME/.kube/config 可能存在,可以先备份
  2. mkdir -p $HOME/.kube
  3. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  4. sudo chown $(id -u):$(id -g) $HOME/.kube/config

生成p12文件

  1. # 生成client-certificate-data
  2. grep 'client-certificate-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.crt
  3. # 生成client-key-data
  4. grep 'client-key-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.key
  5. # 生成p12,这里会要求输入密码,记住这个密码
  6. openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-client"

导入p12文件;可以在谷歌浏览器内导入私有证书

装过程中需要输入的密码则为生成p12文件过程中输入的密码

安装完成后,关闭所有的浏览器,再重新打开,就会显示让选择证书的界面,选择证书,就会出现登录界面。

创建用户

  1. vi admin-user.yaml
  2. apiVersion: v1
  3. kind: ServiceAccount
  4. metadata:
  5. name: admin-user
  6. namespace: kube-system
  7. kubectl create -f admin-user.yaml

用户绑定角色

  1. vi admin-user-role-binding.yaml
  2. apiVersion: rbac.authorization.k8s.io/v1beta1
  3. kind: ClusterRoleBinding
  4. metadata:
  5. name: admin-user
  6. roleRef:
  7. apiGroup: rbac.authorization.k8s.io
  8. kind: ClusterRole
  9. name: cluster-admin
  10. subjects:
  11. - kind: ServiceAccount
  12. name: admin-user
  13. namespace: kube-system
  14. kubectl create -f admin-user-role-binding.yaml

获取token ,这个token 是系统默认的token

  1. kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

访问

https://172.20.7.132:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

输入获取的token

参考感谢:

https://www.jianshu.com/p/073577bdec98

https://www.cnblogs.com/RainingNight/p/deploying-k8s-dashboard-ui.html

问题:

1,搭建使用了系统默认的证书,并未自己新建证书进行加载

2,对角色,用户绑定等知识点不熟

3,集成Heapster插件安装失败

4,细节不懂,只是照抄而已

操作的步骤

  1. 31 docker pull gcrxio/kubernetes-dashboard-amd64:v1.10.1
  2. 32 docker tag gcrxio/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
  3. 33 ll
  4. 34 cd /k8s/
  5. 35 ll
  6. 36 curl -O https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
  7. 37 ll
  8. 38 kubectl label node k8s-master type=master
  9. 39 vim kubernetes-dashboard.yaml
  10. 40 cat kubernetes-dashboard.yaml
  11. 41 rm kubernetes-dashboard.yaml
  12. 42 ll
  13. 43 wget https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
  14. 44 ll
  15. 45 wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
  16. 46 ll
  17. 47 vim kubernetes-dashboard.yaml
  18. 48 kubectl apply -f kubernetes-dashboard.yaml
  19. 49 kubectl get pods --all-namespaces
  20. 50 vim admin-user.yaml
  21. 51 kubectl create -f admin-user.yaml
  22. 52 vim admin-user-role-binding.yaml
  23. 53 kubectl create -f admin-user-role-binding.yaml
  24. 54 kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
  25. 55 kubectl cluster-info
  26. 56 ll
  27. 57 grep 'client-certificate-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.crt
  28. 58 ll
  29. 59 grep 'client-key-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.key
  30. 60 openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-client"
  31. 61 ll
  32. 62 ss -tanl
  33. 63 kubectl -n kube-system edit service kubernetes-dashboard
  34. 64 kubectl -n kube-system get service kubernetes-dashboard
  35. 65 kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
  36. 66 ll
  37. 67 kubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/influxdb/influxdb.yaml
  38. 68 ll
  39. 69 wget http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/influxdb/influxdb.yaml
  40. 70 kubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/influxdb/grafana.yaml
  41. 71 wget http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/influxdb/grafana.yaml
  42. 72 kubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/influxdb/heapster.yaml
  43. 73 wget http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/influxdb/heapster.yaml
  44. 74 kubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/rbac/heapster-rbac.yaml
  45. 75 wget http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/rbac/heapster-rbac.yaml
  46. 76 kubectl get pods --namespace=kube-system

k8s-dashboard搭建的更多相关文章

  1. Ubuntu下搭建Kubernetes集群(4)--部署K8S Dashboard

    K8S Dashboard是官方的一个基于WEB的用户界面,专门用来管理K8S集群,并可展示集群的状态.K8S集群安装好后默认没有包含Dashboard,我们需要额外创建它. 首先我们执行命令: wg ...

  2. kubernetes实践之二:Kubernetes可视WEB UI Dashboard搭建

    Kubernetes可视WEBUI Dashboard搭建 支持浏览器:火狐 一.Dashboard下载地址 git clone https://github.com/kubernetes/kuber ...

  3. Docker & k8s 系列二:本机k8s环境搭建

    本篇将会讲解k8s是什么?本机k8s环境搭建,部署一个pod并演示几个kubectl命令,k8s dashboard安装. k8s是什么 k8s是kubernetes的简写,它是一个全新的基于容器技术 ...

  4. 【k8s】在AWS EKS部署并通过ALB访问k8s Dashboard保姆级教程

    本教程适用范围 在AWS上使用EKS服务部署k8s Dashboard,并通过ALB访问 EKS集群计算节点采用托管EC2,并使用启动模板. 使用AWS海外账号,us-west-2区域 使用账号默认v ...

  5. 在k8s中搭建可解析hostname的DNS服务

    2016-01-25更新 上篇文章总结k8s中搭建hbase时,遇到Pod中hostname的DNS解析问题,本篇将通过修改kube2sky源码来解决这个问题. 1 前言 kube2sky在Githu ...

  6. Hystrix + Hystrix Dashboard搭建(Spring Cloud 2.X)

    本机IP为  192.168.1.102 一.搭建Hystrix Dashboard 1.   新建 Maven 项目  hystrix-dashboard 2. pom.xml <projec ...

  7. Alibaba Nacos 学习(五):K8S Nacos搭建,使用nfs

    Alibaba Nacos 学习(一):Nacos介绍与安装 Alibaba Nacos 学习(二):Spring Cloud Nacos Config Alibaba Nacos 学习(三):Spr ...

  8. kubernetes学习14—Dashboard搭建和认证

    本文收录在容器技术学习系列文章总目录 一.介绍 Kubernetes Dashboard是Kubernetes集群的基于Web的通用UI.它允许用户管理在群集中运行的应用程序并对其进行故障排除,以及管 ...

  9. k8s dashboard 安装和证书更新

    1.k8s 搭建   参见https://blog.51cto.com/lizhenliang/2325770 [root@VM_0_48_centos ~]# kubectl get cs NAME ...

  10. k8s初始化搭建方法

    http://www.cnblogs.com/cocowool/p/kubeadm_install_kubernetes.html https://www.kubernetes.org.cn/doc- ...

随机推荐

  1. c语言l博客作业07

    一.本周教学内容&目标 第3章 分支结构 3.3 使学生熟悉多分支结构switch语句的使用. 二.本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://e ...

  2. Spring Boot常用功能

    1.Spring Boot打war包配置 利用IDEA将SpringBoot的项目打包成war文件

  3. 【Linux 网络编程】常用套接字类型

    常用套接字类型<1>流式套接字(SOCK_STREAM)---TCP      提供面向连接的.可靠的传输服务,数据无差错,无重复的发送,      且按发送顺序接收.<2>数 ...

  4. GPIB、USB、PCI、PCI Express和以太网/LAN/LXI

    GPIB 我们研究的第一个总线是IEEE 488总线,较为熟悉的称谓是GPIB(通用接口总线).GPIB是一种在业界已经得到证明的专为仪器控制应用设计的总线.GPIB在过去30年来一直是鲁棒的.可靠的 ...

  5. ZOJ 2836 Number Puzzle 题解

    题面 lcm(x,y)=xy/gcd(x,y) lcm(x1,x2,···,xn)=lcm(lcm(x1,x2,···,xn-1),xn) #include <bits/stdc++.h> ...

  6. Luogu P1080 [NOIP2012]国王游戏

    题目 按\(a_i*b_i\)升序排序即可. 证明考虑交换法. 对于排序后相邻的两个人\(i,j(a_ib_i\le a_jb_j)\),设前面的总的积为\(s\),则当前答案为\(\max(\fra ...

  7. C++ 大数运算(加减乘除取模)

    加法:(字符串模拟小学加法) string add(string s1, string s2) { int len1 = s1.length(), len2 = s2.length(); ; '); ...

  8. ORA-00979: 不是 GROUP BY 表达式

    在oracle数据库中,sql语句中group by子句报错,原因是select 存在列字段,而group by中不存在.

  9. vue在组件中使用v-model

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 异步分布式队列Celery

    异步分布式队列Celery 转载地址 Celery 是什么? 官网 Celery 是一个由 Python 编写的简单.灵活.可靠的用来处理大量信息的分布式系统,它同时提供操作和维护分布式系统所需的工具 ...