pods 和 kubernetes 主机之间的日期和时间同步

date and time synchronization among the pods and host in kubernetes

我在 kubernetes 集群中遇到日期和时间问题。使用 kubeadm 在数据中心设置集群。我的主机服务器时间是使用 NTP 同步的,尽管我在配置集群后已经同步了它。现在在我的集群中创建的所有 pods 都会有错误的时间。所以它的原因似乎是 docker 采用 UTC 时区。对于临时解决方案,我在我们创建的 pods 中使用 volume mount /etc/localtime 和 hostmeachine,但对于我使用来自 helm repo 的 helm 安装的应用程序来说似乎不可行。有什么办法可以解决这个问题吗?我不希望每个 pods 都在正确的时间安装卷。 docker 是否可以通过任何方式从主机获取时区。

仅供参考,k8s 集群是在 CentOS 7 上设置的。它们是在 EXSi 上创建的虚拟机。谢谢

没坏。它按设计工作。

容器中的时钟与主机上的时钟相同,因为它由主机的内核控制。

时区由 OS 层控制,因此容器内部可能有所不同。 解决方法是使用特定时区配置和 hostPath 卷来设置特定时区。

apiVersion: v1
kind: Pod
metadata:
  name: busybox-sleep
spec:
  containers:
  - name: busybox
    image: busybox
    args:
    - sleep
    - "1000000"
    volumeMounts:
    - name: tz-config
      mountPath: /etc/localtime
  volumes:
    - name: tz-config
      hostPath:
        path: /usr/share/zoneinfo/Europe/Prague
        type: File

因为您使用的是 helm,所以您应该查看您正在使用的图像的文档,并查找您可以更改的时区变量,以便您可以将其放入 value.yaml 或使用 --set 部署时的选项。

我推荐阅读Kubernetes Container Timezone Management