参考 https://github.com/kubernetes/dashboard https://kubernetes.io/zh-cn/docs/home/ https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/

部署方式比较简单, 这里只是做个记录,方便日后查阅

部署面板

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
#或者
kubectl apply -f https://www.hao.kim/soft/k8s-dashboard-recommended.yaml
kubectl apply -f https://www.hao.kim/soft/k8s-dashboard-auth.yaml

创建token

这个经常用, 因为token有有效期, 会经常需要创建新token

kubectl -n kubernetes-dashboard create token admin-user

删除面板

kubectl delete -f https://www.hao.kim/soft/recommended.yaml
kubectl delete -f https://www.hao.kim/soft/k8s-dashboard-auth.yaml

访问面板

内网访问

内网内可以直接用 clusterIP访问, 名称空间 kubernetes-dashboard 服务名 kubernetes-dashboard clusterIP 10.105.85.47 file file

你会奇怪我为什么可以访问到集群内网IP, 答案很简单, 添加路由规则

添加路由规则,访问k8s集群内pod

route -p add 10.0.0.0 mask 255.0.0.0 k8s内网IP
#windows11可能需要大写
route -p ADD 10.0.0.0 MASK 255.0.0.0 k8s内网IP

多网卡需要特别指定的情况

#看网络接口,可以核对mac地址
route print
ipconfig /all

file file 这里使用物理链路, 也就是18, 那么我可以使用下面的命令指定网络接口18 来添加路由

route -p add 10.0.0.0 mask 255.0.0.0 k8s内网IP IF 18
#windows11可能需要大写
route -p ADD 10.0.0.0 MASK 255.0.0.0 k8s内网IP IF 18

外网访问

外网访问比较简单

  1. 需要一个域名, 并进行解析到公网IP
  2. 需要一个公网地址,并开启80,443,安装ingress并配置使用80,443(根据需要修改)
  3. k8s里面配置应用路由, 可以用ingress + service 来完成访问

    注意: ingress代理面板服务, 因为面板服务是https的, 所以需要在ingress里添加注解,指定后端协议https

ingress.yaml

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: https #这里指定后端协议https
  labels:
    k8s-app: kubernetes-dashboard
    k8s.kuboard.cn/name: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ingressClassName: nginx
  rules:
    - host: 域名
      http:
        paths:
          - backend:
              service:
                name: kubernetes-dashboard
                port:
                  number: 443
            path: /
            pathType: Prefix
  tls:
    - hosts:
        - 域名
      secretName: 证书tls和key