快速上手:采集Kubernetes Pod日志
下面将带你演示在一个Kubernetes集群中,通过创建LogConfig CRD快速采集Pod的日志。
1. 准备Kubernetes环境
可以使用现有Kubernetes集群,或者部署Kubernetes。本地推荐使用Kind搭建Kubernetes集群。
本文的操作需要在本地使用:
请确保本地有kubectl和helm可执行命令。
2. 部署Loggie DaemonSet
你可以在 installation 页面查看所有发布的部署chart。
可以选择:
下载chart再部署
helm pull https://github.com/loggie-io/installation/releases/download/v1.0.0/loggie-v1.0.0.tgz && tar xvzf loggie-v1.0.0.tgz
尝试修改一下其中的values.yaml。
然后部署安装:
helm install loggie ./loggie -nloggie --create-namespace
当然你也可以:
直接部署:
helm install loggie -nloggie --create-namespace https://github.com/loggie-io/installation/releases/download/v1.0.0/loggie-v1.0.0.tgz
部署有问题?
如果尝试部署后出现问题,或者在你的环境中以下演示操作未成功,请参考Kubernetes下部署Loggie,修改相关配置。
3. 采集日志
Loggie定义了Kubernetes CRD LogConfig,一个LogConfig表示采集一类Pods的日志采集任务。
3.1 创建被采集的Pods
我们先创建一个Pod用于被采集日志的对象。
kubectl create deploy nginx --image=nginx
接下来将采集这个Nginx Pod的标准输出stdout日志。
3.2 定义输出源Sink
接着,我们创建一个Loggie定义的CRD Sink实例,表明日志发送的后端。
为了方便演示,这里我们将日志发送至Loggie Agent自身的日志中并打印。
cat << EOF | kubectl apply -f -
apiVersion: loggie.io/v1beta1
kind: Sink
metadata:
name: default
spec:
sink: |
type: dev
printEvents: true
EOF
可以通过kubectl get sink
查看到已创建的Sink。
3.3 定义采集任务
Loggie定义CRD LogConfig,表示一个日志采集任务。我们创建一个LogConfig示例如下所示:
cat << EOF | kubectl apply -f -
apiVersion: loggie.io/v1beta1
kind: LogConfig
metadata:
name: nginx
namespace: default
spec:
selector:
type: pod
labelSelector:
app: nginx
pipeline:
sources: |
- type: file
name: mylog
paths:
- stdout
sinkRef: default
EOF
创建完之后,我们可以使用kubectl get lgc
查看到创建的CRD实例。
同时,我们还可以通过kubectl describe lgc nginx
查看LogConfig的事件,以获取最新的状态。
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal syncSuccess 52s loggie/kind-control-plane Sync type pod [nginx-6799fc88d8-5cb67] success
上面的nginx LogConfig通过其中的spec.selector来匹配采集哪些Pod的日志,这里我们使用app: nginx
选择了刚才创建的nginx Pod。
spec.pipeline则表示Loggie的Pipeline配置,我们只采集容器标准输出的日志,所以在paths中填写stdout
即可。
4. 查看日志
首先找到所在的nginx pod节点:
kubectl get po -owide -l app=nginx
然后我们找到该节点的Loggie:
kubectl -nloggie get po -owide |grep ${node}
可以通过:
kubectl -nloggie logs -f ${logge-pod}
查看Loggie打印出的日志,里面展示了采集到的nginx标准输出日志。
更多
上文只是一个简单的快速演示,部署出现问题或者想了解更多Kubernetes下Loggie如何使用?
- 更全面的部署介绍:Kubernetes下部署Loggie
- Kubernetes下日志采集最佳实践:Kubernetes下的日志采集