背景

前面介绍了kubernetes集群部署,如果想更直观地管理和监控k8s集群状况,kubernets-dashboard是一个比较大众的方式。dashboard提供了一个UI界面,使我们可以在页面上查看kubernetes的集群状态以及对集群进行相关的操作,大大便利了我们管理k8s集群。

这里就介绍一下dashboard的部署。

部署

1:nodes节点上从阿里云的docker仓库下载Dashboard的相关镜像。

# docker pull registry.cn-hangzhou.aliyuncs.com/capfgd/kubernetes-dashboard-amd64:v1.8.3

2:修改tag名称。

# docker tag registry.cn-hangzhou.aliyuncs.com/capfgd/kubernetes-dashboard-amd64:v1.8.3 k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3

3:从官方网站上下载dashboard的yaml编排文件,并进行相应的修改。

下载地址:https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

kubernetes-dashboard.yaml文件的内容大概如下:

# Copyright 2017 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Configuration to deploy release version of the Dashboard UI compatible with
# Kubernetes 1.8.
#
# Example usage: kubectl create -f <this_file>
# ------------------- Dashboard Secret ------------------- #
apiVersion: v1
kind: Secret
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard-certsnamespace: kube-system
type: Opaque
---
# ------------------- Dashboard Service Account ------------------- #
apiVersion: v1
kind: ServiceAccount
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kube-system
---
# ------------------- Dashboard Role & Role Binding ------------------- #
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: kubernetes-dashboard-minimalnamespace: kube-system
rules:# Allow Dashboard to create 'kubernetes-dashboard-key-holder' secret.
- apiGroups: [""]resources: ["secrets"]verbs: ["create"]# Allow Dashboard to create 'kubernetes-dashboard-settings' config map.
- apiGroups: [""]resources: ["configmaps"]verbs: ["create"]# Allow Dashboard to get, update and delete Dashboard exclusive secrets.
- apiGroups: [""]resources: ["secrets"]resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs"]verbs: ["get", "update", "delete"]# Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.
- apiGroups: [""]resources: ["configmaps"]resourceNames: ["kubernetes-dashboard-settings"]verbs: ["get", "update"]# Allow Dashboard to get metrics from heapster.
- apiGroups: [""]resources: ["services"]resourceNames: ["heapster"]verbs: ["proxy"]
- apiGroups: [""]resources: ["services/proxy"]resourceNames: ["heapster", "http:heapster:", "https:heapster:"]verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: kubernetes-dashboard-minimalnamespace: kube-system
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: kubernetes-dashboard-minimal
subjects:
- kind: ServiceAccountname: kubernetes-dashboardnamespace: kube-system
---
# ------------------- Dashboard Deployment ------------------- #
kind: Deployment
apiVersion: apps/v1beta2
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kube-system
spec:replicas: 1revisionHistoryLimit: 10selector:matchLabels:k8s-app: kubernetes-dashboardtemplate:metadata:labels:k8s-app: kubernetes-dashboardspec:containers:- name: kubernetes-dashboardimage: k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3ports:- containerPort: 8443protocol: TCPargs:- --auto-generate-certificates# Uncomment the following line to manually specify Kubernetes API server Host# If not specified, Dashboard will attempt to auto discover the API server and connect# to it. Uncomment only if the default does not work.# - --apiserver-host=http://my-address:portvolumeMounts:- name: kubernetes-dashboard-certsmountPath: /certs# Create on-disk volume to store exec logs- mountPath: /tmpname: tmp-volumelivenessProbe:httpGet:scheme: HTTPSpath: /port: 8443initialDelaySeconds: 30timeoutSeconds: 30volumes:- name: kubernetes-dashboard-certssecret:secretName: kubernetes-dashboard-certs- name: tmp-volumeemptyDir: {}serviceAccountName: kubernetes-dashboard# Comment the following tolerations if Dashboard must not be deployed on mastertolerations:- key: node-role.kubernetes.io/mastereffect: NoSchedule
---
# ------------------- Dashboard Service ------------------- #
kind: Service
apiVersion: v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kube-system
spec:ports:- port: 443targetPort: 8443selector:k8s-app: kubernetes-dashboard

可以看到该文件创建了dashboard所需的相关资源,包括Secret、ServiceAccount、Role、RoleBinding、Deployment、Service。

其中ServiceACcount给访问pod创建了一个用户。

Secret这里创建了一个空的Secret对象,Role和RoleBinding则是kubernets的RABC鉴权机制中的两个对象,用于描述用户和资源之间的连接权限。

Deployment定义了kubernetes-dashboard的pod信息。

Service则为pod创建了一个访问的入口,由于官方采用的是kubelet proxy的方式来访问,这里不做修改,当然,也可以通过NodePort方式来进行访问dashboard。

当然,如果直接用官方提供的该文件创建dashboard,由于创建的用户kubernetes-dashboard绑定的角色为kubernetes-dashboard-minimal,由于改角色并没有访问和操作集群的权限,因此登陆dashboard的时候,会提示权限错误:“configmaps is forbidden: User "system:serviceaccount:kube-system:kubernetes-dashboard"。因此需修改RoleBinding的相关参数,绑定权限更高的角色:

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:name: kubernetes-dashboard
subjects:- kind: ServiceAccountname: kubernetes-dashboardnamespace: kube-system
roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io

4:master上通过kubernetes-dashboard.yaml文件,创建dashboard:

# kubectl create -f kubernetes-dashboard.yaml
secret "kubernetes-dashboard-certs" created
serviceaccount "kubernetes-dashboard" created
role.rbac.authorization.k8s.io "kubernetes-dashboard-minimal" created
rolebinding.rbac.authorization.k8s.io "kubernetes-dashboard-minimal" created
deployment.apps "kubernetes-dashboard" created
service "kubernetes-dashboard" created

5:稍等一会,则可以看到k8s以及创建了相关的pod和service:

# kubectl get pod --all-namespaces
# kubectl get service --all-namespaces

6:开启kubelec proxy,开放dashboard端口,以便我们可以访问ui页面。(该方法为官方推介的其中一种方法,也可以使用NodePort方式):

# kubectl proxy --address=192.168.232.130 --accept-hosts='^*$' &

配置完之后使用http://192.168.232.130:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/overview?namespace=default访问dashboard。

由于我们以及对用户做过了相应的授权和绑定,因此可以直接选择“跳过”来登陆。但该方法缺少了一些安全性,所以还是建议大家可以尽量使用token或者"用户+密码验证"的方式来登陆dashboard。

转载于:https://blog.51cto.com/icenycmh/2122309

kubernetes-dashboard部署相关推荐

  1. Kubernetes Dashboard部署

    安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题) 官方文档:https://github.com/kubernetes/dashboard 参考文章 ...

  2. Kubernetes Dashboard - 每天5分钟玩转 Docker 容器技术(173)

    前面章节 Kubernetes 所有的操作我们都是通过命令行工具 kubectl 完成的.为了提供更丰富的用户体验,Kubernetes 还开发了一个基于 Web 的 Dashboard,用户可以用 ...

  3. Web基础配置篇(十七): Kubernetes dashboard安装配置

    Web基础配置篇(十七): Kubernetes dashboard安装配置 一.概述 Kubernetes 简称为K8S,是用于自动部署,扩展和管理容器化应用程序的开源系统.Kubernetes的目 ...

  4. 有史以来最详细 安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题)

    安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题) 官方文档:https://github.com/kubernetes/dashboard 参考文章 ...

  5. [原]部署kubernetes dashboard(二)

    #######################    以下为声明  ##################### 此文档是之前做笔记在两台机上进行的实践,kubernetes处于不断开发阶段 不能保证每 ...

  6. 部署Kubernetes Dashboard 及监控组件 Heapster

    部署Dashboard 项目地址:https://github.com/kubernetes/dashboard 1.下载官方提供的 Dashboard 组件部署的 yaml 文件 wget http ...

  7. kubernetes之部署dashboard 和heapster

    部署dashboard之前,先确保traefik https方式部署成功,这样就可以通过 https 域名的方式访问dashboard,无需kube-proxy转发了.假设traefik-ingres ...

  8. 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告

    阿里云容器服务Kubernetes 已修复Dashboard漏洞CVE-2018-18264,本文介绍该漏洞的影响版本及解决方法.阿里云容器服务Kubernetes内建的Kubernetes Dash ...

  9. 搭建kubernetes DashBoard

    1.什么是kubernetes DashBoard kubernetes中完成的所有操作可以通过命令行工具kubectl完成的.其实,为了提供更丰富的用户体验,kubernetes还开发了一个基于we ...

  10. kubernetes1.8.4 安装指南 -- 11. 安装kubernetes dashboard

    接下来安装WebUI Dashboard dashboard的版本兼容性 所以接下来安装的是1.8.0版本. 参照文档https://github.com/kubernetes/dashboard/w ...

最新文章

  1. 用C++/CLI搭建C++和C#之间的桥梁(一)—— 简介
  2. 做简单的android 软件推荐,Android_适用于Android开发的简单聊天软件,适用于android 开发。是一个简 - phpStudy...
  3. GCD简介四:挂起,目标指定,信号量
  4. JPA @Lob 存储大文本 org.postgresql.util.PSQLException: 大型对象无法被使用在自动确认事物交易模式。问题...
  5. 产品迭代的节奏怎样适应需求的变化?
  6. mysql连接查询_.net core 里连接mysql查询数据的方法
  7. c java 字节流_Java 学习(23)---(IO流之字节流)
  8. Rust : codewars的up AND down 算法
  9. js操作json对象
  10. 别人的Python爬虫代码能读懂,自己却还是不能自由去爬?社群日报
  11. excel退出打印预览快捷键?
  12. iOS UIViewController跳转
  13. seLinux的管理
  14. 设置Jenkins语言为中文或英文
  15. Linux浏览器无法访问网络解决方案
  16. halide 入门实战(1)
  17. 计算机中丢失storm.d,WIN7更新错误8024200D的解决方法
  18. Java中自己实现log2(N)
  19. 从基础到进阶,一文详解RocketMQ事务消息,看完不会跪键盘
  20. 新兴技术在金融领域(反洗钱)的应用

热门文章

  1. Atitit ide的艺术 与新特性搜集大纲 目录 1. Prj mana 2 2. 界面布局自定义 2 2.1. 自定义 perspectives 2 3. 代码编写 2 3.1. 自动提示 2
  2. Atitit 微信支付 支付结果通用通知
  3. atitit.md5算法的原理 与 总结
  4. atitit.attilax.com产品 软件项目通用框架类库总结
  5. Atitit.dwr3 不能显示错误详细信息的解决方案,控件显示错误详细信息的解决方案 java .net php
  6. atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99
  7. paip.编程语言到底有没有优劣之分优秀之分
  8. paip.c#.net自定义图像窗体form
  9. paip.提升安全---网站登录密码明文传输的登录高危漏洞解决方案
  10. PPT好帮手,模版不用愁-www.officeplus.cn