本主題說明如何部署和管理適用於 Grafana 的 TKG 延伸 v1.3.1。Grafana 可讓您查詢、視覺化、警示及探索儲存在任何位置的度量。Grafana 提供從應用程式資料形成圖表和視覺化的工具。部署 Grafana 的 TKG 延伸,以針對 Tanzu Kubernetes 叢集產生和檢視度量。

Grafana 延伸必要條件

請遵循以下部署延伸必要條件。

Grafana 延伸的其他需求

用於 Grafana 監控的 TKG 延伸 v1.3.1 在安裝前和安裝後有其他需求。

  • Grafana 監控延伸需要預設持續性儲存區類別。您可以建立具有預設持續性儲存區類別的叢集,也可以在部署延伸時在 Grafana 組態檔中指定一個叢集。請參閱檢閱 TKG 延伸的持續性儲存區需求
  • 部署 Grafana 延伸後,需要使用以下 Kuberetes 服務類型之一公開的 IP 位址透過 HTTP/S 存取 Grafana 儀表板:ClusterIP (預設)、NodePort 或 LoadBalancer。若要從叢集外部存取 Grafana 儀表板,請先部署 Contour 延伸,然後再部署 Grafana。若要部署 Contour 延伸,請參閱部署和管理適用於 Grafana 監控的 TKG 延伸

    Grafana 支援以下 Kuberentes 服務類型:

    服務類型 說明 可存取性
    ClusterIP 在叢集內部 IP 上公開服務。 只能從叢集內存取服務。
    NodePort 在靜態連接埠的每個節點 IP 上公開服務。 可以從叢集外部存取服務。
    LoadBalancer 使用負載平衡器在外部公開服務。 可以從叢集外部存取服務。
    ClusterIP 是預設設定,但只能從叢集內進行存取。如果要針對主管叢集使用 NSX-T 網路,請建立類型為 LoadBalancer 的 Contour Envoy 服務。如果要針對主管叢集使用 vSphere vDS 網路,請建立類型為 LoadBalancer 或 NodePort 的 Contour Envoy 服務,具體取決於您的需求。

部署 Grafana 延伸以實現視覺化和分析

適用於 Grafana 的 TKG 延伸會部署單一容器。如需詳細資訊,請參閱 https://grafana.com/
容器 資源類型 複本 說明
Grafana 部署 2 資料視覺化
延伸設定為從位於 https://projects.registry.vmware.com/ 的 VMware 公用登錄提取容器。如果使用私人登錄,請變更資料值和延伸組態中的端點 URL 以便相符。請參閱 設定 Grafana 延伸
  1. 確認您已完成各個 Grafana 延伸必要條件。請參閱Grafana 延伸必要條件
  2. 將目錄變更為 Grafana 延伸。
    cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
  3. 建立 tanzu-system-monitoring 命名空間以及 Grafana 服務帳戶和角色物件。
    kubectl apply -f namespace-role.yaml
  4. 建立 Grafana 資料值檔案。
    範例資料值檔案將提供所需的最低組態。
    cp grafana-data-values.yaml.example grafana-data-values.yaml
  5. 透過更新 grafana-data-values.yaml 以設定 Grafana 延伸。

    根據需要自訂組態。請參閱設定 Grafana 延伸

    admin_password 應為 base64 編碼,但如果不是,也不會阻止部署此延伸。在下列範例中,密碼「admin」為 base64 編碼。請在此處對您自己的 Grafana 密碼進行編碼:https://www.base64encode.org/

    如果未佈建具有預設儲存區類別的叢集,可以在資料值檔案中進行指定。此外,請確保命名空間具有足夠的儲存區用於持續性磁碟區宣告。
    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"
    
    如果使用類型為 LoadBalancer 或 NodePort 的 Envoy 服務部署 Contour,請在組態檔中指定這一點,如下所示。如需詳細資訊,請參閱 設定 Grafana 延伸
    monitoring:
      grafana:
        service:
          type: LoadBalancer OR NodePort
    

    依預設,Grafana 延伸會建立用於存取 Grafana 儀表板的完整網域名稱 (FQDN) grafana.system.tanzu。可以透過在組態檔中的 monitoring.grafana.ingress.virtual_host_fqdn 指定所需的主機名稱來自訂此 FQDN。如需詳細資訊,請參閱設定 Grafana 延伸

  6. 使用 grafana-data-values 檔案建立 Grafana 密碼。
    kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tanzu-system-monitoring

    grafana-data-values 密碼是在 tanzu-system-monitoring 命名空間中建立的。使用 kubectl get secrets -n tanzu-system-monitoring 進行驗證。

  7. 部署 Grafana 延伸。
    kubectl apply -f grafana-extension.yaml

    成功後,會建立 Grafana 應用程式:app.kappctrl.k14s.io/grafana created

  8. 檢查 Grafana 應用程式的狀態。
    kubectl get app grafana -n tanzu-system-monitoring
    狀態應從 Reconciling 變更為 Reconcile succeeded。如果狀態為 Reconcile failed,請參閱〈疑難排解〉。
  9. 檢視有關 Grafana 應用程式的詳細狀態。
    kubectl get app grafana -n tanzu-system-monitoring -o yaml
  10. 驗證 Grafana 部署。
    kubectl get deployments -n tanzu-system-monitoring

使用類型為 LoadBalancer 的 Contour Envoy 服務存取 Grafana 儀表板

如果部署了類型為 LoadBalancer 的必要 Contour Envoy 服務,並且您在 Grafana 組態檔中指定了這一點,請取得負載平衡器的外部 IP 位址,並為 Grafana FQDN 建立 DNS 記錄。
  1. 取得類型為 LoadBalancer 的 Envoy 服務的 External-IP 位址。
    kubectl get service envoy -n tanzu-system-ingress
    您應該會看到傳回的 External-IP 位址,例如:
    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
    或者,也可以使用下列命令取得 External-IP 位址。
    kubectl get svc envoy -n tanzu-system-ingress -o jsonpath='{.status.loadBalancer.ingress[0]}'
  2. 若要驗證 Grafana 延伸的安裝,請使用對應至負載平衡器的 External-IP 位址的 Grafana FQDN 來更新本機 /etc/hosts 檔案,例如:
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    # TKG Grafana Extension with Envoy Load Balancer
    10.195.141.17 grafana.system.tanzu
    
  3. 導覽到 https://grafana.system.tanzu,存取 Grafana 儀表板。

    由於站台使用自我簽署憑證,您可能需要瀏覽特定於瀏覽器的安全性警告,然後才能存取儀表板。

  4. 若要進行生產存取,請在 DNS 伺服器上建立兩條 CNAME 記錄,以將 Envoy 服務負載平衡器 External-IP 位址對應到 Grafana 儀表板。

使用類型為 NodePort 的 Contour Envoy 服務存取 Grafana 儀表板

如果部署了類型為 NodePort 的必要 Contour Envoy 服務,並且在 Grafana 組態檔中指定了這一點,請取得 worker 節點的虛擬機器 IP 位址,並為 Grafana FQDN 建立 DNS 記錄。
  1. 將內容切換至佈建叢集所在的 vSphere 命名空間
    kubectl config use-context VSPHERE-NAMESPACE
  2. 列出叢集中的節點。
    kubectl get virtualmachines
    您應該會看到叢集節點,例如:
    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
  3. 使用下列命令選擇其中一個 worker 節點並加以說明。
    kubectl describe virtualmachines tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm
  4. 找到虛擬機器的 IP 位址,例如 Vm Ip: 10.115.22.43
  5. 若要驗證 Grafana 延伸的安裝,請使用對應至 worker 節點 IP 位址的 Grafana FQDN 來更新本機 /etc/hosts 檔案,例如:
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    # TKGS Grafana with Envoy NodePort
    10.115.22.43 grafana.system.tanzu
    
  6. 導覽到 https://grafana.system.tanzu,存取 Grafana 儀表板。

    由於站台使用自我簽署憑證,您可能需要瀏覽特定於瀏覽器的安全性警告,然後才能存取儀表板。

疑難排解 Grafana 部署

如果部署或協調失敗,請執行 kubectl get pods -A 以檢視網繭狀態。contourenvoy 網繭應為 Running 狀態。如果網繭狀態為 ImagePullBackOffImageCrashLoopBackOff,則無法提取容器映像。檢查資料值和延伸 YAML 檔案中的登錄 URL,並確保其正確無誤。

檢查容器記錄,其中 name-XXXXkubectl get pods -A 執行所在的唯一網繭名稱:
kubectl logs pod/grafana-XXXX -c grafana -n tanzu-system-monitoring

更新 Grafana 延伸

更新部署到 Tanzu Kubernetes 叢集的 Grafana 延伸。

  1. grafana-data-values 密碼取得目前的 Grafana 資料值。
    kubectl get secret grafana-data-values -n tanzu-system-monitoring -o 'go-template={{ index .data "values.yaml" }}' | base64 -d > grafana-data-values.yaml
    
  2. 更新 grafana-data-values.yaml 中的 Grafana 資料值。請參閱設定 Grafana 延伸
  3. 更新 Grafana 資料值密碼。
    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-
    
    已使用更新的資料值來協調 Grafana 延伸。
    備註: 依預設,kapp-controller 將每 5 分鐘同步一次應用程式。更新應在 5 分鐘內生效。如果您想讓更新立即生效,請變更 grafana-extension.yaml 中的 syncPeriod 為較小值,然後使用 kubectl apply -f grafana-extension.yaml 來套用 Grafana 延伸。
  4. 檢查該延伸的狀態。
    kubectl get app grafana -n tanzu-system-monitoring

    更新 Grafana 之後,狀態應變更為 Reconcile Succeeded

  5. 檢視詳細狀態並視需要進行疑難排解。
    kubectl get app grafana -n tanzu-system-monitoring -o yaml

刪除 Grafana 延伸

Tanzu Kubernetes 叢集刪除 Grafana 延伸。
備註: 按順序完成步驟。請不要在完全刪除 Grafana 應用程式之前,先刪除命名空間、服務帳戶和角色物件。這樣做可能會導致系統錯誤。
備註: Prometheus 和 Grafana 延伸會部署到相同的命名空間: tanzu-system-monitoring。如果已將兩個延伸部署到相同的叢集,則必須先刪除每個延伸,然後再刪除命名空間。
  1. 將目錄變更為 Grafana 延伸。
    cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
  2. 刪除 Grafana 應用程式。
    kubectl delete app grafana -n tanzu-system-monitoring

    預期結果:app.kappctrl.k14s.io "grafana" deleted

  3. 確認 Grafana 應用程式是否已刪除。
    kubectl get app grafana -n tanzu-system-monintoring

    預期結果:apps.kappctrl.k14s.io "grafana" not found

  4. 刪除 tanzu-system-monitoring 命名空間以及 Grafana 服務帳戶和角色物件。
    警告: 如果已部署 Prometheus,請勿執行此步驟。
    kubectl delete -f namespace-role.yaml
  5. 如果您要重新部署 Grafana,請移除密碼 grafana-data-values
    kubectl delete secret grafana-data-values -n tanzu-system-monitoring

    預期結果:secret "grafana-data-values" deleted

升級 Grafana 延伸

如果已部署現有的 Grafana 延伸,可以將其升級至最新版本。
  1. 匯出 Grafana configmap 並將其儲存為備份。
    kubectl get configmap grafana -n tanzu-system-monitoring -o 'go-template={{ index .data "grafana.yaml" }}' > grafana-configmap.yaml
  2. 刪除現有的 Grafana 延伸。請參閱刪除 Grafana 延伸
  3. 部署 Grafana 延伸。請參閱部署 Grafana 延伸以實現視覺化和分析

設定 Grafana 延伸

Grafana 組態在 /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana/grafana-data-values.yaml 中設定。
表 1. Grafana 組態參數
參數 說明 類型 預設值
monitoring.namespace 將部署 Prometheus 的命名空間 string tanzu-system-monitoring
monitoring.create_namespace 旗標指示是否建立 monitoring.namespace 指定的命名空間 布林值 false
monitoring.grafana.cluster_role.apiGroups 為 grafana clusterrole 定義的 API 群組 清單 [""]
monitoring.grafana.cluster_role.resources 為 grafana clusterrole 定義的資源 清單 ["configmaps", "secrets"]
monitoring.grafana.cluster_role.verbs 為 clusterrole 定義的存取權限 清單 ["get", "watch", "list"]
monitoring.grafana.config.grafana_ini Grafana 組態檔詳細資料 組態檔 grafana.ini

在此檔案中,grafana_net URL 用於與 Grafana 整合,例如,直接從 Grafana.com 匯入儀表板。

monitoring.grafana.config.datasource.type Grafana 資料來源類型 string prometheus
monitoring.grafana.config.datasource.access 存取模式。Proxy 或直接 (UI 中的伺服器或瀏覽器) string proxy
monitoring.grafana.config.datasource.isDefault 標記為預設 Grafana 資料來源 布林值 true
monitoring.grafana.config.provider_yaml 用於定義 grafana 儀表板提供者的組態檔 Yaml 檔案 provider.yaml
monitoring.grafana.service.type 用於公開 Grafana 的服務類型。支援的值:ClusterIP、NodePort、LoadBalancer string vSphere:NodePort,aws/azure:LoadBalancer
monitoring.grafana.pvc.storage_class 定義持續性磁碟區宣告的存取模式。支援的值:ReadWriteOnce、ReadOnlyMany、ReadWriteMany string ReadWriteOnce
monitoring.grafana.pvc.storage 定義持續性磁碟區宣告的儲存區大小。 string 2Gi
monitoring.grafana.deployment.replicas Grafana 複本數 整數 1
monitoring.grafana.image.repository 具有 Grafana 映像的存放庫的位置。預設為公用 VMware 登錄。如果您要使用私人存放庫 (例如氣隙環境),請變更此值。 string projects.registry.vmware.com/tkg/grafana
monitoring.grafana.image.name Grafana 映像的名稱 string grafana
monitoring.grafana.image.tag Grafana 映像標籤。如果您要升級版本,則可能需要更新此值。 string v7.3.5_vmware.1
monitoring.grafana.image.pullPolicy Grafana 映像提取原則 string IfNotPresent
monitoring.grafana.secret.type 為 Grafana 儀表板定義的密碼類型 string 不透明
monitoring.grafana.secret.admin_user 用於存取 Grafana 儀表板的使用者名稱 string YWRtaW4=

值為 base64 編碼;用於解碼:echo "xxxxxx" | base64 --decode

monitoring.grafana.secret.admin_password 用於存取 Grafana 儀表板的密碼 string 空值
monitoring.grafana.secret.ldap_toml 如果使用 LDAP 驗證,則為 LDAP 組態檔路徑 string ""
monitoring.grafana_init_container.image.repository 包含 Grafana init 容器映像的存放庫。預設為公用 VMware 登錄。如果您要使用私人存放庫 (例如氣隙環境),請變更此值。 string projects.registry.vmware.com/tkg/grafana
monitoring.grafana_init_container.image.name grafana init 容器映像的名稱 string k8s-sidecar
monitoring.grafana_init_container.image.tag Grafana init 容器映像標籤。如果您要升級版本,則可能需要更新此值。 string 0.1.99
monitoring.grafana_init_container.image.pullPolicy grafana init 容器映像提取原則 string IfNotPresent
monitoring.grafana_sc_dashboard.image.repository 包含 Grafana 儀表板映像的存放庫。預設為公用 VMware 登錄。如果您要使用私人存放庫 (例如氣隙環境),請變更此值。 string projects.registry.vmware.com/tkg/grafana
monitoring.grafana_sc_dashboard.image.name grafana 儀表板映像的名稱 string k8s-sidecar
monitoring.grafana_sc_dashboard.image.tag Grafana 儀表板映像標籤。如果您要升級版本,則可能需要更新此值。 string 0.1.99
monitoring.grafana_sc_dashboard.image.pullPolicy grafana 儀表板映像提取原則 string IfNotPresent
monitoring.grafana.ingress.enabled 啟用/停用 grafana 的入口 布林值 true
monitoring.grafana.ingress.virtual_host_fqdn 用於存取 grafana 的主機名稱 string grafana.system.tanzu
monitoring.grafana.ingress.prefix grafana 的路徑前置詞 string /
monitoring.grafana.ingress.tlsCertificate.tls.crt 如果您想要使用自己的 TLS 憑證,請為入口提供可選憑證。依預設會產生自我簽署憑證 string 產生的憑證
monitoring.grafana.ingress.tlsCertificate.tls.key 如果您想要使用自己的 TLS 憑證,請為入口提供可選憑證私密金鑰。 string 產生的憑證金鑰