在 TSF 公有云上做了次实验,使用的是 TKE 初始化的计算节点。
修改配置
改动前:
[root@VM_0_8_centos ~]# ps aux | grep dockerd
root 2153 2.0 0.7 587840 62104 ? Ssl Mar11 450:45 /usr/bin/dockerd --log-driver=json-file --ip-masq=false --log-level=warn --storage-opt=overlay2.override_kernel_check=true --registry-mirror=https://mirror.ccs.tencentyun.com --log-opt=max-file=10 --log-opt=max-size=100m --live-restore=true --iptables=false --bip=169.254.32.1/28 --storage-driver=overlay2
[root@VM_0_8_centos ~]# cat /etc/docker/dockerd
IP_MASQ="--ip-masq=false"
LOG_LEVEL="--log-level=warn"
STORAGE_OPT="--storage-opt=overlay2.override_kernel_check=true"
LOG_DRIVER="--log-driver=json-file"
LOG_OPT="--log-opt=max-file=10 --log-opt=max-size=100m "
LIVE_RESTORE="--live-restore=true"
IPTABLES="--iptables=false"
BIP="--bip=169.254.32.1/28"
STORAGE_DRIVER="--storage-driver=overlay2"
REGISTRY_MIRROR="--registry-mirror=https://mirror.ccs.tencentyun.com"
该机器上无 /etc/docker/daemon.json
文件存在;~/.docker/config.json
中仅有 Auth 信息,无影响 logging 的配置。
改动 /etc/docker/dockerd
,将 LOG_DRIVER 配置为 journald:
[root@VM_0_8_centos ~]# cat /etc/docker/dockerd
IP_MASQ="--ip-masq=false"
LOG_LEVEL="--log-level=warn"
STORAGE_OPT="--storage-opt=overlay2.override_kernel_check=true"
# LOG_DRIVER="--log-driver=json-file"
LOG_DRIVER="--log-driver=journald"
# LOG_OPT="--log-opt=max-file=10 --log-opt=max-size=100m "
LIVE_RESTORE="--live-restore=true"
IPTABLES="--iptables=false"
BIP="--bip=169.254.32.1/28"
STORAGE_DRIVER="--storage-driver=overlay2"
REGISTRY_MIRROR="--registry-mirror=https://mirror.ccs.tencentyun.com"
重启 Docker Daemon:systemctl restart dockerd
,可以观察到启动的 dockerd 已经使用 journald 作为 log driver:
root 12450 6.2 0.5 684452 42704 ? Ssl 10:58 0:00 /usr/bin/dockerd --log-driver=journald --ip-masq=false --log-level=warn --storage-opt=overlay2.override_kernel_check=true --registry-mirror=https://mirror.ccs.tencentyun.com --live-restore=true --iptables=false --bip=169.254.32.1/28 --storage-driver=overlay2
观察容器信息
docker inspect
一个在改动前运行的容器:
docker inspect 303eff6f0c83
# 观察到 LogConfig 仍然是之前的 json-file:
"LogConfig": {
"Type": "json-file",
"Config": {
"max-file": "10",
"max-size": "100m"
}
}
在 K8S 上重新部署这个容器后:
docker inspect 36b4fc3bd0e9
# 观察到 LogConfig 变成 journald 了。。
"LogConfig": {
"Type": "journald",
"Config": {}
}
此时 /var/log/pods
下不再有此 pod 的日志;kubectl logs
也会报失败。