K8s 安装 dashboard 图形化界面
Dashboard 主页:https://github.com/kubernetes/dashboard
使用 helm 安装 dashboard 可安装最新版(需网络可以访问国际互联网)。由于 dashboard 非必须,本案例安装 2.7.0,使用 Manifest-based 方式安装。

Manifest-based 方式安装(默认国内环境,无法访问国际互联网)
下载 Kubernetes Dashboard 2.7.0 配置文件(CP 节点执行)
# 使用浏览器访问如下地址:
# https://github.com/kubernetes/dashboard/blob/v2.7.0/aio/deploy/recommended.yaml
# 复制出 recommended.yaml 的内容,并在服务器上创建 recommended.yaml,粘贴相关内容
# 过滤出镜像地址
grep "image:" recommended.yaml
image: kubernetesui/dashboard:v2.7.0
image: kubernetesui/metrics-scraper:v1.0.8导入所需镜像(所有 Worker 节点执行)
# 通过其他方式拉取镜像 tar 包并上传至服务器
# 使用 Containerd 导入镜像
# 查看 namespace
ctr namespace ls
# 根据查到的 namespace 导入镜像
ctr -n k8s.io images import dashboard.tar
ctr -n k8s.io images import metrics-scraper.tar执行安装命令
kubectl apply -f recommended.yaml
# 查看是否创建成功
kubectl get all -n kubernetes-dashboard创建管理员用户
cat > dashboard-adminuser.yaml << EOF
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
EOF
kubectl apply -f dashboard-adminuser.yaml
修改 service 以方便访问
# 查看 service
kubectl get svc -n kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.98.100.205 <none> 8000/TCP 64m
kubernetes-dashboard ClusterIP 10.99.209.74 <none> 443/TCP 64m
# 若上述查询结果中 kubernetes-dashboard 的 TYPE 为 ClusterIP
# 则需修改为 NodePort ,以方便访问
# 导出 kubernetes-dashboard service 配置
kubectl get svc kubernetes-dashboard -n kubernetes-dashboard -o yaml > kubernetes-dashboard-svc.yaml
# 修改导出的配置
vim kubernetes-dashboard-svc.yaml
spec:
ports:
- port: 443
protocol: TCP
targetPort: 8443
nodePort: 32443 # 添加此项配置
type: NodePort # 修改此项配置的 ClusterIP 为 NodePort
# 应用配置
kubectl apply -f kubernetes-dashboard-svc.yaml
# 查看修改结果,若 TYPE 为 NodePort 则代表修改成功
kubectl get svc kubernetes-dashboard -n kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard NodePort 10.99.209.74 <none> 443:32443/TCP 76m
创建 Token 用于访问 web
kubectl create token admin-user -n kubernetes-dashboard访问 web 页面
# 使用浏览器访问 32443 端口,使用上一步创建的 Token
https://192.168.1.25:32443Helm 方式安装(需访问国际互联网)
安装 helm
# https://github.com/helm/helm/releases
# Download your desired version
# Unpack it
tar -zxvf helm-v3.15.3-linux-amd64.tar.gz
# Find the helm binary in the unpacked directory, and move it to its desired destination
mv linux-amd64/helm /usr/local/bin/helmhelm 安装 dashboard
# Add kubernetes-dashboard repository
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
# Deploy a Helm Release named "kubernetes-dashboard" using the kubernetes-dashboard chart
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard \
--create-namespace --namespace kubernetes-dashboard映射服务用于访问(原命令见下方备注)
nohup kubectl -n kubernetes-dashboard port-forward \
--address 192.168.1.16 \
svc/kubernetes-dashboard-kong-proxy 8443:443 &
# 执行完映射命令后,可以使用浏览器访问192.168.1.16的8443端口直接访问dashboard的web创建管理员用户
cat > dashboard-adminuser.yaml << EOF
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
EOF
kubectl apply -f dashboard-adminuser.yaml
创建 Token 用于访问 web
kubectl create token admin-user -n kubernetes-dashboard访问 web 页面
# 使用浏览器访问 8443 端口,使用上一步创建的 Token
https://192.168.1.16:8443备注
映射原始命令
kubectl -n kubernetes-dashboard port-forward \
svc/kubernetes-dashboard-kong-proxy 8443:443这条命令用于在本地和 Kubernetes 集群中的 kubernetes-dashboard-kong-proxy 服务之间建立端口转发,具体含义如下:
kubectl: Kubernetes 命令行工具,用于管理集群。-n kubernetes-dashboard: 指定命名空间为kubernetes-dashboard,操作将在该命名空间内进行。port-forward: 用于在本地和集群中的服务或 Pod 之间建立端口转发。svc/kubernetes-dashboard-kong-proxy: 指定要转发端口的服务,svc表示服务,kubernetes-dashboard-kong-proxy是服务名称。8443:443: 将本地的 8443 端口转发到服务的 443 端口。443 是服务端口,8443 是本地端口。
总结
该命令将本地的 8443 端口与 kubernetes-dashboard 命名空间中的 kubernetes-dashboard-kong-proxy 服务的 443 端口连接起来。执行后,可以通过 https://localhost:8443 访问 Kubernetes Dashboard。
注意事项
确保
kubectl已配置正确的集群上下文。命令执行期间,端口转发保持活动,终止命令会停止转发。
要将 kubectl port-forward 的访问从 localhost 改为使用局域网 IP 访问,需要在命令中明确指定本地监听的 IP 地址。默认情况下,kubectl port-forward 只监听 localhost(即 127.0.0.1),但可以通过 --address 参数指定监听的 IP 地址。
Last updated