將應(yīng)用實(shí)時監(jiān)控服務(wù)ARMS接入注冊集群
應(yīng)用實(shí)時監(jiān)控服務(wù)ARMS能夠?qū)?yīng)用進(jìn)行全方位的監(jiān)控,幫助您全面掌握應(yīng)用的運(yùn)行狀態(tài)。您可以在注冊集群中安裝ARMS應(yīng)用監(jiān)控組件,將ARMS服務(wù)安裝到已注冊的Kubernetes集群中,使用ARMS對集群中的應(yīng)用進(jìn)行監(jiān)控。
前提條件
通過容器服務(wù)Kubernetes版接入一個注冊的Kubernetes集群。具體操作,請參見創(chuàng)建注冊集群。
通過kubectl連接注冊集群。具體操作,請參見獲取集群KubeConfig并通過kubectl工具連接集群。
步驟一:安裝ARMS應(yīng)用監(jiān)控組件
通過onectl安裝
在本地安裝配置onectl。具體操作,請參見通過onectl管理注冊集群。
執(zhí)行以下命令,為ack-onepilot組件配置RAM權(quán)限。
onectl ram-user grant --addon ack-onepilot
預(yù)期輸出:
Ram policy ack-one-registered-cluster-policy-ack-onepilot granted to ram user **** successfully.
執(zhí)行以下命令,安裝ack-onepilot組件。
onectl addon install ack-onepilot
預(yù)期輸出:
Addon ack-onepilot, version **** installed.
通過控制臺安裝
配置RAM權(quán)限。在注冊集群中安裝組件前,您需要在接入集群中設(shè)置AccessKey用來獲取訪問云服務(wù)的權(quán)限。
創(chuàng)建RAM用戶。具體操作,請參見創(chuàng)建RAM用戶。
創(chuàng)建自定義權(quán)限策略。具體操作,請參見創(chuàng)建自定義權(quán)限策略。
ack-onepilot
組件需要的權(quán)限策略內(nèi)容如下:{ "Version": "1", "Statement": [ { "Action": "arms:*", "Resource": "*", "Effect": "Allow" } ] }
為RAM用戶授權(quán),將上一步驟創(chuàng)建的自定義權(quán)限策略授予RAM用戶。具體操作,請參見為RAM用戶授權(quán)。
為RAM用戶創(chuàng)建AccessKey。具體操作,請參見創(chuàng)建AccessKey。
使用AccessKey在注冊集群中創(chuàng)建名為
alibaba-addon-secret
的Secret資源。執(zhí)行以下命令,創(chuàng)建
ack-onepilot
組件使用的Secret。說明執(zhí)行命令前,需要將命令中的
access-key-id
和access-key-secret
的參數(shù)值替換為您在上一步驟中創(chuàng)建的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>'
安裝組件
ack-onepilot
組件。登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群。
在集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇 。
在組件管理頁面,單擊日志與監(jiān)控頁簽,找到ack-onepilot組件,單擊右下角的安裝
在安裝組件 ack-onepilot對話框中,設(shè)置相關(guān)配置項,然后單擊確定。
步驟二:為Java應(yīng)用開啟ARMS應(yīng)用監(jiān)控
如需在創(chuàng)建新應(yīng)用的同時開啟ARMS應(yīng)用監(jiān)控,請完成以下操作。
在容器服務(wù)管理控制臺左側(cè)導(dǎo)航欄單擊集群,在集群列表頁面上的目標(biāo)集群右側(cè)操作列單擊應(yīng)用管理。
在無狀態(tài)頁面右上角單擊使用YAML創(chuàng)建資源。
選擇示例模板,并在模板(YAML格式)中將以下
labels
添加到spec.template.metadata層級下。labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" #請將<your-deployment-name>替換為您的應(yīng)用名稱。 armsSecAutoEnable: "on" #如果需要接入應(yīng)用安全,則需要配置此參數(shù)。
說明應(yīng)用安全詳情,請參見什么是應(yīng)用安全。
應(yīng)用安全計費(fèi)信息,請參見計費(fèi)說明。
創(chuàng)建一個無狀態(tài)(Deployment)應(yīng)用并開啟ARMS應(yīng)用監(jiān)控的完整YAML示例模板如下:
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 ---
在無狀態(tài)頁面的目標(biāo)應(yīng)用操作列下方,單擊ARMS控制臺,可跳轉(zhuǎn)至ARMS控制臺對您的應(yīng)用進(jìn)行服務(wù)治理。
后續(xù)操作
為集群下所有應(yīng)用卸載探針
通過onectl卸載
執(zhí)行以下命令,卸載ack-onepilot組件。
onectl addon uninstall ack-onepilot
預(yù)期輸出:
Addon ack-onepilot uninstalled.
重啟業(yè)務(wù)Pod。
通過控制臺卸載
登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群。
在集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇 。
在組件管理頁面,單擊日志與監(jiān)控頁簽,找到ack-onepilot組件,單擊右下角的卸載。
在彈出對話框中單擊確定。
重啟業(yè)務(wù)Pod。
為集群下指定應(yīng)用卸載探針
登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群。
在集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇 。
在無狀態(tài)頁面的目標(biāo)應(yīng)用操作列下方,單擊更多>查看Yaml,在編輯YAML對話框中,刪除上文安裝探針步驟二中添加的
labels
,然后單擊更新。重啟業(yè)務(wù)Pod。