背景提要

k3s/K8S集群部署成功了,如何对集群进行可视化管理呢?搭建kubernetes-dashboard来解决这个问题。
目前网络上流传太多个人色彩的监控解决方案,但是操作手册良莠不齐,很多时候这样的文章反而会造成用户的使用成本指数增加,本人很讨厌虎头蛇尾的文章编辑,我综合整理了比较通用的容器化集群管理方案的落地实践手册,希望可以给初入云原生领域的同学一些参考指导。

安装部署dashboard

  • 1.预检集群
kubectl get cs
kubectl get pods -A  -o wide

  • 2.获取资源
# 获取部署资源
mkdir -p /home/work/k3s-dashboard && cd /home/work/k3s-dashboard
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
# 自定义证书文件
mkdir dashboard-certs
# 管理员用户
touch dashboard-admin.yaml
# 为管理员用户赋权
touch dashboard-admin-bind-cluster-role.yaml

说明: 可以调整获取资源的版本号从而获取到不同的版本信息资源,从而进行产品升级部署。

  • 3.资源编辑
    vim recommended.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
      nodePort: 30000 #增加
  selector:
    k8s-app: kubernetes-dashboard
---
#因为自动生成的证书很多浏览器无法使用,所以我们自己创建,如果存在就注释掉kubernetes-dashboard-certs对象声明
---
  • 4.部署检查
************   创建证书   ************  
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对象
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard

# 安装kubernetes-dashboard
cd ../
kubectl create -f recommended.yaml
注: 这是因为我们在创建证书时,已经创建了kubernetes-dashboard命名空间,如果有命名空间已存在的报错,直接忽略即可。

资源检查:

  • 5.创建管理用户
# 创建dashboard-admin.yaml文件。
vim dashboard-admin.yaml

# 保存退出后执行如下命令创建管理员。
kubectl create -f ./dashboard-admin.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: dashboard-admin
  namespace: kubernetes-dashboard
# 创建dashboard-admin-bind-cluster-role.yaml文件。
vim dashboard-admin-bind-cluster-role.yaml

# 保存退出后执行如下命令为用户分配权限。
kubectl create -f ./dashboard-admin-bind-cluster-role.yaml
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
  • 6.获取登录信息
# 在命令行执行如下命令
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')

# 具体执行情况如下所示
[root@vm3290 k3s-dashboard]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')
Name:         dashboard-admin-token-65w26
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin
              kubernetes.io/service-account.uid: 7aed6a0e-3c24-475a-a50b-a70b9193788d

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     570 bytes
namespace:  20 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6InZYVjV1NHJxU3hZNk9SZmdpMWdvU01

# 可以看到,此时的Token值为:
eyJhbGciOiJSUzI1NiIsImtpZCI6InZYVjV1NHJxU3hZNk9SZmdpMWdvU01
  • 7.管理平台
    在浏览器中打开链接 https://可以访问到的集群ip:30000 ,如下所示。

扩展阅读

问题点:
网上流传了太多别人整理的文档,但是因为没有深入,所以没有吃透证书的配置,导致了,打开页面无法登录访问的窘境。
kubernetes-dashboard 的证书需要自己手动生成以后用于访问才可以,这个点很关键,最然可以通过流量代理的方案进行映射,但是毕竟是外门邪道,反而让入门的同学觉得讨厌。

treafik 如何配置带有证书的配置,我们需要深入探讨下,但是建议 kubernetes-dashboard 不要通过 ingress 对外暴露,直接通过 Ip:Port对外访问效果会比较好。

关于集群配置文件的位置:

# k8s配置文件位置
/etc/kubernetes/admin.conf

# k3s配置文件位置
/etc/rancher/k3s.k3s.yaml

# 改变配置文件的服务器地址
如果不是集群主机访问集群,就需要修改配置文件的server字段,只需将server的IP改成master的主机IP即可
Logo

开源、云原生的融合云平台

更多推荐