In diesem Thema wird die Vorgehensweise zur Bereitstellung und Verwaltung der TKG-Erweiterung v1.3.1 für Grafana beschrieben. Mit Grafana können Sie Metriken unabhängig davon, wo sie gespeichert sind, abfragen, visualisieren, erkunden und entsprechende Warnungen ausgeben. Grafana bietet Tools zum Erstellen von Diagrammen und Visualisierungen aus Anwendungsdaten. Stellen Sie die TKG-Erweiterung für Grafana zum Erstellen und Anzeigen von Metriken für Tanzu Kubernetes-Cluster bereit.
Voraussetzungen für die Grafana-Erweiterung
- Stellen Sie einen Cluster bereit. Weitere Informationen hierzu finden Sie unter Workflow zu Bereitstellung von Tanzu Kubernetes-Clustern mithilfe der TKGS-v1alpha2-API.
Hinweis: Sie müssen einen Cluster bereitstellen, der die Standard-serviceDomain (
cluster.local
) verwendet. - Stellen Sie eine Verbindung zum Cluster her. Weitere Informationen hierzu finden Sie unter Herstellen einer Verbindung mit einem Tanzu Kubernetes-Cluster als vCenter Single Sign-On-Benutzer.
- Herunterladen des TKG-Erweiterungspakets v1.3.1 auf den Clienthost, auf dem Sie kubectl-Befehle ausführen.
- Voraussetzungen für die Installation von TKG-Erweiterungen auf dem Zielcluster.
Zusätzlich Anforderungen für die Grafana-Erweiterung
Bei der TKG-Erweiterung v1.3.1 für die Grafana-Überwachung gelten zusätzliche Anforderungen vor und nach der Installation.
- Die Grafana-Überwachungserweiterung erfordert eine persistente Standardspeicherklasse. Sie können entweder einen Cluster mit einer persistenten Standardspeicherklasse erstellen oder einen Cluster in der Grafana-Konfigurationsdatei angeben, wenn Sie die Erweiterung bereitstellen. Weitere Informationen finden Sie unter Überprüfen der Anforderungen an persistenten Speicher für die TKG-Erweiterungen.
- Nach der Bereitstellung der Grafana-Erweiterung greifen Sie über HTTP/S auf das Grafana-Dashboard zu, indem Sie die IP-Adresse verwenden, die von einem der folgenden Kubernetes-Diensttypen angezeigt wird: ClusterIP (Standard), NodePort oder LoadBalancer. Stellen Sie für den Zugriff auf das Grafana-Dashboard von außerhalb des Clusters zuerst die Contour-Erweiterung und dann Grafana bereit. Informationen zum Bereitstellen der Contour-Erweiterung finden Sie unter Bereitstellen und Verwalten der TKG-Erweiterung für die Grafana-Überwachung.
Grafana unterstützt die folgenden Kubernetes-Diensttypen:
Diensttyp Beschreibung Barrierefreiheit ClusterIP
Zeigt den Dienst in einer clusterinternen IP an. Auf den Dienst kann nur innerhalb des Clusters zugegriffen werden. NodePort
Zeigt den Dienst in der IP-Adresse jedes Knotens an einem statischen Port an. Auf den Dienst kann von außerhalb des Clusters zugegriffen werden. LoadBalancer
Zeigt den Dienst extern mithilfe eines Lastausgleichsdiensts an. Auf den Dienst kann von außerhalb des Clusters zugegriffen werden. ClusterIP
fungiert als Standardeinstellung, der Zugriff ist jedoch nur innerhalb des Clusters möglich. Wenn Sie ein NSX-T-Netzwerk für den Supervisor-Cluster verwenden, erstellen Sie einen Contour Envoy-Dienst vom Typ „LoadBalancer“. Wenn Sie ein vSphere vDS-Netzwerk für den Supervisor-Cluster verwenden, erstellen Sie je nach Umgebung und Anforderungen einen Contour Envoy-Dienst vom Typ „LoadBalancer“ oder „NodePort“.
Bereitstellen der Grafana-Erweiterung zur Visualisierung und Analyse
Container | Ressourcentyp | Replikate | Beschreibung |
---|---|---|---|
Grafana | Bereitstellung | 2 | Datenvisualisierung |
- Überprüfen Sie, ob die Voraussetzungen für die Grafana-Erweiterung erfüllt sind. Weitere Informationen finden Sie unter Voraussetzungen für die Grafana-Erweiterung.
- Ändern Sie das Verzeichnis in die Grafana-Erweiterung.
cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
- Erstellen Sie den
tanzu-system-monitoring
-Namespace und das Grafana-Dienstkonto und die Rollenobjekte.kubectl apply -f namespace-role.yaml
- Erstellen Sie eine Grafana-Datei mit Datenwerten.
Die Beispieldatei mit Datenwerten enthält die erforderliche Mindestkonfiguration.
cp grafana-data-values.yaml.example grafana-data-values.yaml
- Konfigurieren Sie die Grafana-Erweiterung, indem Sie
grafana-data-values.yaml
aktualisieren.Passen Sie die Konfiguration nach Bedarf an. Weitere Informationen finden Sie unter Konfigurieren der Grafana-Erweiterung.
admin_password
muss base64-verschlüsselt sein. Die Bereitstellung der Erweiterung wird aber nicht blockiert, wenn keine base64-Verschlüsselung vorliegt. Im folgenden Beispiel ist das Kennwort „admin“ base64-verschlüsselt. Entschlüsseln Sie ihr eigenes Grafana-Kennwort hier: https://www.base64encode.org/.Wenn der Cluster nicht mit einer Standardspeicherklasse bereitgestellt wird, können Sie sie in der Datenwertedatei angeben. Stellen Sie außerdem sicher, dass der Namespace ausreichend Speicherplatz für die Anforderungen von dauerhaften Datenträgern aufweist.monitoring: grafana: image: repository: "projects.registry.vmware.com/tkg/grafana" pvc: storage_class: vwt-storage-policy storage: "8Gi" secret: admin_password: "YWRtaW4=" grafana_init_container: image: repository: "projects.registry.vmware.com/tkg/grafana" grafana_sc_dashboard: image: repository: "projects.registry.vmware.com/tkg/grafana"
Wenn Sie Contour mit einem Envoy-Dienst vom Typ „LoadBalancer“ oder „NodePort“ bereitgestellt haben, geben Sie dies in der Konfigurationsdatei an, wie abgebildet. Weitere Informationen hierzu finden Sie unter Konfigurieren der Grafana-Erweiterung.monitoring: grafana: service: type: LoadBalancer OR NodePort
Standardmäßig erstellt die Grafana-Erweiterung den vollqualifizierten Domänennamen (FQDN)
grafana.system.tanzu
für den Zugriff auf das Grafana-Dashboard. Sie können diesen FQDN anpassen, indem Sie den gewünschten Hostnamen in der Konfigurationsdatei untermonitoring.grafana.ingress.virtual_host_fqdn
angeben. Weitere Informationen hierzu finden Sie unter Konfigurieren der Grafana-Erweiterung. - Erstellen Sie den geheimen Grafana-Schlüssel mit der Datei
grafana-data-values
.kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tanzu-system-monitoring
Der geheime Schlüssel
grafana-data-values
wird im Namespacetanzu-system-monitoring
erstellt. Überprüfen Sie dies mitkubectl get secrets -n tanzu-system-monitoring
. - Stellen Sie die Grafana-Erweiterung bereit.
kubectl apply -f grafana-extension.yaml
Bei Erfolg wird die Grafana-App erstellt:
app.kappctrl.k14s.io/grafana created
. - Überprüfen Sie den Status der Grafana-App.
kubectl get app grafana -n tanzu-system-monitoring
Der Status sollte sich vonReconciling
inReconcile succeeded
ändern. Wenn der StatusReconcile failed
lautet, finden Sie weitere Informationen unter „Fehlerbehebung“. - Zeigen Sie detaillierte Statusinformationen über die Grafana-App an.
kubectl get app grafana -n tanzu-system-monitoring -o yaml
- Überprüfen Sie die Grafana-Bereitstellung.
kubectl get deployments -n tanzu-system-monitoring
Zugriff über einen Contour Envoy-Dienst vom Typ „LoadBalancer“ auf das Grafana-Dashboard
- Rufen Sie die
External-IP
-Adresse für den Envoy-Dienst vom Typ LoadBalancer ab.kubectl get service envoy -n tanzu-system-ingress
DieExternal-IP
-Adresse sollte angezeigt werden, z. B.:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE envoy LoadBalancer 10.99.25.220 10.195.141.17 80:30437/TCP,443:30589/TCP 3h27m
Alternativ können Sie dieExternal-IP
-Adresse mit dem folgenden Befehl abrufen.kubectl get svc envoy -n tanzu-system-ingress -o jsonpath='{.status.loadBalancer.ingress[0]}'
- Zur Überprüfung der Installation der Grafana-Erweiterung aktualisieren Sie Ihre lokale
/etc/hosts
-Datei mit dem Grafana-FQDN, der derExternal-IP
-Adresse des Lastausgleichsdiensts zugeordnet ist. Beispiel:127.0.0.1 localhost 127.0.1.1 ubuntu # TKG Grafana Extension with Envoy Load Balancer 10.195.141.17 grafana.system.tanzu
- Greifen Sie auf das Grafana-Dashboard zu und navigieren Sie zu https://grafana.system.tanzu.
Da auf der Site selbstsignierte Zertifikate verwendet werden, müssen Sie möglicherweise durch eine browserspezifische Sicherheitswarnung navigieren, bevor Sie auf das Dashboard zugreifen können.
- Erstellen Sie für den Produktionszugriff zwei CNAME-Datensätze auf einem DNS-Server, der dem Grafana-Dashboard die Lastausgleichsdienstadresse
External-IP
des Envoy-Diensts zuordnet.
Zugriff über einen Contour Envoy-Dienst vom Typ „NodePort“ auf das Grafana-Dashboard
- Wechseln Sie den Kontext zum vSphere-Namespace, in dem der Cluster bereitgestellt wird.
kubectl config use-context VSPHERE-NAMESPACE
- Listet die Knoten im Cluster auf.
kubectl get virtualmachines
Sie sollten die Clusterknoten sehen, z. B.:NAME POWERSTATE AGE tkgs-cluster-X-control-plane-6dgln poweredOn 6h7m tkgs-cluster-X-control-plane-j6hq6 poweredOn 6h10m tkgs-cluster-X-control-plane-xc25f poweredOn 6h14m tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm poweredOn 6h12m tkgs-cluster-X-workers-9twdr-59bc54dc97-pjptr poweredOn 6h12m tkgs-cluster-X-workers-9twdr-59bc54dc97-t45mn poweredOn 6h12m
- Wählen Sie einen der Worker-Knoten aus und beschreiben Sie ihn mit dem folgenden Befehl.
kubectl describe virtualmachines tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm
- Suchen Sie die IP-Adresse der virtuellen Maschine, z. B.
Vm Ip: 10.115.22.43
. - Zur Überprüfung der Installation der Grafana-Erweiterung aktualisieren Sie Ihre lokale
/etc/hosts
-Datei mit dem Grafana-FQDN, der der IP-Adresse des Worker-Knotens zugeordnet ist. Beispiel:127.0.0.1 localhost 127.0.1.1 ubuntu # TKGS Grafana with Envoy NodePort 10.115.22.43 grafana.system.tanzu
- Greifen Sie auf das Grafana-Dashboard zu und navigieren Sie zu https://grafana.system.tanzu.
Da auf der Site selbstsignierte Zertifikate verwendet werden, müssen Sie möglicherweise durch eine browserspezifische Sicherheitswarnung navigieren, bevor Sie auf das Dashboard zugreifen können.
Fehlerbehebung bei der Grafana-Bereitstellung
Wenn die Bereitstellung oder der Abgleich fehlschlägt, führen Sie kubectl get pods -A
aus, um den Pod-Status anzuzeigen. Die contour
- und envoy
-Pods sollten den Status Running
aufweisen. Wenn der Pod-Status ImagePullBackOff
oder ImageCrashLoopBackOff
lautet, konnte das Container-Image nicht abgerufen werden. Überprüfen Sie die Registrierungs-URL in den Datenwerten und den YAML-Dateien der Erweiterung und achten Sie darauf, dass sie korrekt sind.
name-XXXX
der eindeutige Pod-Name ist, wenn Sie
kubectl get pods -A
ausführen:
kubectl logs pod/grafana-XXXX -c grafana -n tanzu-system-monitoring
Aktualisieren der Grafana-Erweiterung
Aktualisieren Sie die Grafana-Erweiterung, die in einem Tanzu Kubernetes-Cluster bereitgestellt wird.
- Rufen Sie aktuelle Grafana-Datenwerte vom geheimen Schlüssel
grafana-data-values
ab.kubectl get secret grafana-data-values -n tanzu-system-monitoring -o 'go-template={{ index .data "values.yaml" }}' | base64 -d > grafana-data-values.yaml
- Aktualisieren Sie die Grafana-Datenwerte in
grafana-data-values.yaml
. Weitere Informationen finden Sie unter Konfigurieren der Grafana-Erweiterung. - Aktualisieren Sie den geheimen Schlüssel mit den Grafana-Datenwerten.
kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tanzu-system-monitoring -o yaml --dry-run | kubectl replace -f-
Die Grafana-Erweiterung wird mit den aktualisierten Datenwerten abgeglichen.Hinweis: Standardmäßig synchronisiert kapp-controller die Apps alle 5 Minuten. Das Update sollte in 5 Minuten oder weniger wirksam werden. Wenn das Update sofort wirksam werden soll, ändern SiesyncPeriod
ingrafana-extension.yaml
in einen niedrigeren Wert und wenden Sie die Grafana-Erweiterung mithilfe derkubectl apply -f grafana-extension.yaml
an. - Überprüfen Sie den Zustand der Erweiterung.
kubectl get app grafana -n tanzu-system-monitoring
Der Status sollte sich in
Reconcile Succeeded
ändern, sobald Grafana aktualisiert wurde. - Zeigen Sie den detaillierten Zustand an und beheben Sie nach Bedarf Fehler.
kubectl get app grafana -n tanzu-system-monitoring -o yaml
Löschen der Grafana-Erweiterung
tanzu-system-monitoring
. Wenn Sie beide Erweiterungen auf demselben Cluster bereitgestellt haben, löschen Sie jede Erweiterung, bevor Sie den Namespace löschen.
- Ändern Sie das Verzeichnis in die Grafana-Erweiterung.
cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
- Löschen Sie die Grafana-App.
kubectl delete app grafana -n tanzu-system-monitoring
Erwartetes Ergebnis:
app.kappctrl.k14s.io "grafana" deleted
. - Stellen Sie sicher, dass die Grafana-App gelöscht wurde.
kubectl get app grafana -n tanzu-system-monintoring
Erwartetes Ergebnis:
apps.kappctrl.k14s.io "grafana" not found
. - Löschen Sie den
tanzu-system-monitoring
-Namespace und das Grafana-Dienstkonto und die Rollenobjekte.Warnung: Führen Sie diesen Schritt nicht aus, wenn Prometheus bereitgestellt wird.kubectl delete -f namespace-role.yaml
- Wenn Sie Grafana erneut bereitstellen möchten, entfernen Sie die
grafana-data-values
des geheimen Schlüssels.kubectl delete secret grafana-data-values -n tanzu-system-monitoring
Erwartetes Ergebnis:
secret "grafana-data-values" deleted
.
Upgrade der Grafana-Erweiterung
- Exportieren Sie die Grafana-Configmap und speichern Sie sie als Sicherung.
kubectl get configmap grafana -n tanzu-system-monitoring -o 'go-template={{ index .data "grafana.yaml" }}' > grafana-configmap.yaml
- Löschen Sie die vorhandene Grafana-Erweiterung. Weitere Informationen hierzu finden Sie unter Löschen der Grafana-Erweiterung.
- Stellen Sie die Grafana-Erweiterung bereit. Weitere Informationen hierzu finden Sie unter Bereitstellen der Grafana-Erweiterung zur Visualisierung und Analyse.
Konfigurieren der Grafana-Erweiterung
/tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana/grafana-data-values.yaml
festgelegt.
Parameter | Beschreibung | Typ | Standard |
---|---|---|---|
monitoring.namespace | Namespace, in dem Prometheus bereitgestellt wird | string | tanzu-system-monitoring |
monitoring.create_namespace | Das Flag gibt an, ob der durch monitoring.namespace angegebene Namespace erstellt werden soll. | Boolean | false |
monitoring.grafana.cluster_role.apiGroups | Für die Grafana-Clusterrolle definierte API-Gruppe | Liste | [""] |
monitoring.grafana.cluster_role.resources | Für die Grafana-Clusterrolle definierte Ressourcen | Liste | ["configmaps", "secrets"] |
monitoring.grafana.cluster_role.verbs | Für die Clusterrolle definierte Zugriffsberechtigung | Liste | ["get", "watch", "list"] |
monitoring.grafana.config.grafana_ini | Details zur Grafana-Konfigurationsdatei | Konfigurationsdatei | grafana.ini In dieser Datei wird die |
monitoring.grafana.config.datasource.type | Grafana-Datenquellentyp | string | Prometheus |
monitoring.grafana.config.datasource.access | Zugriffsmodus: Proxy oder direkt (Server oder Browser auf der Benutzeroberfläche) | string | Proxy |
monitoring.grafana.config.datasource.isDefault | Als Standard-Grafana-Datenquelle markieren | Boolean | true |
monitoring.grafana.config.provider_yaml | Konfigurationsdatei zum Definieren des Grafana-Dashboardanbieters | yaml-Datei | provider.yaml |
monitoring.grafana.service.type | Diensttyp, um Grafana verfügbar zu machen. Unterstützte Werte: ClusterIP, NodePort, LoadBalancer | string | vSphere: NodePort, aws/azure: LoadBalancer |
monitoring.grafana.pvc.storage_class | Definieren Sie den Zugriffsmodus für die Beanspruchung eines dauerhaften Volumes. Unterstützte Werte: ReadWriteOnce, ReadOnlyMany, ReadWriteMany | string | ReadWriteOnce |
monitoring.grafana.cab.storage | Definition der Speichergröße für die Beanspruchung eines persistenten Volumes | string | 2Gi |
monitoring.grafana.deployment.replicas | Anzahl der Grafana-Replikate | integer | 1 |
monitoring.grafana.image.repository | Speicherort des Repositorys mit dem Grafana-Image. Als Standardwert wird die öffentliche VMware-Registrierung verwendet. Ändern Sie diesen Wert, wenn Sie ein privates Repository verwenden (z. B. Air-Gap-Umgebung). | string | projects.registry.vmware.com/tkg/grafana |
monitoring.grafana.image.name | Name des Grafana-Images | string | Grafana |
monitoring.grafana.image.tag | Grafana-Image-Tag. Dieser Wert muss möglicherweise aktualisiert werden, wenn Sie ein Upgrade der Version durchführen. | string | v7.3.5_vmware.1 |
monitoring.grafana.image.pullPolicy | Pull-Richtlinie für das Grafana-Image | string | IfNotPresent |
monitoring.grafana.secret.type | Für das Grafana-Dashboard definierter geheimer Schlüsseltyp | string | Undurchsichtig |
monitoring.grafana.secret.admin_user | Benutzername für den Zugriff auf das Grafana-Dashboard | string | YWRtaW4= Der Wert ist Base64-codiert; zum Entschlüsseln: |
monitoring.grafana.secret.admin_password | Kennwort für den Zugriff auf das Grafana-Dashboard | string | null |
monitoring.grafana.secret.ldap_toml | Bei Verwendung von ldap auth, LDAP-Konfigurationsdateipfad | string | "" |
monitoring.grafana_init_container.image.repository | Repository mit Grafana-Init-Container-Image. Als Standardwert wird die öffentliche VMware-Registrierung verwendet. Ändern Sie diesen Wert, wenn Sie ein privates Repository verwenden (z. B. Air-Gap-Umgebung). | string | projects.registry.vmware.com/tkg/grafana |
monitoring.grafana_init_container.image.name | Name des Grafana-Init-Container-Images | string | k8s-sidecar |
monitoring.grafana_init_container.image.tag | Tag des Grafana-Init-Container-Images. Dieser Wert muss möglicherweise aktualisiert werden, wenn Sie ein Upgrade der Version durchführen. | string | 0.1.99 |
monitoring.grafana_init_container.image.pullPolicy | Pull-Richtlinie für das Grafana-Init-Container-Image | string | IfNotPresent |
monitoring.grafana_sc_dashboard.image.repository | Repository mit dem Grafana-Dashboard-Image. Als Standardwert wird die öffentliche VMware-Registrierung verwendet. Ändern Sie diesen Wert, wenn Sie ein privates Repository verwenden (z. B. Air-Gap-Umgebung). | string | projects.registry.vmware.com/tkg/grafana |
monitoring.grafana_sc_dashboard.image.name | Name des Grafana-Dashboard-Images | string | k8s-sidecar |
monitoring.grafana_sc_dashboard.image.tag | Tag des Grafana-Dashboard-Images. Dieser Wert muss möglicherweise aktualisiert werden, wenn Sie ein Upgrade der Version durchführen. | string | 0.1.99 |
monitoring.grafana_sc_dashboard.image.pullPolicy | Pull-Richtlinie für das Grafana-Dashboard-Image | string | IfNotPresent |
monitoring.grafana.ingress.enabled | Ingress für Grafana aktivieren/deaktivieren | Boolean | true |
monitoring.grafana.ingress.virtual_host_fqdn | Hostname für den Zugriff auf Grafana | string | grafana.system.tanzu |
monitoring.grafana.ingress.prefix | Pfadpräfix für Grafana | string | / |
monitoring.grafana.ingress.tlsCertificate.tls.crt | Optionales Zertifikat für Ingress, wenn Sie Ihr eigenes TLS-Zertifikat verwenden möchten. Standardmäßig wird ein selbstsigniertes Zertifikat generiert | string | Generiertes Zertifikat |
monitoring.grafana.ingress.tlsCertificate.tls.key | Optionaler privater Zertifikatsschlüssel für Ingress, wenn Sie Ihr eigenes TLS-Zertifikat verwenden möchten. | string | Generierter Zertifikatsschlüssel |