pod的时区问题

在 Kubernetes 集群中运行的容器默认使用格林威治时间,而非宿主机时间。如果需要让容器时间与宿主机时间一致,可以使用 “hostPath” 的方式将宿主机上的时区文件挂载到容器中。

大部分 linux 发行版都通过 “/etc/localtime” 文件来配置时区,我们可以通过以下命令来获取时区信息:

1
2
# ls -l /etc/localtime
lrwxrwxrwx. 1 root root 32 Oct 15  2015 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai

通过上面的信息,我们可以知道宿主机所在的时区为 Asia/Shanghai,下面是一个 Pod 的 yaml 范例,说明如何将容器内的时区配置更改为 Asia/Shanghai,和宿主机保持一致。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
apiVersion: app/v1
kind: Pod
metadata:
 name: nginx
 labels:
   name: nginx
spec:
    containers:
    - name: nginx
      image: nginx
      imagePullPolicy: "IfNotPresent"
      resources:
        requests:
          cpu: 100m
          memory: 100Mi
      ports:
         - containerPort: 80
      volumeMounts:
      - name: timezone-config
        mountPath: /etc/localtime
    volumes:
      - name: timezone-config
        hostPath:
           path: /usr/share/zoneinfo/Asia/Shanghai

如果容器之前已经创建了,只需要在 yaml 文件中加上 volumeMountsvolumes 参数,再使用 kubectl apply 命令更新即可。

Licensed under CC BY-NC-SA 4.0
最后更新于 Jan 06, 2025 05:52 UTC
comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计
Caret Up