注册集群接入日志服务可以为分布在各处的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用户。
创建权限策略,限策略内容如下。具体操作,请参见创建自定义权限策略。
为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访问日志分析与监控。