kubernetes-dashboard部署
背景
前面介绍了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部署相关推荐
- Kubernetes Dashboard部署
安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题) 官方文档:https://github.com/kubernetes/dashboard 参考文章 ...
- Kubernetes Dashboard - 每天5分钟玩转 Docker 容器技术(173)
前面章节 Kubernetes 所有的操作我们都是通过命令行工具 kubectl 完成的.为了提供更丰富的用户体验,Kubernetes 还开发了一个基于 Web 的 Dashboard,用户可以用 ...
- Web基础配置篇(十七): Kubernetes dashboard安装配置
Web基础配置篇(十七): Kubernetes dashboard安装配置 一.概述 Kubernetes 简称为K8S,是用于自动部署,扩展和管理容器化应用程序的开源系统.Kubernetes的目 ...
- 有史以来最详细 安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题)
安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题) 官方文档:https://github.com/kubernetes/dashboard 参考文章 ...
- [原]部署kubernetes dashboard(二)
####################### 以下为声明 ##################### 此文档是之前做笔记在两台机上进行的实践,kubernetes处于不断开发阶段 不能保证每 ...
- 部署Kubernetes Dashboard 及监控组件 Heapster
部署Dashboard 项目地址:https://github.com/kubernetes/dashboard 1.下载官方提供的 Dashboard 组件部署的 yaml 文件 wget http ...
- kubernetes之部署dashboard 和heapster
部署dashboard之前,先确保traefik https方式部署成功,这样就可以通过 https 域名的方式访问dashboard,无需kube-proxy转发了.假设traefik-ingres ...
- 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
阿里云容器服务Kubernetes 已修复Dashboard漏洞CVE-2018-18264,本文介绍该漏洞的影响版本及解决方法.阿里云容器服务Kubernetes内建的Kubernetes Dash ...
- 搭建kubernetes DashBoard
1.什么是kubernetes DashBoard kubernetes中完成的所有操作可以通过命令行工具kubectl完成的.其实,为了提供更丰富的用户体验,kubernetes还开发了一个基于we ...
- kubernetes1.8.4 安装指南 -- 11. 安装kubernetes dashboard
接下来安装WebUI Dashboard dashboard的版本兼容性 所以接下来安装的是1.8.0版本. 参照文档https://github.com/kubernetes/dashboard/w ...
最新文章
- 用C++/CLI搭建C++和C#之间的桥梁(一)—— 简介
- 做简单的android 软件推荐,Android_适用于Android开发的简单聊天软件,适用于android 开发。是一个简 - phpStudy...
- GCD简介四:挂起,目标指定,信号量
- JPA @Lob 存储大文本 org.postgresql.util.PSQLException: 大型对象无法被使用在自动确认事物交易模式。问题...
- 产品迭代的节奏怎样适应需求的变化?
- mysql连接查询_.net core 里连接mysql查询数据的方法
- c java 字节流_Java 学习(23)---(IO流之字节流)
- Rust : codewars的up AND down 算法
- js操作json对象
- 别人的Python爬虫代码能读懂,自己却还是不能自由去爬?社群日报
- excel退出打印预览快捷键?
- iOS UIViewController跳转
- seLinux的管理
- 设置Jenkins语言为中文或英文
- Linux浏览器无法访问网络解决方案
- halide 入门实战(1)
- 计算机中丢失storm.d,WIN7更新错误8024200D的解决方法
- Java中自己实现log2(N)
- 从基础到进阶,一文详解RocketMQ事务消息,看完不会跪键盘
- 新兴技术在金融领域(反洗钱)的应用
热门文章
- Atitit ide的艺术 与新特性搜集大纲 目录 1. Prj mana	2 2. 界面布局自定义	2 2.1. 自定义 perspectives	2 3. 代码编写	2 3.1. 自动提示	2
- Atitit 微信支付 支付结果通用通知
- atitit.md5算法的原理 与 总结
- atitit.attilax.com产品 软件项目通用框架类库总结
- Atitit.dwr3 不能显示错误详细信息的解决方案,控件显示错误详细信息的解决方案 java .net php
- atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99
- paip.编程语言到底有没有优劣之分优秀之分
- paip.c#.net自定义图像窗体form
- paip.提升安全---网站登录密码明文传输的登录高危漏洞解决方案
- PPT好帮手,模版不用愁-www.officeplus.cn