kubernetes部署dashboard可视化插件

本文详细介绍Kubernetes Dashboard的部署、配置及使用方法,包括通过Token认证、Ingress暴露服务及使用可信SSL证书。同时,演示了如何创建示例Deployment并对外暴露服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Dashboard简介

在 Kubernetes 社区中,有一个很受欢迎的 Dashboard 项目,它可以给用户提供一个可视化的 Web 界面来查看当前集群的各种信息。用户可以用 Kubernetes Dashboard 部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源。
在这里插入图片描述

部署Dashboard

官方文档:
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/

项目地址:
https://github.com/kubernetes/dashboard

helm 地址:
https://artifacthub.io/packages/helm/k8s-dashboard/kubernetes-dashboard
https://github.com/kubernetes/dashboard/tree/master/aio/deploy/helm-chart/kubernetes-dashboard

注意确认dashboard版本与kubernetes版本兼容性:
https://github.com/kubernetes/dashboard/releases

添加helm repo

helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/

安装dashboard

helm install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard \
  --namespace kubernetes-dashboard \
  --create-namespace \
  --set replicaCount=2 \
  --set service.type=NodePort \
  --set service.nodePort=30080 \
  --set resources.limits.cpu=200m

查看dashboard运行状态,以deployment方式部署,运行2副本pod及1个service:

[root@iZj6cc0krt5qucp7c4truyZ ~]# kubectl -n kubernetes-dashboard get pods
NAME                                    READY   STATUS    RESTARTS   AGE
kubernetes-dashboard-796f4764c9-b55bb   1/1     Running   0          9m51s
kubernetes-dashboard-796f4764c9-b7qwj   1/1     Running   0          31s

[root@iZj6cc0krt5qucp7c4truyZ ~]# kubectl -n kubernetes-dashboard get svc
NAME                   TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)         AGE
kubernetes-dashboard   NodePort   10.233.22.92   <none>        443:30080/TCP   9m58s

Dashboard 支持 Kubeconfig 和 Token 两种认证方式,这里选择Token认证方式登录,默认serviceaccount只有读权限,这里创建admin用户。

官方参考文档:https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/README.md

创建dashboard-admin.yaml:

cat > dashboard-admin.yaml << EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard
EOF

创建登录用户

kubectl apply -f dashboard-admin.yaml

查看admin-user账户的token

kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/kubernetes-dashboard -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

登陆dashboard,由于使用nodeport方式暴露服务,访问方式为https://任意节点IP+NodePort:

https://36.134.133.238:30080/

把获取到的Token复制到登录界面的Token输入框中:
在这里插入图片描述
成功登陆dashboard:
在这里插入图片描述
删除dashboard

helm -n kubernetes-dashboard uninstall kubernetes-dashboard

配置ingress及可信SSL证书

以上方式默认使用nodeport暴露服务,证书也为自签名证书,下面使用ingress暴露dashboard服务并使用可信SSL证书。

前提条件:

  • 集群已部署ingress控制器,本次使用ingress-nginx-controller
  • 公网可用域名,本次使用阿里云自有域名dashboard.apps.cloudcele.com
  • 公网SSL可信证书,本次使用acme.sh生成免费证书,有效期三个月,默认自动续期

证书申请:

# 安装acme.sh
curl https://get.acme.sh | sh -s email=willzhmic@outlook.com

#由于使用阿里云域名,可直接使用accessKEY调用阿里云API自动为域名签发证书
export Ali_Key="xxxxxx"
export Ali_Secret="xxxxxx"

# 注意申请的是泛域名证书,任何匹配 * 的域名都可使用该证书
acme.sh --issue --dns dns_ali -d apps.cloudcele.com -d *.apps.cloudcele.com

查看本地生成的证书

[root@localhost ~]# ll /root/.acme.sh/apps.cloudcele.com/
total 36
-rw-r--r-- 1 root root 2329 Sep  3 17:15 apps.cloudcele.com.cer
-rw-r--r-- 1 root root  591 Sep  3 17:15 apps.cloudcele.com.conf
-rw-r--r-- 1 root root  997 Sep  3 17:14 apps.cloudcele.com.csr
-rw-r--r-- 1 root root  178 Sep  3 17:14 apps.cloudcele.com.csr.conf
-rw-r--r-- 1 root root 1679 Sep  3 17:08 apps.cloudcele.com.key
-rw-r--r-- 1 root root 4399 Sep  3 17:15 ca.cer
-rw-r--r-- 1 root root 6728 Sep  3 17:15 fullchain.cer

在集群中创建secrets以引用证书,仅用到fullchain.cer证书和apps.cloudcele.com.key密钥两个文件:

cd /root/.acme.sh/apps.cloudcele.com/

kubectl -n kubernetes-dashboard create secret tls kubernetes-dashboard-tls \
  --key ./apps.cloudcele.com.key \
  --cert ./fullchain.cer

使用helm部署dashboard

helm install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard \
  --namespace kubernetes-dashboard \
  --create-namespace \
  --version 2.0.3 \
  --set replicaCount=2 \
  --set service.type=ClusterIP \
  --set resources.limits.cpu=200m \
  --set ingress.enabled=true \
  --set ingress.path=/ \
  --set ingress.hosts[0]=dashboard.apps.cloudcele.com \
  --set ingress.tls[0].hosts[0]=dashboard.apps.cloudcele.com \
  --set ingress.tls[0].secretName=kubernetes-dashboard-tls

浏览器访问验证:
在这里插入图片描述

使用dashboard

创建示例deployment,使用nodeport向集群外暴露服务。

yaml编写参考:
https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/
https://kubernetes.io/docs/concepts/services-networking/service/#nodeport

默认视图在default命名空间,可自行切换namespace,点击右上角+号创建资源:
在这里插入图片描述

有三种方式创建资源,这里使用第一种方式部署一个简单的nginx-app,设置2个副本,nodePort方式暴露服务,粘贴已经编写好的yaml文件点击upload:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx-app
spec:
  selector:
    matchLabels:
      run: my-nginx-app
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx-app
    spec:
      containers:
      - name: my-nginx-app
        image: nginx
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: my-nginx-app
  labels:
    run: my-nginx-app
spec:
  type: NodePort
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
    nodePort: 30081
  selector:
    run: my-nginx-app

集群外浏览器访问应用:http://<node_ip>:30081

点击deployment可以增加应用副本,查看和更新yaml配置,以及删除整个应用:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ioHhjwa3-1587185677957)(../images/screenshot_1587184542589.png)]
点击pod可以查看pod实时打印日志以及下载日志到本地,也可以登录到pod命令行界面,进入容器执行命令进行调试,以及更新pod yaml文件或删除pod(重启):
在这里插入图片描述

### Kubernetes Dashboard 可视化使用指南 Kubernetes DashboardKubernetes 的官方 Web 用户界面 (UI),用于管理和监控 Kubernetes 集群的状态以及执行常见操作。以下是关于其安装、配置和使用的详细介绍。 #### 一、安装 Kubernetes Dashboard 为了在 Kubernetes 集群中启用可视化管理,需先完成 Kubernetes Dashboard 的安装过程: 1. **验证集群状态** 在开始之前,确认 Kubernetes 集群运行正常。可以通过以下命令检查节点和服务的状态: ```bash kubectl get cs kubectl get pods -A -o wide ``` 这些命令可以帮助识别潜在的错误或异常情况[^2]。 2. **应用 YAML 文件** 下载并应用 Kubernetes Dashboard 的官方 YAML 文件以启动相关资源对象: ```bash kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml ``` 3. **调整 Service 类型** 默认情况下,Dashboard 使用 `ClusterIP` 提供服务。如果需要外部访问,则应将其更改为 `NodePort` 或 `LoadBalancer`: 编辑 service 对象: ```bash kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard ``` 将 `.spec.type` 字段设置为 `NodePort` 并保存更改[^3]。 --- #### 二、访问 Kubernetes Dashboard 有多种方式可以安全地连接至 Kubernetes Dashboard 实例: 1. **通过 Token 登录** 创建一个具有适当权限的角色绑定以便生成有效的认证 token: ```yaml 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: User name: admin apiGroup: rbac.authorization.k8s.io ``` 应用上述 RBAC 设置后,提取对应的 token 值: ```bash kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}') ``` 复制返回的结果作为登录凭证输入到界面上。 2. **利用 Kubeconfig 文件** 如果已存在管理员身份的 kubeconfig 文件,可以直接导入该文件实现无缝接入。具体步骤如下: - 准备包含必要字段(如证书数据)的 kubeconfig; - 导航至登录页面选择 “Upload kubeconfig file” 方法提交即可。 --- #### 三、高级功能与扩展 除了基础的操作外,还可以借助其他工具增强 Kubernetes Dashboard 的能力: - **集成 Prometheus 和 Grafana** 结合这两个强大的开源软件可进一步提升性能分析水平。例如,按照文档说明克隆 grafana-dashboards-kubernetes 存储库,并部署 Helm 图表来简化流程[^4]。 - **尝试第三方插件** 如 DevOpsProdigy 开发的 Kubegraf 插件支持更加丰富的图形展示选项,适合特定场景下的需求定制[^5]。 --- ### 总结 以上内容涵盖了从初始准备到最后实际运用整个生命周期内的要点提示。遵循此路径能够顺利建立起一套稳定可靠的 Kubernetes 集群管理系统。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

willops

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值