注册集群接入阿里云Prometheus能为分布在各处的Kubernetes集群提供统一的管理方式。本文介绍如何将阿里云Prometheus接入至注册集群中。
前提条件
您已通过容器服务Kubernetes版接入一个注册的Kubernetes集群。具体操作,请参见创建注册集群并接入本地数据中心集群。(推荐)方式一:使用onectl CLI配置接入
关于onectl CLI配置具体操作,请参见使用onectl配置注册集群。
onectl配置完成后,执行以下命令,即可自动配置和安装ack-arms-prometheus组件。
onectl addon install ack-arms-prometheus
方式二:手工配置接入
步骤1:授予ack-arms-prometheus组件的云服务访问权限
如果您使用公网接入注册集群,在注册集群中安装组件前,您需要在接入集群中设置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
- 创建RAM用户。具体操作,请参见创建RAM用户。
- 创建自定义权限策略。具体操作,请参见创建自定义权限策略。ack-arms-prometheus组件需要的权限策略内容如下。
{ "Version": "1", "Statement": [ { "Action": [ "arms:Describe*", "arms:List*", "arms:Get*", "arms:Search*", "arms:Check*", "arms:Query*" ], "Resource": "*", "Effect": "Allow" } ] }
- 为RAM用户添加权限。具体操作,请参见为RAM用户授权。
- 为RAM用户创建AccessKey。具体操作,请参见获取AccessKey。
- 使用AccessKey在注册集群中创建名为alibaba-addon-secret的Secret资源。
执行以下命令,创建Logtail组件使用的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信息。
步骤2:安装ack-arms-prometheus组件
- 登录容器服务管理控制台,在左侧导航栏中选择集群。
- 在集群列表页面中,单击目标集群名称,然后在左侧导航栏中,选择 。若Helm页面存在arms-prometheus和arms-prom安装记录,请删除对应的安装记录后,再按照后续操作重新接入。
- 在集群管理页左侧导航栏中,选择 。
- 在组件管理页面,单击日志与监控页签。
- 找到ack-arms-prometheus卡片,单击右下角的安装。然后单击确定。
如何切换ack-arms-prometheus组件采集CAdvisor 10250端口数据
ack-arms-promethues组件默认采集CAdvisor 10255端口数据,如果您的注册集群只打开了kubelet 10250端口,可以按照以下步骤切换ack-arms-promethues组件的采集端口。
- 使用以下YAML内容,在注册集群中部署配置ServiceMonitor。
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后,进行采集数据验证。 - 验证切换端口后的采集数据。