注冊集群接入日志服務可以為分布在各處的Kubernetes集群提供統一的管理方式。本文介紹如何通過阿里云容器服務Kubernetes版中的應用將日志服務接入注冊集群。
前提條件
通過容器服務Kubernetes版接入一個注冊的Kubernetes集群。具體操作,請參見創建注冊集群。
通過kubectl連接注冊集群。具體操作,請參見獲取集群KubeConfig并通過kubectl工具連接集群。
步驟一:為日志服務組件配置RAM權限
通過onectl配置
在本地安裝配置onectl。具體操作,請參見通過onectl管理注冊集群。
執行以下命令,為日志服務組件配置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用戶。具體操作,請參見創建RAM用戶。
創建權限策略,限策略內容如下。具體操作,請參見創建自定義權限策略。
{ "Version": "1", "Statement": [ { "Action": [ "log:CreateProject", "log:GetProject", "log:DeleteProject", "log:CreateLogStore", "log:GetLogStore", "log:UpdateLogStore", "log:DeleteLogStore", "log:CreateConfig", "log:UpdateConfig", "log:GetConfig", "log:DeleteConfig", "log:CreateMachineGroup", "log:UpdateMachineGroup", "log:GetMachineGroup", "log:DeleteMachineGroup", "log:ApplyConfigToGroup", "log:GetAppliedMachineGroups", "log:GetAppliedConfigs", "log:RemoveConfigFromMachineGroup", "log:CreateIndex", "log:GetIndex", "log:UpdateIndex", "log:DeleteIndex", "log:CreateSavedSearch", "log:GetSavedSearch", "log:UpdateSavedSearch", "log:DeleteSavedSearch", "log:CreateDashboard", "log:GetDashboard", "log:UpdateDashboard", "log:DeleteDashboard", "log:CreateJob", "log:GetJob", "log:DeleteJob", "log:UpdateJob", "log:PostLogStoreLogs", "log:CreateSortedSubStore", "log:GetSortedSubStore", "log:ListSortedSubStore", "log:UpdateSortedSubStore", "log:DeleteSortedSubStore", "log:CreateApp", "log:UpdateApp", "log:GetApp", "log:DeleteApp", "cs:DescribeTemplates", "cs:DescribeTemplateAttribute" ], "Resource": [ "*" ], "Effect": "Allow" } ]
為RAM用戶添加權限。具體操作,請參見為RAM用戶授權。
為RAM用戶創建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.
通過控制臺安裝
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在組件管理頁面,單擊日志與監控頁簽,找到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名稱,如果不存在,日志服務會自動創建。
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.
步驟四:配置日志服務
關于創建應用時配置日志服務的具體操作,請參見創建應用時配置日志服務。
關于收集Ingress日志的具體操作,請參見Nginx Ingress訪問日志分析與監控。