目标

上面安装完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

刷新页面即可看到所有信息了。