全部產品
Search
文件中心

Container Service for Kubernetes:將應用即時監控服務ARMS接入註冊叢集

更新時間:Jun 19, 2024

應用即時監控服務ARMS能夠對應用進行全方位的監控,協助您全面掌握應用的運行狀態。您可以在註冊叢集中安裝ARMS應用監控組件,將ARMS服務安裝到登入的Kubernetes叢集中,使用ARMS對叢集中的應用進行監控。

前提條件

步驟一:安裝ARMS應用監控組件

通過onectl安裝

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

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

    onectl ram-user grant --addon ack-onepilot

    預期輸出:

    Ram policy ack-one-registered-cluster-policy-ack-onepilot granted to ram user **** successfully.
  3. 執行以下命令,安裝ack-onepilot組件。

    onectl addon install ack-onepilot

    預期輸出:

    Addon ack-onepilot, version **** installed.

通過控制台安裝

  1. 配置RAM許可權。在註冊叢集中安裝組件前,您需要在接入叢集中設定AccessKey用來擷取訪問雲端服務的許可權。

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

    2. 建立自訂權限原則。具體操作,請參見建立自訂權限原則

      ack-onepilot組件需要的權限原則內容如下:

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": "arms:*",
                  "Resource": "*",
                  "Effect": "Allow"
              }
          ]
      }
    3. 為RAM使用者授權,將上一步驟建立的自訂權限原則授予RAM使用者。具體操作,請參見為RAM使用者授權

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

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

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

      說明

      執行命令前,需要將命令中的access-key-idaccess-key-secret的參數值替換為您在上一步驟中建立的AccessKey ID和AccessKey Secret。

      kubectl -n ack-onepilot create secret generic alibaba-addon-secret --from-literal='access-key-id=<your AccessKey ID>' --from-literal='access-key-secret=<your AccessKey Secret>'
  2. 安裝組件ack-onepilot組件。

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

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > 組件管理

    3. 組件管理頁面,單擊日誌與監控頁簽,找到ack-onepilot組件,單擊右下角的安裝

    4. 安裝組件 ack-onepilot對話方塊中,設定相關配置項,然後單擊確定

步驟二:為Java應用開啟ARMS應用監控

如需在建立新應用的同時開啟ARMS應用監控,請完成以下操作。

  1. Container Service管理主控台左側導覽列單擊叢集,在叢集列表頁面上的目的地組群右側操作列單擊應用管理

  2. 無狀態頁面右上方單擊使用YAML建立資源

  3. 選擇樣本模板,並在模板(YAML格式)中將以下labels添加到spec.template.metadata層級下。

    labels:
      armsPilotAutoEnable: "on"
      armsPilotCreateAppName: "<your-deployment-name>"    #請將<your-deployment-name>替換為您的應用程式名稱。
      armsSecAutoEnable: "on"    #如果需要接入應用安全,則需要配置此參數。
    說明

    YAML Example

    建立一個無狀態(Deployment)應用並開啟ARMS應用監控的完整YAML樣本模板如下:

    展開查看完整樣本YAML檔案(Java)

    apiVersion: v1
    kind: Namespace
    metadata:
      name: arms-demo
    ---
    apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
    kind: Deployment
    metadata:
      name: arms-springboot-demo
      namespace: arms-demo
      labels:
        app: arms-springboot-demo
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: arms-springboot-demo
      template:
        metadata:
          labels:
            app: arms-springboot-demo
            armsPilotAutoEnable: "on"
            armsPilotCreateAppName: "arms-k8s-demo"
        spec:
          containers:
            - resources:
                limits:
                  cpu: 0.5
              image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
              imagePullPolicy: Always
              name: arms-springboot-demo
              env:
                - name: SELF_INVOKE_SWITCH
                  value: "true"
                - name: COMPONENT_HOST
                  value: "arms-demo-component"
                - name: COMPONENT_PORT
                  value: "6666"
                - name: MYSQL_SERVICE_HOST
                  value: "arms-demo-mysql"
                - name: MYSQL_SERVICE_PORT
                  value: "3306"
    ---
    apiVersion: apps/v1 
    kind: Deployment
    metadata:
      name: arms-springboot-demo-subcomponent
      namespace: arms-demo
      labels:
        app: arms-springboot-demo-subcomponent
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: arms-springboot-demo-subcomponent
      template:
        metadata:
          labels:
            app: arms-springboot-demo-subcomponent
            armsPilotAutoEnable: "on"
            armsPilotCreateAppName: "arms-k8s-demo-subcomponent"
        spec:
          containers:
            - resources:
                limits:
                  cpu: 0.5
              image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
              imagePullPolicy: Always
              name: arms-springboot-demo-subcomponent
              env:
                - name: SELF_INVOKE_SWITCH
                  value: "false"
                - name: MYSQL_SERVICE_HOST
                  value: "arms-demo-mysql"
                - name: MYSQL_SERVICE_PORT
                  value: "3306"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        name: arms-demo-component
      name: arms-demo-component
      namespace: arms-demo
    spec:
      ports:
        # the port that this service should serve on
        - name: arms-demo-component-svc
          port: 6666
          targetPort: 8888
      # label keys and values that must match in order to receive traffic for this service
      selector:
        app: arms-springboot-demo-subcomponent
    ---
    apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
    kind: Deployment
    metadata:
      name: arms-demo-mysql
      namespace: arms-demo
      labels:
        app: mysql
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mysql
      template:
        metadata:
          labels:
            app: mysql
        spec:
          containers:
            - resources:
                limits:
                  cpu: 0.5
              image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-demo-mysql:v0.1
              name: mysql
              ports:
                - containerPort: 3306
                  name: mysql
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        name: mysql
      name: arms-demo-mysql
      namespace: arms-demo
    spec:
      ports:
        # the port that this service should serve on
        - name: arms-mysql-svc
          port: 3306
          targetPort: 3306
      # label keys and values that must match in order to receive traffic for this service
      selector:
        app: mysql
    ---

無狀態頁面的目標應用操作列下方,單擊ARMS控制台,可跳轉至ARMS控制台對您的應用進行服務治理。

後續操作

  • 為叢集下所有應用卸載探針

    通過onectl卸載

    1. 執行以下命令,卸載ack-onepilot組件。

      onectl addon uninstall ack-onepilot

      預期輸出:

      Addon ack-onepilot uninstalled.
    2. 重啟業務Pod。

    通過控制台卸載

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

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > 組件管理

    3. 組件管理頁面,單擊日誌與監控頁簽,找到ack-onepilot組件,單擊右下角的卸載

    4. 在彈出對話方塊中單擊確定

    5. 重啟業務Pod。

  • 為叢集下指定應用卸載探針

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

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載 > 無狀態

    3. 無狀態頁面的目標應用操作列下方,單擊更多>查看Yaml,在編輯YAML對話方塊中,刪除上文安裝探針步驟二中添加的labels,然後單擊更新

    4. 重啟業務Pod。