当前位置:  首页>> 技术小册>> Kubernetes合辑1-安装Kubernetes

dashboard默认的yaml是采用https接口,dashboard的github主页:https://github.com/kubernetes/dashboard

我对清单文件做了调整,增加了管理员账户,ingress资源

kubernetes-dashboard.yaml:

  1. # Copyright 2017 The Kubernetes Authors.
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. apiVersion: v1
  15. kind: Namespace
  16. metadata:
  17. name: kubernetes-dashboard
  18. ---
  19. apiVersion: v1
  20. kind: ServiceAccount
  21. metadata:
  22. labels:
  23. k8s-app: kubernetes-dashboard
  24. name: kubernetes-dashboard
  25. namespace: kubernetes-dashboard
  26. ---
  27. kind: Service
  28. apiVersion: v1
  29. metadata:
  30. labels:
  31. k8s-app: kubernetes-dashboard
  32. name: kubernetes-dashboard
  33. namespace: kubernetes-dashboard
  34. spec:
  35. ports:
  36. - port: 443
  37. targetPort: 8443
  38. selector:
  39. k8s-app: kubernetes-dashboard
  40. ---
  41. apiVersion: v1
  42. kind: Secret
  43. metadata:
  44. labels:
  45. k8s-app: kubernetes-dashboard
  46. name: kubernetes-dashboard-certs
  47. namespace: kubernetes-dashboard
  48. type: Opaque
  49. ---
  50. apiVersion: v1
  51. kind: Secret
  52. metadata:
  53. labels:
  54. k8s-app: kubernetes-dashboard
  55. name: kubernetes-dashboard-csrf
  56. namespace: kubernetes-dashboard
  57. type: Opaque
  58. data:
  59. csrf: ""
  60. ---
  61. apiVersion: v1
  62. kind: Secret
  63. metadata:
  64. labels:
  65. k8s-app: kubernetes-dashboard
  66. name: kubernetes-dashboard-key-holder
  67. namespace: kubernetes-dashboard
  68. type: Opaque
  69. ---
  70. kind: ConfigMap
  71. apiVersion: v1
  72. metadata:
  73. labels:
  74. k8s-app: kubernetes-dashboard
  75. name: kubernetes-dashboard-settings
  76. namespace: kubernetes-dashboard
  77. ---
  78. kind: Role
  79. apiVersion: rbac.authorization.k8s.io/v1
  80. metadata:
  81. labels:
  82. k8s-app: kubernetes-dashboard
  83. name: kubernetes-dashboard
  84. namespace: kubernetes-dashboard
  85. rules:
  86. # Allow Dashboard to get, update and delete Dashboard exclusive secrets.
  87. - apiGroups: [""]
  88. resources: ["secrets"]
  89. resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"]
  90. verbs: ["get", "update", "delete"]
  91. # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.
  92. - apiGroups: [""]
  93. resources: ["configmaps"]
  94. resourceNames: ["kubernetes-dashboard-settings"]
  95. verbs: ["get", "update"]
  96. # Allow Dashboard to get metrics.
  97. - apiGroups: [""]
  98. resources: ["services"]
  99. resourceNames: ["heapster", "dashboard-metrics-scraper"]
  100. verbs: ["proxy"]
  101. - apiGroups: [""]
  102. resources: ["services/proxy"]
  103. resourceNames: ["heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"]
  104. verbs: ["get"]
  105. ---
  106. kind: ClusterRole
  107. apiVersion: rbac.authorization.k8s.io/v1
  108. metadata:
  109. labels:
  110. k8s-app: kubernetes-dashboard
  111. name: kubernetes-dashboard
  112. rules:
  113. # Allow Metrics Scraper to get metrics from the Metrics server
  114. - apiGroups: ["metrics.k8s.io"]
  115. resources: ["pods", "nodes"]
  116. verbs: ["get", "list", "watch"]
  117. ---
  118. apiVersion: rbac.authorization.k8s.io/v1
  119. kind: RoleBinding
  120. metadata:
  121. labels:
  122. k8s-app: kubernetes-dashboard
  123. name: kubernetes-dashboard
  124. namespace: kubernetes-dashboard
  125. roleRef:
  126. apiGroup: rbac.authorization.k8s.io
  127. kind: Role
  128. name: kubernetes-dashboard
  129. subjects:
  130. - kind: ServiceAccount
  131. name: kubernetes-dashboard
  132. namespace: kubernetes-dashboard
  133. ---
  134. apiVersion: rbac.authorization.k8s.io/v1
  135. kind: ClusterRoleBinding
  136. metadata:
  137. name: kubernetes-dashboard
  138. roleRef:
  139. apiGroup: rbac.authorization.k8s.io
  140. kind: ClusterRole
  141. name: kubernetes-dashboard
  142. subjects:
  143. - kind: ServiceAccount
  144. name: kubernetes-dashboard
  145. namespace: kubernetes-dashboard
  146. ---
  147. kind: Deployment
  148. apiVersion: apps/v1
  149. metadata:
  150. labels:
  151. k8s-app: kubernetes-dashboard
  152. name: kubernetes-dashboard
  153. namespace: kubernetes-dashboard
  154. spec:
  155. replicas: 1
  156. revisionHistoryLimit: 10
  157. selector:
  158. matchLabels:
  159. k8s-app: kubernetes-dashboard
  160. template:
  161. metadata:
  162. labels:
  163. k8s-app: kubernetes-dashboard
  164. spec:
  165. securityContext:
  166. seccompProfile:
  167. type: RuntimeDefault
  168. containers:
  169. - name: kubernetes-dashboard
  170. image: kubernetesui/dashboard:v2.5.1
  171. imagePullPolicy: Always
  172. ports:
  173. - containerPort: 8443
  174. protocol: TCP
  175. args:
  176. - --auto-generate-certificates
  177. - --namespace=kubernetes-dashboard
  178. # Uncomment the following line to manually specify Kubernetes API server Host
  179. # If not specified, Dashboard will attempt to auto discover the API server and connect
  180. # to it. Uncomment only if the default does not work.
  181. # - --apiserver-host=http://my-address:port
  182. volumeMounts:
  183. - name: kubernetes-dashboard-certs
  184. mountPath: /certs
  185. # Create on-disk volume to store exec logs
  186. - mountPath: /tmp
  187. name: tmp-volume
  188. livenessProbe:
  189. httpGet:
  190. scheme: HTTPS
  191. path: /
  192. port: 8443
  193. initialDelaySeconds: 30
  194. timeoutSeconds: 30
  195. securityContext:
  196. allowPrivilegeEscalation: false
  197. readOnlyRootFilesystem: true
  198. runAsUser: 1001
  199. runAsGroup: 2001
  200. volumes:
  201. - name: kubernetes-dashboard-certs
  202. secret:
  203. secretName: kubernetes-dashboard-certs
  204. - name: tmp-volume
  205. emptyDir: {}
  206. serviceAccountName: kubernetes-dashboard
  207. nodeSelector:
  208. "kubernetes.io/os": linux
  209. # Comment the following tolerations if Dashboard must not be deployed on master
  210. tolerations:
  211. - key: node-role.kubernetes.io/master
  212. effect: NoSchedule
  213. ---
  214. kind: Service
  215. apiVersion: v1
  216. metadata:
  217. labels:
  218. k8s-app: dashboard-metrics-scraper
  219. name: dashboard-metrics-scraper
  220. namespace: kubernetes-dashboard
  221. spec:
  222. ports:
  223. - port: 8000
  224. targetPort: 8000
  225. selector:
  226. k8s-app: dashboard-metrics-scraper
  227. ---
  228. kind: Deployment
  229. apiVersion: apps/v1
  230. metadata:
  231. labels:
  232. k8s-app: dashboard-metrics-scraper
  233. name: dashboard-metrics-scraper
  234. namespace: kubernetes-dashboard
  235. spec:
  236. replicas: 1
  237. revisionHistoryLimit: 10
  238. selector:
  239. matchLabels:
  240. k8s-app: dashboard-metrics-scraper
  241. template:
  242. metadata:
  243. labels:
  244. k8s-app: dashboard-metrics-scraper
  245. spec:
  246. securityContext:
  247. seccompProfile:
  248. type: RuntimeDefault
  249. containers:
  250. - name: dashboard-metrics-scraper
  251. image: kubernetesui/metrics-scraper:v1.0.7
  252. ports:
  253. - containerPort: 8000
  254. protocol: TCP
  255. livenessProbe:
  256. httpGet:
  257. scheme: HTTP
  258. path: /
  259. port: 8000
  260. initialDelaySeconds: 30
  261. timeoutSeconds: 30
  262. volumeMounts:
  263. - mountPath: /tmp
  264. name: tmp-volume
  265. securityContext:
  266. allowPrivilegeEscalation: false
  267. readOnlyRootFilesystem: true
  268. runAsUser: 1001
  269. runAsGroup: 2001
  270. serviceAccountName: kubernetes-dashboard
  271. nodeSelector:
  272. "kubernetes.io/os": linux
  273. # Comment the following tolerations if Dashboard must not be deployed on master
  274. tolerations:
  275. - key: node-role.kubernetes.io/master
  276. effect: NoSchedule
  277. volumes:
  278. - name: tmp-volume
  279. emptyDir: {}
  280. ---
  281. apiVersion: networking.k8s.io/v1
  282. kind: Ingress
  283. metadata:
  284. name: kubernetes-dashboard
  285. namespace: kubernetes-dashboard
  286. annotations:
  287. # nginx.ingress.kubernetes.io/secure-backends:
  288. nginx.org/ssl-services: "kubernetes-dashboard"
  289. spec:
  290. ingressClassName: nginx
  291. rules:
  292. - host: dashboard-local-01.huanle.com
  293. http:
  294. paths:
  295. - path: /
  296. pathType: Prefix
  297. backend:
  298. service:
  299. name: kubernetes-dashboard
  300. port:
  301. number: 443
  302. tls:
  303. - hosts: ["dashboard-local-01.huanle.com"]
  304. ---
  305. # admin.yaml, 管理员账号
  306. apiVersion: v1
  307. kind: ServiceAccount
  308. metadata:
  309. labels:
  310. k8s-app: kubernetes-dashboard
  311. addonmanager.kubernetes.io/mode: Reconcile
  312. name: kubernetes-dashboard-admin
  313. namespace: kube-system
  314. ---
  315. apiVersion: rbac.authorization.k8s.io/v1
  316. kind: ClusterRoleBinding
  317. metadata:
  318. name: kubernetes-dashboard-admin
  319. namespace: kube-system
  320. labels:
  321. k8s-app: kubernetes-dashboard
  322. addonmanager.kubernetes.io/mode: Reconcile
  323. roleRef:
  324. apiGroup: rbac.authorization.k8s.io
  325. kind: ClusterRole
  326. name: cluster-admin
  327. subjects:
  328. - kind: ServiceAccount
  329. name: kubernetes-dashboard-admin
  330. namespace: kube-system


该分类下的相关小册推荐: