kubernetes 1.21 部署 dashboard

https://www.cloudsavvyit.com/13967/how-to-monitor-kubernetes-with-the-official-dashboard

1. 安装

curl -k https://raw.fastgit.org/kubernetes/dashboard/master/aio/deploy/recommended.yaml -o /tmp/recommended.yaml 

sed -e 's|image: kubernetesui|image: 192.168.100.198:5000/kubernetesui|g' -i /tmp/recommended.yaml

kubectl apply -f /tmp/recommended.yaml 

curl -k https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.5.2/components.yaml -o /tmp/components.yaml

sed -e 's|image: k8s.gcr.io|image: 192.168.100.198:5000|g' -i /tmp/components.yaml

    spec:
      containers:
      - args:
        - --cert-dir=/tmp
        - --secure-port=4443
        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        - --kubelet-use-node-status-port
        - --kubelet-insecure-tls
        - --metric-resolution=15s

增加 - --kubelet-insecure-tls

kubectl apply -f /tmp/components.yaml 

# kubectl get service -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
dashboard-metrics-scraper   ClusterIP   10.101.17.245    <none>        8000/TCP   92s
kubernetes-dashboard        ClusterIP   10.111.184.225   <none>        443/TCP    92s

# kubectl get pods -n kubernetes-dashboard -o wide
NAME                                         READY   STATUS    RESTARTS   AGE     IP             NODE     NOMINATED NODE   READINESS GATES
dashboard-metrics-scraper-69f5454dfd-8bbxh   1/1     Running   0          2m14s   10.240.2.130   vm-197   <none>           <none>
kubernetes-dashboard-75d7886db6-79sms        1/1     Running   0          2m14s   10.240.36.4    vm-207   <none>           <none>
# 

2. 建立admin用户

cat > /tmp/dashboard-admin.yml << EOF
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: admin
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: admin
  namespace: kubernetes-dashboard
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin
  namespace: kubernetes-dashboard
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
EOF


# kubectl describe serviceaccount admin -n kubernetes-dashboard
Name:                admin
Namespace:           kubernetes-dashboard
Labels:              addonmanager.kubernetes.io/mode=Reconcile
                     kubernetes.io/cluster-service=true
Annotations:         <none>
Image pull secrets:  <none>
Mountable secrets:   admin-token-brljz
Tokens:              admin-token-brljz
Events:              <none>


# kubectl describe secret admin-token-brljz -n kubernetes-dashboard
Name:         admin-token-brljz
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: admin
              kubernetes.io/service-account.uid: 3f90cffe-d383-477a-8b9f-dc80c4503b13

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1066 bytes
namespace:  20 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6ImdYTlA4cVU0czkyVTlHUi1vVFFvWlg3Y2tkR3JRYkk1bEVjV3RtV3ZIQlkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi10b2tlbi1icmxqeiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjNmOTBjZmZlLWQzODMtNDc3YS04YjlmLWRjODBjNDUwM2IxMyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbiJ9.uPlUhUMDQiw8-1HKBMc0BtC9nDhcYW2BY2-pOtsIEE1VP4QJaK5Dfp9JOdDaBwgJfrRTGOo15p2JR4h_YfRnWi-bj-oX28xL9Lcu0vQKERQp4wo0KBcBUAZHzWQ_uSE0XJkQZQnLuLs6WGwwPOsfI8oIkMCvg3expHj7lbGEVUxoC4lWxoFekI9EYDRmQcew5foiQzl9quKZoAgg-GPWjzPdbP6uFJG9BTMaqflYKIxY1e_62IMa_g4MukZ1jseMH8eWmTuWpkIYNcqzdnxSEycQB6gZ6OAnKE5b7urFEWMgc2JqHKPUz2_9o0IL1ovF3R5mTSugsb7Yx9PnMI7S-Q

3. 访问

# kubectl edit service kubernetes-dashboard -n kubernetes-dashboard
type: ClusterIP -> type: LoadBalancer

# kubectl get service -n kubernetes-dashboard
NAME                        TYPE           CLUSTER-IP       EXTERNAL-IP       PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP      10.106.199.173   <none>            8000/TCP        178m
kubernetes-dashboard        LoadBalancer   10.96.83.57      192.168.100.161   443:31854/TCP   178m

https://192.168.100.161
使用token登录
原文地址:https://www.cnblogs.com/liujitao79/p/15527878.html