目标
上面安装完k8s集群,但是没有图形界面,此处安装一个Dashboard图形界面
过程
1、安装dashboard
#直接下载部署
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.0/aio/deploy/recommended.yaml
部署验证,确认以下服务正常启动
[root@node-1 ~]# kubectl get pods -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-856586f554-z9hdj 1/1 Running 0 53m
kubernetes-dashboard-67484c44f6-gtqqn 1/1 Running 0 24m
编辑配置文件内容,将type从ClusterIP改为NodePort即可
kubectl edit service kubernetes-dashboard -n kubernetes-dashboard
获取dashboard的访问端口号,即443对应的端口号,用于前台访问页面的端口号
kubectl get service kubernetes-dashboard -n kubernetes-dashboard
创建用户文件,文件内容如下,文件名为dashboard-adminuser.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
应用文件创建用户
kubectl apply -f dashboard-adminuser.yaml
获取token,用于前台页面访问验证。
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
在windows宿主机中打开浏览器,访问地址是pod所在的宿主机IP+上面获取dashboard的访问端口号。
正常可以打开dashboard的验证页面,输入token则可进入管理页面。 登录页面如下:
管理页面:
本人在其中一直浏览器拦截提示不能访问,提示证书问题不能访问,其中解决办法如下:
下面是生成 Kubernetes Dashboard 域名证书的几种常用方法,你可以根据自身实际情况选用任何一种就行。
1.通过 https://freessl.cn 网站,在线生成免费 1 年的证书
2.通过 Let’s Encrypt 生成 90 天免费证书
3.通过 Cert-Manager 服务来生成和管理证书
4.通过IP 直接自签一个证书
以下选择第四种方法,自建一个证书。
申请一个证书秘钥
openssl genrsa -out dashboard.key 2048
根据秘钥,创建一个证书,其中IP填写pod所在宿主机IP
openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=192.168.254.130'
签发证书
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
删除原有secret
kubectl delete secret kubernetes-dashboard-certs -n kube-system
使用新秘钥证书,重新生成一个认证secret
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kube-system
最后重启的pod,服务可正常访问。
注意:最新版本谷歌,IE都不支持自建证书,本次验证火狐V122版本可以用。
dashboard授权
登录后发现页面中什么资源也看不到,需要授权
1、创建一个名称为kubernetes-dashboard的用户
#创建用户
kubectl create serviceaccount kubernetes-dashboard
#查看创建的用户
kubectl get sa
#查看用户秘钥信息
kubectl get secret
#生成访问token
kubectl get secret 秘钥信息的name字段 -o jsonpath={.data.token} | base64 -d
2、编写授权文件直接给账号授予admin权限,文件名:kubernetes-dashboard.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: anonymous-cluster-admin
subjects:
- kind: User
name: kubernetes-dashboard
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
3、执行授权命令
kubectl apply -f kubernetes-dashboard.yaml
刷新页面即可看到所有信息了。