本文介绍如何在 Kubernetes 集群上以 Sidecar 方式安装 LogCollector。
通过 Sidecar 模式只能采集 LogCollector 所在 Pod 内的其他容器的文本日志,不支持采集容器标准输出。在安装的过程中,主要完成以下步骤:
登录需要安装 LogCollector 的 Kubernetes 集群后,参考以下步骤完成 Sidecar 方式部署 LogCollector。
创建一个 YAML 文件,文件名为 configmap.yaml
。
vim configmap.yaml
编辑 YAML 文件,并在 YAML 文件中输入以下脚本。
根据实际情况,在脚本中配置相关参数。
apiVersion: v1 kind: ConfigMap metadata: name: logcollector-config namespace: ${namespace} data: filebeat.yml: | filebeat: is_sidecar: true output.tls: endpoint: ${volc_endpoint} secret_id: ${your_ak} secret_key: ${your_sk} region: ${volc_region} label: ${your_labels} logging.level: info logging.to_files: true logging.files: name: filebeat keepfiles: 7 permissions: 0644
参数说明如下:
变量 | 示例 | 说明 |
---|---|---|
namespace | test1 | Sidecar POD 所在的命名空间。 |
endpoint | https://tls-cn-beijing.ivolces.com | 日志服务连接域名,即服务地址。 登录火山引擎控制台后,在日志项目的详情页中查看连接域名。日志服务支持的地域及对应服务地址请参考服务入口。 |
secret_id | AK******** | 火山引擎主账号或子账号的 Access Key ID。 登录火山引擎控制台后,在页面右上角下拉列表中单击密钥管理,根据页面提示查看并复制 Access Key ID。 |
secret_key | TUdZ******** | 火山引擎主账号或子账号的 Secret Access Key。 登录火山引擎控制台后,在页面右上角下拉列表中单击密钥管理,根据页面提示查看并复制 Secret Access Key。 |
region | cn-beijing | 日志项目所在的地域(Region)。 日志服务地域及对应ID请参考服务入口。 |
label | http_module | 机器的自定义标识。 说明 如果需要将此机器加入机器标识类型的机器组中,则需要填写机器标识。多个标识之间通过逗号(,)分隔。 |
执行以下命令,使 configmap.yaml
文件配置生效。
kubectl apply -f configmap.yaml
创建一个 YAML 文件。
其中,sidecar.yaml
为文件名,请根据实际情况替换。
vim sidecar.yaml
YAML 文件输入如下内容,并根据实际情况设置其中的参数。
apiVersion: v1 kind: Pod metadata: name: sidecar-demo namespace: ${namespace} spec: containers: - name: generator image: busybox:1.28 args: - /bin/sh - -c - > i=0; while true; do echo "$i: $(date)" >> /var/log/foo.log; i=$((i+1)); sleep 1; done volumeMounts: - name: ${emptydir-name} mountPath: /var/log - name: logcollector image: ${logcollector-image} imagePullPolicy: Always args: - /usr/local/container/filebeat-7.12.0/filebeat - -c - /usr/local/container/filebeat-7.12.0/etc/filebeat.yml livenessProbe: initialDelaySeconds: 10 periodSeconds: 10 exec: command: - sh - -c - | filebeat_num=`ps -ef 2>/dev/null | grep "filebeat" | grep -v "grep" | wc -l` if [ $filebeat_num -eq 0 ]; then return 1 fi resources: limits: cpu: '1' memory: 2Gi requests: cpu: '1' memory: 2Gi volumeMounts: - name: logcollector-config mountPath: /usr/local/container/filebeat-7.12.0/etc/ readOnly: true - name: ${emptydir-name} mountPath: /var/log - name: data mountPath: /usr/local/container/filebeat-7.12.0/data env: - name: "LOG_COLLECTOR_ENV_TAGS" value: "__pod_name__|__pod_ip__|__namespace__|__node_name__|__node_ip__" - name: "__pod_name__" valueFrom: fieldRef: fieldPath: metadata.name - name: "__pod_ip__" valueFrom: fieldRef: fieldPath: status.podIP - name: "__namespace__" valueFrom: fieldRef: fieldPath: metadata.namespace - name: "__node_name__" valueFrom: fieldRef: fieldPath: spec.nodeName - name: "__node_ip__" valueFrom: fieldRef: fieldPath: status.hostIP - name: MAX_MEM valueFrom: resourceFieldRef: containerName: logcollector resource: limits.memory - name: MAX_PROCS valueFrom: resourceFieldRef: containerName: logcollector resource: limits.cpu volumes: - name: logcollector-config configMap: defaultMode: 420 name: logcollector-config - name: ${emptydir-name} emptyDir: { } - name: data emptyDir: { }
变量 | 示例 | 说明 |
---|---|---|
${namespace} | test1 | Sidecar POD 所在的命名空间。 |
${logcollector-image} | logcollector-cn-beijing.cr.volces.com/logcollector/logcollector:latest | LogCollector 的镜像地址。最新版本 LogCollector 的镜像地址请参考LogCollector 镜像地址。 |
${emptydir-name} | varlog | LogCollector 容器和业务容器共享的 Pod 挂载目录。 |
执行以下命令,使 sidecar.yaml
文件配置生效。
其中,sidecar.yaml
为文件名,请根据实际情况替换。
kubectl apply -f sidecar.yaml
日志服务在各个区域提供的最新版本 LogCollector 镜像地址如下:
地域 | 镜像地址 |
---|---|
华北2(北京) |
|
华东2(上海) |
|
华南1(广州) |
|
柔佛(亚太东南) |
|