全部產品
Search
文件中心

Container Service for Kubernetes:將阿里雲Prometheus接入註冊叢集

更新時間:Jun 19, 2024

註冊叢集接入阿里雲Prometheus能為分布在各處的Kubernetes叢集提供統一的管理方式。本文介紹如何將阿里雲Prometheus接入至註冊叢集中。

前提條件

步驟一:為ack-arms-prometheus組件配置RAM許可權

通過onectl配置

  1. 在本地安裝配置onectl。具體操作,請參見通過onectl管理註冊叢集

  2. 執行以下命令,為ack-arms-prometheus組件配置RAM許可權。

    onectl ram-user grant --addon arms-prometheus

    預期輸出:

    Ram policy ack-one-registered-cluster-policy-arms-prometheus granted to ram user ack-one-user-ce313528c3 successfully.

通過控制台配置

如果您使用公網接入註冊叢集,在註冊叢集中安裝組件前,您需要在接入叢集中設定AccessKey用來訪問雲端服務的許可權。如果您是使用內網接入註冊叢集,配置AccessKey步驟可跳過。

執行以下命令,查看叢集是否使用內網接入註冊叢集。

kubectl -n kube-system get deploy ack-cluster-agent -o=jsonpath='{.spec.template.spec.containers[0].env[?(@.name=="INTERNAL_ENDPOINT")].value}'
  • 若輸出為true:表示使用內網接入。

  • 若輸出為false:表示使用公網接入。您需要按照以下方式配置AccessKey。

展開查看如何配置AccessKey

  1. 建立RAM使用者。具體操作,請參見建立RAM使用者

  2. 建立自訂權限原則。具體操作,請參見建立自訂權限原則。ack-arms-prometheus組件需要的權限原則內容如下。

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "arms:Describe*",
                    "arms:List*",
                    "arms:Get*",
                    "arms:Search*",
                    "arms:Check*",
                    "arms:Query*",
                    "arms:ListEnvironments",
                    "arms:DescribeAddonRelease",
                    "arms:InstallAddon",
                    "arms:DeleteAddonRelease",
                    "arms:ListEnvironmentDashboards",
                    "arms:ListAddonReleases",
                    "arms:CreateEnvironment",
                    "arms:UpdateEnvironment",
                    "arms:InitEnvironment",
                    "arms:DescribeEnvironment",
                    "arms:InstallEnvironmentFeature",
                    "arms:ListEnvironmentFeatures"
                ],
                "Resource": "*",
                "Effect": "Allow"
            }
        ]
    }
  3. 為RAM使用者添加許可權。具體操作,請參見為RAM使用者授權

  4. 為RAM使用者建立AccessKey。具體操作,請參見擷取AccessKey

  5. 使用AccessKey在註冊叢集中建立名為alibaba-addon-secret的Secret資源。

    執行以下命令,建立ack-arms-prometheus組件使用的Secret。

    kubectl -n arms-prom create secret generic alibaba-addon-secret --from-literal='access-key-id=<your AccessKey ID>' --from-literal='access-key-secret=<your AccessKey Secret>'
    說明

    <your AccessKey ID><your AccessKey Secret>為上一步擷取的AccessKey資訊。

步驟二:安裝ack-arms-prometheus組件

通過onectl安裝

執行以下命令,安裝ack-arms-prometheus組件。

onectl addon install arms-prometheus

預期輸出:

Addon arms-prometheus, version **** installed.

通過控制台安裝

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面中,單擊目的地組群名稱,然後在左側導覽列中,選擇應用 > Helm

    Helm頁面存在arms-prometheus和arms-prom安裝記錄,請刪除對應的安裝記錄後,再按照後續操作重新接入。

  3. 在叢集管理頁左側導覽列,選擇營運管理 > 組件管理

  4. 組件管理頁面,單擊日誌與監控頁簽。

  5. 找到ack-arms-prometheus卡片,單擊右下角的安裝。然後單擊確定

安裝完成後,您可登入Prometheus控制台。進入對應叢集執行個體,查看監控資料和定義警示規則。更多資訊,請參見阿里雲Prometheus監控建立Prometheus監控警示

如何切換ack-arms-prometheus組件採集CAdvisor 10250連接埠資料

ack-arms-promethues組件預設採集CAdvisor 10255連接埠資料,如果您的註冊叢集只開啟了kubelet 10250連接埠,可以按照以下步驟切換ack-arms-promethues組件的採集連接埠。

  1. 使用以下YAML內容,在註冊叢集中部署配置ServiceMonitor。

    展開查看YAML內容

    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      annotations:
        arms.prometheus.io/discovery: 'true'
      name: arms-prom-cadvisor-10250
      namespace: arms-prom
    spec:
      endpoints:
        - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
          honorLabels: true
          port: https-metrics
          relabelings:
            - sourceLabels:
                - __metrics_path__
              targetLabel: metrics_path
          scheme: https
          tlsConfig:
            caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
            insecureSkipVerify: true
        - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
          honorLabels: true
          path: /metrics/cadvisor
          port: https-metrics
          relabelings:
            - sourceLabels:
                - __metrics_path__
              targetLabel: metrics_path
          scheme: https
          tlsConfig:
            caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
            insecureSkipVerify: true
        - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
          honorLabels: true
          path: /metrics/probes
          port: https-metrics
          relabelings:
            - sourceLabels:
                - __metrics_path__
              targetLabel: metrics_path
          scheme: https
          tlsConfig:
            caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
            insecureSkipVerify: true
      jobLabel: k8s-app
      namespaceSelector:
        matchNames:
          - kube-system
      selector:
        matchLabels:
          k8s-app: kubelet

    等待大約需要15s~1 min後,進行採集資料驗證。

  2. 驗證切換連接埠後的採集資料。

    1. 登入ARMS控制台

    2. 在左側導覽列選擇Prometheus監控 > 執行個體列表,進入可觀測監控 Prometheus 版的執行個體列表頁面。

    3. Prometheus監控頁面的頂部功能表列,選擇叢集所在的地區。

    4. 執行個體列表頁面,單擊目標執行個體名稱進入整合中心頁面,然後在左側導覽列單擊服務發現,單擊Targets頁簽。

      查看是否已存在arms-prom/arms-prom-cadvisor-10250採集任務,且採集任務狀態是否正常。採集資料