註冊叢集接入Log Service可以為分布在各處的Kubernetes叢集提供統一的管理方式。本文介紹如何通過阿里雲Container ServiceKubernetes版中的應用將Log Service接入註冊叢集。
前提條件
已建立ACK One註冊叢集,並已將本機資料中心自建Kubernetes叢集接入ACK One註冊叢集。具體操作,請參見建立ACK One註冊叢集。
步驟一:為Log Service組件配置RAM許可權
通過onectl配置
-
在本地安裝配置onectl。具體操作,請參見通過onectl管理註冊叢集。
執行以下命令,為Log Service組件配置RAM許可權。
onectl ram-user grant --addon logtail-ds預期輸出:
Ram policy ack-one-registered-cluster-policy-logtail-ds granted to ram user ack-one-user-ce313528c3 successfully.
通過控制台配置
在註冊叢集中安裝組件之前,您需要在接入叢集中設定AccessKey用來訪問雲端服務的許可權。設定AccessKey之前,您需要建立RAM使用者並為其添加訪問相關雲資源的許可權。
建立自訂權限原則,策略內容如下。
-
為RAM使用者建立AccessKey。
警告建議您參見AccessKey網路訪問限制策略配置網路原則,將AccessKey調用來源控制在可信的網路環境內,提升AccessKey的安全性。
使用AccessKey在註冊叢集中建立名為
alibaba-addon-secret的Secret資源。執行以下命令建立Logtail組件使用的Secret。
kubectl -n kube-system 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資訊。
步驟二:安裝logtail-ds組件
通過onectl安裝
執行以下命令,安裝logtail-ds組件。
onectl addon install logtail-ds預期輸出:
Addon logtail-ds, version **** installed.通過控制台安裝
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,單擊組件管理。
在組件管理頁面,單擊日誌與監控頁簽,找到logtail-ds組件,在卡片右下方單擊安裝。
在提示對話方塊單擊確定。
(可選)步驟三:配置採集全域所有Pod的日誌輸出
文本日誌
如需配置全域Pod的文本日誌,您需要通過kubectl串連註冊叢集後,部署如下配置內容,採集全域所有Pod的文本日誌。
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
name: test-file # 資源名,在當前Kubernetes叢集內唯一。
spec:
project: k8s-log-c326bc86**** # 可選配置,Project名稱,可自訂,推薦使用[k8s-log-叢集ID]命名。
logstore: test-file # 必選配置,Logstore名稱,如果不存在,Log Service會自動建立。
logtailConfig: # Logtail配置。
inputType: file # 採集的資料來源類型,file表示文本日誌,plugin表示標準輸出。
configName: test-file # Logtail配置的名稱,必須與資源名(metadata.name)相同 。
inputDetail: # Logtail配置的詳細資料。
logType: common_reg_log # 通過極簡模式採集文本日誌。
logPath: /log/ # 記錄檔所在路徑。
filePattern: "*.log" # 記錄檔的名稱,支援萬用字元星號(*)和半形問號(?),例如log_*.log。
dockerFile: true # 採集容器內的檔案,dockerFile設定為true。
advanced: # 設定容器過濾條件。
k8s:
K8sNamespaceRegex: ^(default)$
K8sPodRegex: '^(nginx-log-demo.*)$'
K8sContainerRegex: ^(nginx-log-demo-0)$
IncludeK8sLabel:
job-name: "^(nginx-log-demo.*)$"更多詳細的參數說明,請參見Logtail配置(舊版)。
標準輸出
如需配置全域Pod的標準輸出,您需要通過kubectl串連註冊叢集後,部署如下配置內容,採集全域所有Pod的標準輸出。成功部署後,將會自動產生名為stdout-logstore的Logstore並將日誌採集進去。
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
# your config name, must be unique in you k8s cluster.
name: stdout-collector
spec:
# logstore name to upload log.
logstore: stdout-logstore
# logtail config detail
logtailConfig:
# docker stdout's input type is 'plugin'.
inputType: plugin
# logtail config name, should be same with [metadata.name].
configName: stdout-collector
inputDetail:
plugin:
inputs:
-
type: service_docker_stdout
detail:
# collect stdout and stderr
Stdout: true
Stderr: true
# collect all container's stdout except containers with "COLLECT_STDOUT_FLAG:false" in docker env config.步驟四:配置Log Service
關於建立應用時配置Log Service的具體操作,請參見建立應用時配置Log Service。
關於收集Ingress日誌的具體操作,請參見Nginx Ingress訪問日誌分析與監控。