在 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 文件中加上 volumeMounts
及 volumes
参数,再使用 kubectl apply
命令更新即可。