篇三:Kubernetes部署web面板dashboard
dashboard
组件为我们提供了一个WebUI,使得K8S集群的管理更加的方便和直观。
在篇一和篇二分别介绍了如果搭建Kubernetes
集群和部署metrics-server
指标数据监控组件,本篇介绍如何在Kubernetes集群中部署dashboard
组件。
dashboard
yaml部署文件位于github仓库 这里 或 这里。同样的,作为K8S插件部署与K8S集群中。
下载yaml部署文件
wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/dashboard/dashboard.yaml
设置登录过期时间
默认情况下在dashboard
界面空闲几分钟没有操作就自动登出了,我们可以通过修改启动参数来修改这个自动登出时长。
修改dashboard.yaml
,添加启动参数--token-ttl=86400
,即无操作24小时后自动登出
args:
- --auto-generate-certificates
- --namespace=kubernetes-dashboard
- --token-ttl=86400
使用NodePort暴露端口
默认情况下,Service使用了ClusterIP暴露端口,使得集群外无法直接访问dashboard
,需要使用Ingress暴露访问地址,这样一来会比较麻烦,但是生产环境还是建议使用Ingress
来暴露访问地址。
修改yaml,将dashboard
的Service类型改为NodePort,并且暴露宿主机32443端口
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort # 添加这行
ports:
- port: 443
targetPort: 8443
nodePort: 32443 # 添加这行
selector:
k8s-app: kubernetes-dashboard
应用yaml清单
如果你的Kubenetes版本在1.18或以及版本,还需要修改以下yaml清单文件
# 删除
securityContext:
seccompProfile:
type: RuntimeDefault
# 往Deployment.spec加入
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
kubectl apply -f dashboard.yaml
登录验证
dashboard登录界面.png
dashboard提供了两种登录方式:Token 或 Kubeconfig,下面介绍如何获取Token和配置Kubeconfig
Token
创建Service Account
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard EOF
创建ClusterRoleBinding
cat <<EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - name: admin-user namespace: kubernetes-dashboard kind: ServiceAccount EOF
获取Token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
Kubeconfig
- 拷贝.kube/config
- 修改config,在文件末尾加入
token: TOKEN
# 前面省略
users:
- name: kubernetes-admin
user:
client-certificate-data: LS...Qo=
client-key-data: LS...Qo=
token: ey...OQ # 添加这一行,值是上面获取到的Token内容
登录后的界面,愉快玩耍吧!
![dashboard-1.png][2]
[1]: https://www.haxi.cc/usr/uploads/2020/10/2634200065.png