本文介绍如何在 Kubernetes 集群上以 Sidecar 方式安装 LogCollector。
通过 Sidecar 模式安装的 LogCollector,只支持采集 LogCollector 所在 Pod 内的其他容器的文本日志,不支持采集容器标准输出;也不支持采集其他 Pod 内的容器文本日志或标准输出。
在安装的过程中,主要完成以下步骤:
登录需要安装 LogCollector 的 Kubernetes 集群后,参考以下步骤以 Sidecar 方式部署 LogCollector。
为 LogCollector 创建一个 Namespace。
创建一个 YAML 文件,名为 logcollector_ns.yaml
。
vim logcollector_ns.yaml
在 YAML 文件中输入如下内容。
apiVersion: v1 kind: Namespace metadata: name: <namespace>
参数说明如下:
参数 | 示例 | 说明 |
---|---|---|
namespace | kube-system | 命名空间名称。 |
执行如下命令使 Namespace 配置生效。
kubectl apply -f logcollector_ns.yaml
为 LogCollector 创建一个 ConfigMap。
创建一个 YAML 文件,文件名为 logcollector_config.yaml
。
vim logcollector_config.yaml
编辑 YAML 文件,并在 YAML 文件中输入以下脚本。
根据实际情况,在脚本中配置相关参数。
apiVersion: v1 kind: ConfigMap metadata: name: logcollector-config namespace: <namespace> data: logcollector.yml: | sidecar_mode: true output: tls: region: <region> endpoint: <endpoint> secret_id: <secret_id> secret_key: <secret_key> label: <label>
参数说明如下:
变量 | 示例 | 说明 |
---|---|---|
namespace | kube-system | 命名空间。输入您在1 创建 Namespace中设置的命名空间。 |
region | cn-beijing | 日志项目所在的地域。 |
endpoint | https://tls-cn-beijing.ivolces.com | 日志服务连接域名,即服务地址。 |
secret_id | AK******** | 火山引擎主账号或子账号的 Access Key ID。 |
secret_key | TUdZ******** | 火山引擎主账号或子账号的 Secret Access Key。 |
label | http_module | LogCollector 的 label 标识。
|
执行以下命令,使 ConfigMap 配置生效。
kubectl apply -f logcollector_config.yaml
为 LogCollector 创建一个 Sidecar,用于采集在同一 Pod 内的其他容器的文本日志。
创建一个 YAML 文件,名为 logcollector_sc.yaml
。
vim logcollector_sc.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: logs-dir mountPath: /var/log - name: logcollector image: <image> imagePullPolicy: Always args: - /usr/local/container/logcollector/logcollectord - -c - /usr/local/container/logcollector/etc/logcollector.yml - --httpprof - 0.0.0.0:6060 resources: limits: cpu: '2' memory: 2Gi requests: cpu: '1' memory: 1Gi volumeMounts: - name: logcollector-config mountPath: /usr/local/container/logcollector/etc readOnly: true - name: logcollector-data mountPath: /usr/local/container/logcollector/data - name: logs-dir mountPath: /var/log 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: logcollector-data emptyDir: { } - name: logs-dir emptyDir: { }
变量 | 示例 | 说明 |
---|---|---|
namespace | kube-system | 命名空间。输入您在1 创建 Namespace中设置的命名空间。 |
image | logcollector-cn-beijing.cr.volces.com/logcollector/logcollector:latest | LogCollector 的镜像地址。最新版本 LogCollector 的镜像地址请参考LogCollector 镜像地址。 |
执行以下命令,使 Sidecar 配置生效。
kubectl apply -f logcollector_sc.yaml
日志服务在各个区域提供的最新版本 LogCollector 镜像地址如下:
地域 | 镜像地址 |
---|---|
华北2(北京) |
|
华东2(上海) |
|
华南1(广州) |
|
柔佛(亚太东南) |
|