我目前正在本地虚拟机的kubernetes集群上部署openfaas 。发现发布函数后启动的容器的时区与宿主机不一致。我应该如何解决这个问题?
[root@k8s-node-1 ~]# date
# Host time
2021年 06月 09日 星期三 11:24:40 CST
[root@k8s-node-1 ~]# docker exec -it 5410c0b41f7a date
# Container time
Wed Jun 9 03:24:40 UTC 2021
我目前正在本地虚拟机的kubernetes集群上部署openfaas 。发现发布函数后启动的容器的时区与宿主机不一致。我应该如何解决这个问题?
[root@k8s-node-1 ~]# date
# Host time
2021年 06月 09日 星期三 11:24:40 CST
[root@k8s-node-1 ~]# docker exec -it 5410c0b41f7a date
# Container time
Wed Jun 9 03:24:40 UTC 2021
正如@coderanger在评论部分指出的那样,时区差异与OpenFaaS
.
这取决于您使用的图像,大多数图像使用UTC
时区。通常这应该不是问题,但在某些特殊情况下,您可能需要更改此时区。
如本文所述,您可以使用TZ
环境变量来设置容器的时区(也有其他方法可以更改时区)。
如果你有自己的Dockerfile
,你可以使用ENV指令来设置这个变量:
注意:这个tzdata
包必须安装在容器中才能设置TZ
变量。
$ cat Dockerfile
FROM nginx:latest
RUN apt-get install -y tzdata
ENV TZ="Europe/Warsaw"
$ docker build -t mattjcontainerregistry/web-app-1 .
$ docker push mattjcontainerregistry/web-app-1
$ kubectl run time-test --image=mattjcontainerregistry/web-app-1
pod/time-test created
$ kubectl exec -it time-test -- bash
root@time-test:/# date
Wed Jun 9 17:22:03 CEST 2021
root@time-test:/# echo $TZ
Europe/Warsaw