前言
在 Kubernetes 社区中,有一个很受欢迎的Dashboard项目,它可以给用户提供一个可视化Web界面来查看当前集群的各种信息、应用我们的yaml文件。用户也可以用Kubernetes Dashboard监控应用的状态、执行故障排查任务以及管理Kubernetes的各种基础资源。
1.环境信息
组件 | 版本 |
---|---|
kubernetes | v1.16.3 |
dashboard | v2.0.0-beta5 |
对于其他版本的获取,以及详细的版本兼容性,你可以在dashboard官方项目中找到。
2.开始部署
1、创建证书
mkdir dashboard-certs
cd dashboard-certs/
#创建名称空间
kubectl create namespace kubernetes-dashboard
# 创建key文件
openssl genrsa -out dashboard.key 2048
#创建证书请求
openssl req -days 36000 -new -out dashboard.csr -key dashboard.key -subj '/CN=dashboard-cert'
#自签证书
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
#创建kubernetes-dashboard-certs对象,类型为generic
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard
2、下载并修改recommended.yaml文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta5/aio/deploy/recommended.yaml
#定义NodePort集群网络 便于我们直接访问
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort #增加
ports:
- port: 443
targetPort: 8443
nodePort: 30008 #增加
selector:
k8s-app: kubernetes-dashboard
---
#因为自动生成的证书很多浏览器无法使用,所以我们自己创建,注释掉kubernetes-dashboard-certs对象声明
#apiVersion: v1
#kind: Secret
#metadata:
# labels:
# k8s-app: kubernetes-dashboard
# name: kubernetes-dashboard-certs
# namespace: kubernetes-dashboard
#type: Opaque
3、安装Dashboard
#安装
kubectl apply -f ~/recommended.yaml
#检查结果
kubectl get pods -A -o wide
kubectl get service -n kubernetes-dashboard -o wide
4、创建Dashboard管理员账号dashboard-admin.yaml,并apply
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-app: kubernetes-dashboard
name: dashboard-admin
namespace: kubernetes-dashboard
5、赋权dashboard-admin-bind-cluster-role.yaml,并apply
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dashboard-admin-bind-cluster-role
labels:
k8s-app: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: dashboard-admin
namespace: kubernetes-dashboard
将dashboard-admin账号绑定至内建的集群级别的策略(cluster-admin)上
6、复制token,并登录https://192.168.0.104:30008(换成你环境的ip即可)
#查看token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')
7、此时,你应该可以看到类似下面的管理界面了: