Ä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.