简介
容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。2021 年成为国内唯一连续三年入选 Gartner 公共云容器报告的产品,2022 年国内唯一进入 Forrester 领导者象限。其整合了阿里云虚拟化、存储、网络和安全能力,助力企业高效运行云端 Kubernetes 容器化应用。
观测云支持 ACK 集群的接入,下面是入门接入的具体步骤。
前置条件
安装 ACK,本次使用版本 1.24.6-aliyun.1 。
注册「观测云账号」。
操作步骤
1 配置 yaml 文件
1.1 下载 datakit.yaml
登录「观测云」,点击「集成」模块,再点击左上角「DataKit」,选择「Kubernetes」,下载datakit.yaml。本次部署的是 datakit 1.4.19 。
1.2 替换 Token
登录「观测云」,进入「管理」模块,在「基本设置」里面复制 token,替换datakit.yaml文件中的ENV_DATAWAY环境变量的 value 值中的。
1.3 增加全局 Tag
针对一个工作空间接入多个 Kubernetes 集群指标,观测云提供了使用全局 Tag 的方式来进行区分。
当集群中只有一个采集对象,比如采集kubernetes API Server指标,集群中 DataKit 的数量会大于一个。为了避免指标采集重复,DataKit 开启了选举功能,这个时候区分集群的方式是增加
ENV_GLOBAL_ELECTION_TAGS;而针对非选举类的指标采集,比如为 Pod 增加 annotations 的方式进行指标采集,观测云提供了在ENV_GLOBAL_HOST_TAGS环境变量中增加全局 Tag 的方式。(注意:旧版本这个环境变量名称是 ENV_GLOBAL_TAGS。)
-name:ENV_GLOBAL_HOST_TAGSvalue:host=__datakit_hostname,host_ip=__datakit_ip,cluster_name_k8s=aliyun-ack
根据上面的说明,下面修改 yaml 文件。
在datakit.yaml文件中的ENV_GLOBAL_TAGS环境变量值最后增加cluster_name_k8s=aliyun-ack;
再增加环境变量ENV_GLOBAL_ELECTION_TAGS,这样测试环境的集群就是 aliyun-ack;
增加环境变量ENV_NAMESPACE值是 aliyun-ack。
2 部署 DataKit
修改完成 yaml 文件后,下面开始部署 DataKit。
(1)登录阿里云容器服务管理控制台。
(2)在控制台左侧导航栏中,单击「集群」。
(3)在「集群列表」页面中,单击目标集群名称或者目标集群右侧「操作」列下的「详情」。
(4)在集群管理页左侧导航栏单击「工作负载」 – 「自定义资源」,然后在右侧页面单击「使用 YAML 创建」。
选择相应的命名空间。选择所有名称空间。
在示例模板中,选择自定义。把 yaml 的内容贴入模板中, 点击「创建」。
在守护进程集下面可以查看到 DataKit 运行情况。
3 卸载 DataKit
DataKit 部署默认使用了 datakit 命名空间,卸载只需要删除守护进程集中的 datakit、datakit 命名空间下的资源及名为 datakit 的 ClusterRoleBinding。卸载的方式比较多,这里提供一种通过阿里云容器服务管理控制台卸载的方式。
3.1 删除 DaemonSet
在阿里云的容器管理控制台进入「工作负载」 – 「守护进程集」,找到 datakit,点击右边的「删除」。
3.2 删除命名空间
进入「节点管理」- 「命名空间与配额」,找到 datakit,点击右边的「删除」。
3.3 删除 Cluster Role
进入 「安全管理」 – 「角色」,在 Cluster Role 下面找到 datakit,点击右边的「删除」。
3.4 异常处理
如果在下次部署的时候提示如下错误,是因为阿里云控制台显示删除了,实际资源还存在的情况。
这时只需要把datakit.yaml文件中的如下部分删除即可重新部署。
1 apiVersion:rbac.authorization.k8s.io/v1 3 kind:ClusterRoleBinding 5 metadata: 7 name:datakit 9 roleRef:11 apiGroup:rbac.authorization.k8s.io13 kind:ClusterRole15 name:datakit17 subjects:19 -kind: ServiceAccount21 name:datakit 23 namespace: datakit
或者使用命令把ClusterRoleBinding删除,再部署 DataKit。
kubectldeleteclusterrolebindings datakit