通过环境变量修改pod时间

容器
问题描述

kubernetes部署的pod与北京时间相差8小时。

问题原因

在kubernetes集群中运行的容器默认会使用UTC时间,即与北京时间会有8小时时差。而有些分布式系统对于时间极为敏感,不允许出现时间误差。出现这种情况往往是因为使用dockerhub等仓库上的镜像导致,如果用户自己制作镜像会修改时间。

解决方案

通过环境变量的方式修改时间。

部署nginx容器用于测试

1.准备nginx deployment文件

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        name: nginx

2.部署nginx

kubectl apply -f xxx.yaml

3.查看pod所在宿主机,并查看宿主机时间

kubectl get pod -owide |grep nginx

登陆pod所在宿主机查看时间

ssh hostip
date

4.查看pod时间

kubectl exec -it -n default <podname> -c nginx -- date

5.修改nginx deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        env:
          - name: TZ
            value: Asia/Shanghai

6.重新部署nginx,并查看pod时间

kubectl apply -f xxx.yaml
kubectl exec -it -n default <podname> -c nginx -- date
224
1
0
0
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论