kubernetes 开启Pod Preset 解决时区问题

默认的情况,在K8S里启动一个容器,该容器的设置的时区是UTC0,但是对于很多客户而言,其主机环境并不在UTC0。例如中国客户在UTC8。如果不把容器的时区和主机主机设置为一致,查找日志的时候非常不便,并且在监控数据方便也会出现较大差异,容易造成误解。

通过Pod Preset预设置时区环境变量

Pod Preset目前还是alpha阶段,默认是没有激活的,所以需要通过以下步骤激活:
我的k8s集群是通过kubeadm安装完成的,这里已此为例,kubeadm安装的k8s(API Server,Scheduler,Controller)都是通过Static Pod的方式用kubelet启动,所以需要该对应的yaml激活Pod Preset:

编辑/etc/kubernetes/manifests/kube-apiserver.yaml,在- command:下的配置添加

使用docker ps -a |grep apiserver查看状态,API Server会自动重启,待重启成功

kubectl可以查询Pod Preset。在开关没有开启成功前,是无法调用以下命令的

在default命名空间下创建Pod Preset对象

通过命令行创建一个容器,并查看相应信息

从输出变量可以看出来,容器的默认时区已经更改为Asia/Shanghai

可以看到时间也已经正常显示

至此,我们顺利完成了容器时区的自动配置。Pod Preset的预设功能还是非常便利的,目前这块还在演进中,但是已经能大大简化了相关的管理工作,将这些配置从开发者手中解脱出来,变成系统管理配置。

参考文档

Pod Preset: https://kubernetes.io/docs/concepts/workloads/pods/podpreset/

此条目发表在kubernetes分类目录。将固定链接加入收藏夹。