在 Debian 上安装 Kubernetes Dashboard 的完整步骤
一 前置条件
kubectl get nodes。kubectl cluster-info。二 安装方式
方式 A 推荐 Helm 安装(版本新、升级方便)
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bashhelm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard \
--create-namespace --namespace kubernetes-dashboard
kubectl -n kubernetes-dashboard get pods,svc方式 B 使用官方清单安装(稳定、无需 Helm)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
kubectl -n kubernetes-dashboard get pods,svc三 创建管理员并获取令牌
cat <<'EOF' | kubectl apply -f -
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 -n kubernetes-dashboard create token admin-user
cat <<'EOF' | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
name: admin-user-permanent-token
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: admin-user
type: kubernetes.io/service-account-token
EOF
kubectl patch serviceaccount admin-user -n kubernetes-dashboard \
-p '{"secrets": [{"name": "admin-user-permanent-token"}]}'
kubectl get secret admin-user-permanent-token -n kubernetes-dashboard \
-o jsonpath="{.data.token}" | base64 --decode
提示:生产环境不建议长期使用 cluster-admin,可按需收敛权限。四 访问方式
本地端口转发(仅本机访问):
kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-proxy 8443:443
浏览器访问:https://localhost:8443(首次会提示证书不受信任,属于自签名,测试环境可继续)。
NodePort 暴露(内网/公网访问):
kubectl patch svc kubernetes-dashboard-kong-proxy \
-n kubernetes-dashboard -p '{"spec":{"type":"NodePort"}}'
kubectl -n kubernetes-dashboard get svc kubernetes-dashboard-kong-proxy
访问地址:https://<任意节点IP>:Ingress 暴露(域名 + HTTPS,生产推荐):
cat <<'EOF' | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dashboard-ingress
namespace: kubernetes-dashboard
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
ingressClassName: nginx
rules:
- host: web.dashboard.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kubernetes-dashboard
port:
number: 443
tls:
- hosts:
- web.dashboard.com
EOF
五 常见问题与排查
docker pull 并推送到私有仓库后修改镜像地址。