本文介紹如何在ACK Serverless叢集中配置CRD並進行應用日誌採集管理。
前提條件
已建立ACK Serverless叢集。具體操作,請參見建立叢集。
已安裝ACK Virtual Node組件,且版本≥2.7.0。關於ACK Virtual Node的更多資訊,請參見ACK Virtual Node。
注意事項
通過SLS CRD開啟日誌採集僅對後續建立的ECI Pod生效。如果想要採集存量Pod的日誌,需要對存量Pod進行一次滾動發布。
配置日誌採集
在叢集內部署alibaba-log-controller組件後,您可以通過日誌採集配置CRD(AliyunLogConfig CRD)來配置日誌採集。
部署alibaba-log-controller組件
在叢集頁面,單擊目的地組群名稱,進入叢集管理頁面。
在叢集中部署alibaba-log-controller組件。
在叢集管理頁左側導覽列,選擇營運管理>組件管理。
單擊日誌與監控頁簽,找到alibaba-log-controller卡片,然後單擊安裝。
在彈出的對話方塊中,單擊確定。
安裝完成後,alibaba-log-controller卡片右上方會顯示已安裝。
建立Logtail採集配置
串連ACK Serverless叢集。
編寫日誌採集配置CRD的YAML設定檔。
重要建立日誌採集配置CRD後,您可以在Log Service控制台查看產生的日誌庫及logtail配置。通過CRD方式建立的配置,在控制台上對其修改不會同步到CRD中。如果後續需要更新配置,請直接修改CRD資源,不要在控制台操作,避免導致配置不一致。
建立日誌採集配置CRD。
命令樣本如下。Logtail配置生效後,Logtail開始採集各個容器上的標準輸出或文本日誌,並發送到Log Service中。
kubectl apply -f log-file.yaml kubectl apply -f log-stdout.yaml重要採集到日誌後,您需要先建立索引,才能在Logstore中查詢和分析日誌。具體操作,請參見建立索引。
測試日誌採集
建立日誌採集配置CRD後,Log Service會自動採集後續建立的Pod的日誌。您可以建立以下應用來測試日誌採集效果。
建立應用。
以Deployment為例,YAML內容樣本如下,樣本中容器啟動後會執行相關命令,不斷列印標準輸出和記錄檔。
apiVersion: apps/v1 kind: Deployment metadata: name: eci-sls-demo labels: app: sls spec: replicas: 1 selector: matchLabels: app: sls template: metadata: name: sls-test labels: app: sls alibabacloud.com/eci: "true" spec: containers: - args: - -c - mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;done command: - /bin/sh image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/busybox:1.30 imagePullPolicy: Always name: busybox將以上YAML儲存為test-sls-crd.yaml,執行以下命令建立應用。
kubectl create -f test-sls-crd.yaml確認應用狀態。
kubetcl get pod預期返回:
NAME READY STATUS RESTARTS AGE eci-sls-demo-7bf8849b9f-cgpbn 1/1 Running 0 2m14s查看日誌。
單擊目標Project名稱。
找到目標日誌庫,單擊日誌庫名稱查看日誌。
文本日誌

標準輸出

關閉日誌採集
建立日誌採集配置CRD後,系統會自動採集所有合格Pod的日誌。對於一些不想要採集日誌的Pod,您可以配置Annotation(k8s.aliyun.com/eci-sls-enable: "false")來關閉日誌採集,避免系統自動建立Logtail而造成資源浪費。
Annotation請添加在Pod的metadata下,例如:建立Deployment時,Annotation需添加在spec>template>metadata下。
僅支援在建立ECI Pod時添加ECI相關Annotation來生效ECI功能,更新ECI Pod時添加或者修改ECI相關Annotation均不會生效。
配置樣本如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: eci-sls-demo2
labels:
app: sls
spec:
replicas: 1
selector:
matchLabels:
app: sls
template:
metadata:
name: sls-test
labels:
app: sls
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-sls-enable: "false" #關閉日誌採集
spec:
containers:
- args:
- -c
- mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;
done
command:
- /bin/sh
image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
imagePullPolicy: Always
name: busybox