K8s integrierte visuelle Kubernetes-Dashboard-Schnittstelle

Ändern Sie zunächst die Konfiguration des Masters

# Der Masterknoten führt
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml aus

# 删除pod
kubectl delete Bereitstellung kubernetes-dashboard --namespace=kubernetes-dashboard
kubectl löschen Bereitstellung Dashboard-metrics-scraper --namespace=kubernetes-dashboard

# Legen Sie die Ausführung des Zugriffs-Ports für den Master-Knoten fest. #
Typ: ClusterIP Ändern Sie den Typ: NodePort. Suchen / Typ
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

#Zugriffsport festlegen
# Mein Port hier ist 443:30519/TCP, also 30519
kubectl get svc -A |grep kubernetes-dashboard

 Schreiben Sie dann vi Dashboard.yaml

# Copyright 2017 Die Kubernetes-Autoren.
#
# Lizenziert unter der Apache-Lizenz, Version 2.0 (die „Lizenz“);
# Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden.
# Eine Kopie der Lizenz erhalten Sie unter
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Sofern nicht gesetzlich vorgeschrieben oder schriftlich vereinbart,
wird die im Rahmen der Lizenz # vertriebene Software auf einem verteilt „WIE BESEHEN“ BASIS,
# OHNE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend.
# Die spezifische Sprache, die die Berechtigungen und
# Einschränkungen im Rahmen der Lizenz regelt, finden Sie in der Lizenz.

apiVersion: v1
Art: Namespace-
Metadaten:
  Name: kubernetes-dashboard

---

apiVersion: v1
Art: ServiceAccount-
Metadaten:
  Labels:
    k8s-app: kubernetes-dashboard
  Name: kubernetes-dashboard
  Namespace: kubernetes-dashboard

---

Art: Service
apiVersion: v1
Metadaten:
  Labels:
    k8s-app: kubernetes-dashboard
  Name: kubernetes-dashboard
  Namespace: kubernetes-dashboard
Spezifikation:
  Ports:
    - Port: 443
      ZielPort: 8443
  Selektor:
    k8s-app: kubernetes-dashboard

---

apiVersion: v1
Art: Geheime
Metadaten:
  Labels:
    k8s-app: kubernetes-dashboard
  Name: kubernetes-dashboard-certs
  Namespace: kubernetes-dashboard
Typ: Undurchsichtig

---

apiVersion: v1
Art: Geheime
Metadaten:
  Labels:
    k8s-app: kubernetes-dashboard
  Name: kubernetes-dashboard-csrf
  Namespace: kubernetes-dashboard
Typ: Undurchsichtige
Daten:
  csrf: „“

---

apiVersion: v1
Art: Geheime
Metadaten:
  Labels:
    k8s-app: kubernetes-dashboard
  Name: kubernetes-dashboard-key-holder
  Namespace: kubernetes-dashboard
Typ: Undurchsichtig

---

Art: ConfigMap
apiVersion: v1
Metadaten:
  Labels:
    k8s-app: kubernetes-dashboard
  Name: kubernetes-dashboard-settings
  Namespace: kubernetes-dashboard

---

Art: Rolle
apiVersion: rbac.authorization.k8s.io/v1
Metadaten:
  Labels:
    k8s-app: kubernetes-dashboard
  Name: kubernetes-dashboard
  Namespace: kubernetes-dashboard
Regeln:
  # Dem Dashboard erlauben, exklusive Dashboard-Geheimnisse abzurufen, zu aktualisieren und zu löschen.
  - apiGroups: [""]
    Ressourcen: ["Geheimnisse"]
    Ressourcennamen: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"] Verben: ["get"
    , „update“, „delete“]
    # Dashboard erlauben, die Konfigurationszuordnung „kubernetes-dashboard-settings“ abzurufen und zu aktualisieren.
  - apiGroups: [""]
    Ressourcen:

    Verben: ["get", "update"]
    # Dem Dashboard erlauben, Metriken abzurufen.
  - apiGroups: [""]
    Ressourcen: ["services"]
    Ressourcennamen: ["heapster", "dashboard-metrics-scraper"]
    Verben: ["proxy"]
  - apiGroups: [""]
    Ressourcen: ["services/proxy "]
    Ressourcennamen: ["heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"] Verben: ["get"
    ]

---

Art: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
Metadaten:
  Labels:
    k8s-app: kubernetes-dashboard
  Name: kubernetes-dashboard
Regeln:
  # Erlaube Metrics Scraper, Metriken vom Metrics-Server abzurufen
  – apiGroups: ["metrics. k8s.io“]
    Ressourcen: [„pods“, „nodes“]
    Verben: [„get“, „list“, „watch“]

---

apiVersion: rbac.authorization.k8s.io/v1
Art: RoleBinding-
Metadaten:
  Labels:
    k8s-app: kubernetes-dashboard
  Name: kubernetes-dashboard
  Namespace: kubernetes-dashboard
RoleRef:
  apiGroup: rbac.authorization.k8s.io
  Art:
  Rollenname : kubernetes-dashboard
Betreff:
  - Art: ServiceAccount
    -Name: kubernetes-dashboard
    Namespace: kubernetes-dashboard

---

apiVersion: rbac.authorization.k8s.io/v1
Art: ClusterRoleBinding
-Metadaten:
  Name: kubernetes-dashboard
RoleRef:
  apiGroup: rbac.authorization.k8s.io
  Art: ClusterRole
  Name: kubernetes-dashboard
Betreff:
  - Art: ServiceAccount-
    Name: kubernetes- Dashboard-
    Namespace: kubernetes-dashboard

---

Art: Bereitstellung
apiVersion: apps/v1
Metadaten:
  Labels:
    k8s-app: kubernetes-dashboard
  Name: kubernetes-dashboard
  Namespace: kubernetes-dashboard
spec:
  Replikate: 1
  revisionHistoryLimit: 10
  Selektor:
    matchLabels:
      k8s-app: kubernetes-dashboard
  Vorlage:
    Metadaten:
      Labels:
        k8s-app: kubernetes-dashboard
    spec:
      nodeName: k8s-master
      Container:
        - Name: kubernetes-dashboard
          Bild: kubernetesui/dashboard:v2.3.1
          imagePullPolicy: Immer
          Ports:
            - ContainerPort: 8443
              Protokoll: TCP-
          Argumente:
            - --auto-generate-certificates
            - --namespace=kubernetes-dashboard
            # Kommentieren Sie die folgende Zeile aus, um den Kubernetes-API-Server-Host manuell anzugeben.
            # Wenn nicht angegeben, versucht Dashboard, die API automatisch zu erkennen Server und verbinden
            # mit ihm. Kommentieren Sie nur, wenn die Standardeinstellung nicht funktioniert.
            # - --apiserver-host=http://my-address:port
          volumeMounts:
            - name: kubernetes-dashboard-certs
              mountPath: /certs
              # Erstellen Sie ein Volume auf der Festplatte, um Exec-Protokolle zu speichern
            - mountPath: /tmp
              Name: tmp-volume
          livenessProbe:
            httpGet:
              Schema: HTTPS-
              Pfad: /
              Port: 8443
            initialDelaySeconds: 30
            timeoutSeconds: 30
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            runAsUser: 1001
            runAsGroup: 2001
      Volumes:
        - Name: kubernetes-dashboard-certs
          Secret:
            SecretName: kubernetes-dashboard-certs
        – Name: tmp-volume
          emptyDir: {}
      serviceAccountName: kubernetes-dashboard
      nodeSelector:
        „kubernetes.io/os“: linux
      # Kommentieren Sie die folgenden Toleranzen, wenn Dashboard nicht auf Master-
      Toleranzen bereitgestellt werden darf:
        – Schlüssel: node-role.kubernetes.io/master
          Wirkung: NoSchedule

---

Art: Service
apiVersion: v1
Metadaten:
  Labels:
    k8s-app: Dashboard-Metrics-Scraper
  Name: Dashboard-Metrics-Scraper
  Namespace: Kubernetes-Dashboard
Spezifikation:
  Ports:
    - Port: 8000
      TargetPort: 8000
  Selektor:
    K8s-App: Dashboard- Metrik-Scraper

---

Art: Bereitstellung
apiVersion: apps/v1
Metadaten:
  Labels:
    k8s-app: Dashboard-Metrics-Scraper
  Name: Dashboard-Metrics-Scraper
  Namespace: Kubernetes-Dashboard
Spezifikation:
  Replikate: 1
  RevisionHistoryLimit: 10
  Selektor:
    MatchLabels:
      K8s-App: Dashboard -metrics-scraper
  Vorlage:
    Metadaten:
      Labels:
        k8s-app: Dashboard-metrics-scraper
      Anmerkungen:
        seccomp.security.alpha.kubernetes.io/pod: 'runtime/default'
    spec:
      nodeName: k8s-master
      Container:
        - Name: Dashboard-Metriken-Scraper
          Bild: kubernetesui/metrics-scraper:v1.0.6
          Ports:
            - ContainerPort: 8000
              Protokoll: TCP
          LivenessProbe:
            httpGet:
              Schema: HTTP-
              Pfad: /
              Port: 8000
            InitialDelaySeconds: 30
            TimeoutSeconds: 30
          VolumeMounts:
          - MountPath: /tmp
            Name: tmp- Volume
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            runAsUser: 1001
            runAsGroup: 2001
      serviceAccountName: kubernetes-dashboard
      nodeSelector:
        „kubernetes.io/os“: linux
      # Kommentieren Sie die folgenden Toleranzen, wenn Dashboard nicht auf Master-
      Toleranzen bereitgestellt werden darf:
        – Schlüssel: node-role.kubernetes.io/master
          Wirkung: NoSchedule-
      Volumes:
        – Name : tmp-volume
          emptyDir: {}

 Schreiben Sie dash.yaml, um das Token zu erhalten

Erstellen Sie ein Zugriffskonto und bereiten Sie eine Yaml-Datei vor: vi dash.yaml

apiVersion: v1
Art: ServiceAccount-
Metadaten:
  Name: Admin-Benutzer
  Namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
Art: ClusterRoleBinding
Metadaten:
  Name: Admin-Benutzer
RoleRef:
  apiGroup: rbac.authorization. k8s.io
  Art: ClusterRole-
  Name: Cluster-Administratorsubjekte
:
- Art: ServiceAccount
  -Name: Admin-Benutzernamespace
  : Kubernetes-Dashboard

 Bewerben und zugreifen

#Zugriff: https://cluster beliebige IP:Port https://192.168.157.130:30519
#Kubectl
apply -f dash.yaml anwenden

 Bekomme Token

# Bekomme Token

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

 

 Schließlich können Sie mit dem Token auf die visuelle Konsole von k8s zugreifen.

 

Je suppose que tu aimes

Origine blog.csdn.net/crazy1013/article/details/126575777
conseillé
Classement