已部署Kubernetes集群或minikubearrow-up-right
具备访问Kubernetes集群的kubectlarrow-up-right
1. 创建部署iLogtail的命名空间
将下面内容保存为ilogtail-ns.yaml
apiVersion: v1 kind: Namespace metadata: name: ilogtail
您也可以直接从下面的地址下载示例配置。
wget https://raw.githubusercontent.com/alibaba/ilogtail/main/example_config/start_with_k8s/ilogtail-ns.yaml
应用上述配置
kubectl apply -f ilogtail-ns.yaml
2. 创建配置iLogtail的ConfigMap和Secret
将下面内容保存为ilogtail-user-configmap.yaml。该ConfigMap后续将作为配置目录挂载到iLogtail容器中,因此可包含多个采集配置。
将下面内容保存为ilogtail-secret.yaml。该Secret为可选,当需要将日志写入SLS时会用到。
3. 创建iLogtail DaemonSet
将下面内容保存为ilogtail-daemonset.yaml。
4. 部署用来测试的nginx
将下面内容保存为nginx-deployment.yaml。
5. 发送请求构造示例日志
6. 查看采集到的测试容器标准输出日志
结果为
查看更多K8s采集日志模版(从容器中采集文件日等): https://github.com/alibaba/ilogtail/blob/main/k8s_templatesarrow-up-right
了解采集配置结构: 采集配置
查看采集配置项: 数据流水线组件概览
参考更多可组合的日志采集和处理配置样例: https://github.com/alibaba/ilogtail/blob/main/example_configarrow-up-right
Last updated 2 years ago
apiVersion: v1 kind: ConfigMap metadata: name: ilogtail-user-cm namespace: ilogtail data: nginx_stdout.yaml: | enable: true inputs: - Type: service_docker_stdout Stderr: false Stdout: true # only collect stdout IncludeK8sLabel: app: nginx # choose containers with this label processors: - Type: processor_regex # structure log SourceKey: content Regex: '([\d\.:]+) - (\S+) \[(\S+) \S+\] \"(\S+) (\S+) ([^\\"]+)\" (\d+) (\d+) \"([^\\"]*)\" \"([^\\"]*)\" \"([^\\"]*)\"' Keys: - remote_addr - remote_user - time_local - method - url - protocol - status - body_bytes_sent - http_referer - http_user_agent - http_x_forwarded_for flushers: - Type: flusher_stdout OnlyStdout: true
apiVersion: v1 kind: Secret metadata: name: ilogtail-secret namespace: ilogtail type: Opaque data: access_key: # base64 accesskey id if you want to flush to SLS access_key_id: # base64 accesskey secret if you want to flush to SLS
wget https://raw.githubusercontent.com/alibaba/ilogtail/main/example_config/start_with_k8s/ilogtail-user-configmap.yaml wget https://raw.githubusercontent.com/alibaba/ilogtail/main/example_config/start_with_k8s/ilogtail-secret.yaml
kubectl apply -f ilogtail-user-configmap.yaml kubectl apply -f ilogtail-secret.yaml
apiVersion: apps/v1 kind: DaemonSet metadata: name: ilogtail-ds namespace: ilogtail labels: k8s-app: logtail-ds spec: selector: matchLabels: k8s-app: logtail-ds template: metadata: labels: k8s-app: logtail-ds spec: tolerations: - operator: Exists # deploy on all nodes containers: - name: logtail env: - name: ALIYUN_LOG_ENV_TAGS # add log tags from env value: _node_name_|_node_ip_ - name: _node_name_ valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: _node_ip_ valueFrom: fieldRef: apiVersion: v1 fieldPath: status.hostIP - name: cpu_usage_limit # iLogtail's self monitor cpu limit value: "1" - name: mem_usage_limit # iLogtail's self monitor mem limit value: "512" - name: default_access_key_id # accesskey id if you want to flush to SLS valueFrom: secretKeyRef: name: ilogtail-secret key: access_key_id optional: true - name: default_access_key # accesskey secret if you want to flush to SLS valueFrom: secretKeyRef: name: ilogtail-secret key: access_key optional: true image: >- sls-opensource-registry.cn-shanghai.cr.aliyuncs.com/ilogtail-community-edition/ilogtail:latest imagePullPolicy: IfNotPresent resources: limits: cpu: 1000m memory: 1Gi requests: cpu: 400m memory: 384Mi volumeMounts: - mountPath: /var/run # for container runtime socket name: run - mountPath: /logtail_host # for log access on the node mountPropagation: HostToContainer name: root readOnly: true - mountPath: /usr/local/ilogtail/checkpoint # for checkpoint between container restart name: checkpoint - mountPath: /usr/local/ilogtail/user_yaml_config.d # mount config dir name: user-config readOnly: true dnsPolicy: ClusterFirstWithHostNet hostNetwork: true volumes: - hostPath: path: /var/run type: Directory name: run - hostPath: path: / type: Directory name: root - hostPath: path: /etc/ilogtail-ilogtail-ds/checkpoint type: DirectoryOrCreate name: checkpoint - configMap: defaultMode: 420 name: ilogtail-user-cm name: user-config
wget https://raw.githubusercontent.com/alibaba/ilogtail/main/example_config/start_with_k8s/ilogtail-daemonset.yaml
kubectl apply -f ilogtail-daemonset.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: nginx namespace: default labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: 'nginx:latest' name: nginx ports: - containerPort: 80 name: http protocol: TCP resources: requests: cpu: 100m memory: 100Mi
wget https://raw.githubusercontent.com/alibaba/ilogtail/main/example_config/start_with_k8s/nginx-deployment.yaml
kubectl apply -f nginx-deployment.yaml
kubectl exec nginx-<pod-id> -- curl localhost/hello/ilogtail
kubectl logs ilogtail-ds-<pod-id> -n ilogtail
2022-07-14 16:36:50 {"_time_":"2022-07-15T00:36:48.489153485+08:00","_source_":"stdout","_image_name_":"docker.io/library/nginx:latest","_container_name_":"nginx","_pod_name_":"nginx-76d49876c7-r892w","_namespace_":"default","_pod_uid_":"07f75a79-da69-40ac-ae2b-77a632929cc6","_container_ip_":"10.223.0.154","remote_addr":"::1","remote_user":"-","time_local":"14/Jul/2022:16:36:48","method":"GET","url":"/hello/ilogtail","protocol":"HTTP/1.1","status":"404","body_bytes_sent":"153","http_referer":"-","http_user_agent":"curl/7.74.0","http_x_forwarded_for":"-","__time__":"1657816609"}