Update kubernetes.md (#118)

This commit is contained in:
ethfoo 2022-11-15 10:27:45 +08:00 committed by GitHub
parent a47b870b01
commit 52c5c81390
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 91 additions and 3 deletions

View File

@ -80,11 +80,99 @@ extraVolumes:
name: docker
```
建议根据实际情况默认挂载以上目录。
特别强调的是由于Loggie本身也是容器化部署所以Loggie也需要挂载节点的一些volume来采集日志否则Loggie容器内部看不到日志文件更没办法去采集。
这里简单列举一下采集什么样的日志需要挂载什么路径:
1. 采集**stdout**标准输出Loggie会从/var/log/pods下采集所以Loggie需要挂载
```yaml
volumeMounts:
- mountPath: /var/log/pods
name: podlogs
- mountPath: /var/lib/docker
name: docker
volumes:
- hostPath:
path: /var/log/pods
type: DirectoryOrCreate
name: podlogs
- hostPath:
path: /var/lib/docker
type: DirectoryOrCreate
name: docker
```
但是有可能/var/log/pods下这些日志文件会软链接到docker的root路径下默认为`/var/lib/docker`,这个时候,需要同样挂载`/var/lib/docker`这个路径到Loggie中
```yaml
volumeMounts:
- mountPath: /var/log/pods
name: podlogs
volumes:
- hostPath:
path: /var/log/pods
type: DirectoryOrCreate
name: podlogs
```
另外如果非docker运行时比如使用containerd无需挂载`/var/lib/docker`Loggie会从`/var/log/pods`中寻找实际的标准输出路径。
2. 采集业务Pod使用**HostPath**挂载的日志:比如业务统一将日志挂载到了节点的`/data/logs`路径下,则需要挂载挂载该路径:
```yaml
volumeMounts:
- mountPath: /data/logs
name: logs
volumes:
- hostPath:
path: /data/logs
type: DirectoryOrCreate
name: logs
```
3. 采集业务Pod使用**EmptyDir**挂载的日志默认emtpyDir会在节点的`/var/lib/kubelet/pods`路径下所以需要Loggie挂载该路径。如果环境的kubelet修改了该路径配置这里需要同步修改:
```yaml
volumeMounts:
- mountPath: /var/lib/kubelet/pods
name: kubelet
volumes:
- hostPath:
path: /var/lib/kubelet/pods
type: DirectoryOrCreate
name: kubelet
```
4. 采集业务Pod使用**PV**挂载的日志和使用EmptyDir一致。
5. 采集业务Pod**无挂载**,同时设置了`rootFsCollectionEnabled: true`Loggie会自动从docker的rootfs里找到容器里的实际路径此时需要挂载docker的root路径
```yaml
volumeMounts:
- mountPath: /var/lib/docker
name: docker
volumes:
- hostPath:
path: /var/lib/docker
type: DirectoryOrCreate
name: docker
```
如果docker的实际root路径有修改则需要同步修改这里的volumeMount和volume比如修改了root路径为`/data/docker`,则挂载为:
```yaml
volumeMounts:
- mountPath: /data/docker
name: docker
volumes:
- hostPath:
path: /data/docker
type: DirectoryOrCreate
name: docker
```
其他:
- Loggie需要记录采集的文件状态(offset等),避免重启后从头开始采集文件,造成日志采集重复,默认挂载路径为/data/loggie.db所以挂载了`/data/loggie--{{ template "loggie.name" . }}`目录。
- 如果业务Pod使用hostPath挂载日志到节点需要Loggie挂载相同的路径。
- 因为Loggie需要采集容器标准输出的路径所以需要从节点/var/lib/docker或者/var/log/pods下采集日志如果环境中部署的docker修改了该路径请同步修改该挂载路径。如果非docker运行时比如使用containerd无需挂载/var/lib/dockerLoggie会从/var/log/pods中寻找实际的标准输出路径。
- 如果业务Pod使用emtpyDir挂载日志到节点默认emtpyDir会在节点的/var/lib/kubelet/pods路径下所以需要Loggie挂载该路径。如果环境的kubelet修改了该路径配置这里需要同步修改。
#### 调度