簡介
容器服務 Kubernetes 版(簡稱 ACK)提供高性能可伸縮的容器應用管理能力,支援企業級容器化應用的全生命周期管理。2021 年成為國内唯一連續三年入選 Gartner 公共雲容器報告的産品,2022 年國内唯一進入 Forrester 上司者象限。其整合了阿裡雲虛拟化、存儲、網絡和安全能力,助力企業高效運作雲端 Kubernetes 容器化應用。
觀測雲支援 ACK 叢集的接入,下面是入門接入的具體步驟,如果需要接入名額、鍊路、日志等更多内容,請參考其它文檔。
前置條件
- 安裝 ACK,本次使用版本 1.24.6-aliyun.1 。如果沒有建立,請參考建立 Kubernetes 專有版叢集和建立 Kubernetes 托管版叢集。
- 注冊 觀測雲賬号
操作步驟
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_TAGS
value: 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。
- name: ENV_NAMESPACE
value: aliyun-ack
- name: ENV_GLOBAL_ELECTION_TAGS
value: cluster_name_k8s=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 檔案中的如下部分删除即可重新部署。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: datakit
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: datakit
subjects:
- kind: ServiceAccount
name: datakit
namespace: datakit
或者使用指令把 ClusterRoleBinding 删除,再部署 DataKit。
kubectl delete clusterrolebindings datakit