本主題說明如何部署和管理適用於 Grafana 的 TKG 延伸 v1.3.1。Grafana 可讓您查詢、視覺化、警示及探索儲存在任何位置的度量。Grafana 提供從應用程式資料形成圖表和視覺化的工具。部署 Grafana 的 TKG 延伸,以針對 Tanzu Kubernetes 叢集產生和檢視度量。
Grafana 延伸必要條件
- 佈建叢集。請參閱使用 TKGS v1alpha2 API 佈建 Tanzu Kubernetes 叢集的工作流程。
備註: 必須部署使用預設 serviceDomain 的叢集 (
cluster.local
)。 - 連線至叢集。請參閱以 vCenter Single Sign-On 使用者身分連線至 Tanzu Kubernetes 叢集。
- 下載 TKG 延伸 v1.3.1 服務包到執行 kubectl 命令的用戶端主機。
- 在目標叢集上安裝 TKG 延伸必要條件。
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 | 部署 | 2 | 資料視覺化 |
- 確認您已完成各個 Grafana 延伸必要條件。請參閱Grafana 延伸必要條件。
- 將目錄變更為 Grafana 延伸。
cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
- 建立
tanzu-system-monitoring
命名空間以及 Grafana 服務帳戶和角色物件。kubectl apply -f namespace-role.yaml
- 建立 Grafana 資料值檔案。
範例資料值檔案將提供所需的最低組態。
cp grafana-data-values.yaml.example grafana-data-values.yaml
- 透過更新
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 延伸。 - 使用
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
進行驗證。 - 部署 Grafana 延伸。
kubectl apply -f grafana-extension.yaml
成功後,會建立 Grafana 應用程式:
app.kappctrl.k14s.io/grafana created
。 - 檢查 Grafana 應用程式的狀態。
kubectl get app grafana -n tanzu-system-monitoring
狀態應從Reconciling
變更為Reconcile succeeded
。如果狀態為Reconcile failed
,請參閱〈疑難排解〉。 - 檢視有關 Grafana 應用程式的詳細狀態。
kubectl get app grafana -n tanzu-system-monitoring -o yaml
- 驗證 Grafana 部署。
kubectl get deployments -n tanzu-system-monitoring
使用類型為 LoadBalancer 的 Contour Envoy 服務存取 Grafana 儀表板
- 取得類型為 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]}'
- 若要驗證 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
- 導覽到 https://grafana.system.tanzu,存取 Grafana 儀表板。
由於站台使用自我簽署憑證,您可能需要瀏覽特定於瀏覽器的安全性警告,然後才能存取儀表板。
- 若要進行生產存取,請在 DNS 伺服器上建立兩條 CNAME 記錄,以將 Envoy 服務負載平衡器
External-IP
位址對應到 Grafana 儀表板。
使用類型為 NodePort 的 Contour Envoy 服務存取 Grafana 儀表板
- 將內容切換至佈建叢集所在的 vSphere 命名空間。
kubectl config use-context VSPHERE-NAMESPACE
- 列出叢集中的節點。
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
- 使用下列命令選擇其中一個 worker 節點並加以說明。
kubectl describe virtualmachines tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm
- 找到虛擬機器的 IP 位址,例如
Vm Ip: 10.115.22.43
。 - 若要驗證 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
- 導覽到 https://grafana.system.tanzu,存取 Grafana 儀表板。
由於站台使用自我簽署憑證,您可能需要瀏覽特定於瀏覽器的安全性警告,然後才能存取儀表板。
疑難排解 Grafana 部署
如果部署或協調失敗,請執行 kubectl get pods -A
以檢視網繭狀態。contour
和 envoy
網繭應為 Running
狀態。如果網繭狀態為 ImagePullBackOff
或 ImageCrashLoopBackOff
,則無法提取容器映像。檢查資料值和延伸 YAML 檔案中的登錄 URL,並確保其正確無誤。
name-XXXX
是
kubectl get pods -A
執行所在的唯一網繭名稱:
kubectl logs pod/grafana-XXXX -c grafana -n tanzu-system-monitoring
更新 Grafana 延伸
更新部署到 Tanzu Kubernetes 叢集的 Grafana 延伸。
- 從
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
- 更新
grafana-data-values.yaml
中的 Grafana 資料值。請參閱設定 Grafana 延伸。 - 更新 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 延伸。 - 檢查該延伸的狀態。
kubectl get app grafana -n tanzu-system-monitoring
更新 Grafana 之後,狀態應變更為
Reconcile Succeeded
。 - 檢視詳細狀態並視需要進行疑難排解。
kubectl get app grafana -n tanzu-system-monitoring -o yaml
刪除 Grafana 延伸
tanzu-system-monitoring
。如果已將兩個延伸部署到相同的叢集,則必須先刪除每個延伸,然後再刪除命名空間。
- 將目錄變更為 Grafana 延伸。
cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
- 刪除 Grafana 應用程式。
kubectl delete app grafana -n tanzu-system-monitoring
預期結果:
app.kappctrl.k14s.io "grafana" deleted
。 - 確認 Grafana 應用程式是否已刪除。
kubectl get app grafana -n tanzu-system-monintoring
預期結果:
apps.kappctrl.k14s.io "grafana" not found
。 - 刪除
tanzu-system-monitoring
命名空間以及 Grafana 服務帳戶和角色物件。警告: 如果已部署 Prometheus,請勿執行此步驟。kubectl delete -f namespace-role.yaml
- 如果您要重新部署 Grafana,請移除密碼
grafana-data-values
。kubectl delete secret grafana-data-values -n tanzu-system-monitoring
預期結果:
secret "grafana-data-values" deleted
。
升級 Grafana 延伸
- 匯出 Grafana configmap 並將其儲存為備份。
kubectl get configmap grafana -n tanzu-system-monitoring -o 'go-template={{ index .data "grafana.yaml" }}' > grafana-configmap.yaml
- 刪除現有的 Grafana 延伸。請參閱刪除 Grafana 延伸。
- 部署 Grafana 延伸。請參閱部署 Grafana 延伸以實現視覺化和分析。
設定 Grafana 延伸
/tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana/grafana-data-values.yaml
中設定。
參數 | 說明 | 類型 | 預設值 |
---|---|---|---|
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 在此檔案中, |
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 編碼;用於解碼: |
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 | 產生的憑證金鑰 |