容器编排引擎Kubernetes 06——部署Dashboard

223 阅读3分钟

1 dashboard介绍

dashboard是K8S的可视化界面,通过前端界面对K8S集群进行管理。

可在如下页面,查询K8S与dashboard版本兼容性: github.com/kubernetes/…

因为前边K8S安装的是V1.23版本,所以这里需要选择能与V1.23的K8S兼容的dashboard版本。从页面上可以找到能兼容的dashboard最新的版本为V2.5.1。

image.png

2 下载配置文件

进入到master服务器,下载dashboard对应版本的 recommended.yaml 文件到 /usr/local/ 目录下。yaml文件的链接在版本下已经提供。

image.png

为了稳妥起见,可以把文件下载和执行指令分开来做。

cd /usr/local/
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml

因为github是外网,在服务器中可能访问不到,需要先在 /etc/hosts 里配置域名和IP地址的映射关系,可以在 www.ipaddress.com/ 网站通过域名raw.githubusercontent.com查询到该网址的IP,为:

image.png

任选一个添加到hosts中,如将185.199.108.133 raw.githubusercontent.com添加到hosts文件,如果下载失败,可以将IP用其余几个进行替换。

当hosts配置生效后,文件即可以正常下载。

image.png

3 生效yaml文件,创建POD

进入到 recommended.yaml 文件所在目录,执行如下指令

kubectl apply -f recommended.yaml

image.png

查看容器下载状态,经过一段时间等待后,所有状态都是running。

4 查看POD及服务

4.1 查看命名空间下所有POD

查看 kubernetes-dashboard 这个命名空间下的所有pod

kubectl get pods -n kubernetes-dashboard

image.png

4.2 查看命名空间下所有服务

查看 kubernetes-dashboard 命名空间下的所有服务

kubectl get svc -n kubernetes-dashboard

image.png

在上图中 TYPE 显示为 ClusterIP,即从集群内部访问的地址,集群外部通过该IP是无法访问的,即使用浏览器不能访问到。因此需要修改 TYPE 类型为 NodePort,才能供外部查看。

5 修改dashboard服务

5.1 删除服务

在修改dashboard服务时,需要先删除原来的服务。删除服务时,需要指定命名空间。

kubectl delete service kubernetes-dashboard --namespace=kubernetes-dashboard

image.png

5.2 创建服务

首先,创建新的服务配置文件 dashboard-svc.yaml

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard

生效ymal文件,创建新服务

kubectl apply -f dashboard-svc.yaml

再次查看服务状态

kubectl get svc -n kubernetes-dashboard

image.png

服务的 TYPE 已经修改为了 NodePort 类型,同时 PORT 列增加了外部访问时的端口 31681。

6 创建管理员角色

6.1 创建配置

创建配置文件, dashboard-svc-account.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: dashboard-admin
  namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: dashboard-admin
subjects:
  - kind: ServiceAccount
    name: dashboard-admin
    namespace: kube-system
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io

生效yaml文件

kubectl apply -f dashboard-svc-account.yaml

6.2 获取token

通过以下指令生成原始token信息

kubectl get secret -n kube-system | grep admin | awk '{print $1}'

image.png

6.3 获取加密token

根据上一步生成原始token信息后,将其 (dashboard-admin-token-jsczr)填入下边的指令

kubectl describe secret dashboard-admin-token-jsczr -n kube-system | grep '^token' | awk '{print $2}'

指令执行后,生成可在浏览器访问k8s的加密token信息。

image.png

将其记录下来,方便以后每次访问K8S时在 dashboard 登录页面上输入:

eyJhbGciOiJSUzI1NiIsImtpZCI6IjJsa21HcWpQR0dDaGxGX0hJaEhvQUdxYXFFNnFJZVZmN2V2TEs1Vi1MYkUifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tanNjenIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZTAxMWYyYjMtMDk5Zi00NDIyLThhMDktNDE4OTZhN2QxNDllIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.K0RuNcUqNUrdztRQqyqcWrdBOi16plL_zOUe4dwKH2PTQMBKAsz9UwxYmjvPEX57-jHQCGF6BIidZkinYCVWHEOjFm9BnYqR-E0KvTUUec44zKcvixV_UU7ISjJ5rDIp_u6FFbQVVMH2DleYC1xH_fVGWrPHXsghhaoa7-6pQh7pETcewTU5WS9tFDFcJkv9AMjhdxCdgiNWuujeT37XI5niB8ygpyJXtL8p1DCGm_PMxHvJeBKBpnQes4HZNaaktXv90UCWyOkbKt6TJoVMastLMrVVTBtPDIIoksYayYjkx9A6vkp8gvfNthVCMXRR0zSiGaQ1vPFi1mVJLAdzEw

7 登录dashboard

在浏览器中访问dashboard:输入master服务器的IP及dashboard服务对外提供的端口,即: 192.168.137.3:31681

协议默认使用的是https,如果直接输入上边的url会出现如下提示 image.png

修改为https后,页面如下

image.png

选择token,并将上面生成的加密token信息复制进去,点击登录,即可进入到K8S管理界面。

image.png

大功告成!