K8S多种时区问题解决方案

POD与NODE不一致

这种情况有三种方案:

  1. 在dockerFile中配置:
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
  1. 通过PodPreset配置(需要先启用PodPreset):
apiVersion: settings.k8s.io/v1alpha1
kind: PodPreset
metadata:
  name: tz-env
  namespace: unicode-pay
spec:
  selector:
    matchLabels:
  env:
    - name: TZ
      value: Asia/Shanghai
  1. 通过deployment设置:
  volumeMounts:
        - mountPath: /etc/localtime
          name: date-config
          readOnly: true
     .........
      volumes:
      - hostPath:
          path: /etc/localtime
        name: date-config
CronJob与Node不一致:

这个比较麻烦,需要改kubelet然后重启:
首先,进入目录/etc/kubernetes/manifests并将里面的四个文件etcd.yaml、kube-apiserver.yaml 、kube-controller-manager.yaml、kube-scheduler.yaml添加volume映射:

    volumeMounts:
    - mountPath: /etc/localtime
      name: date-config
      readOnly: true
     .........
  volumes:
  - hostPath:
      path: /etc/localtime
    name: date-config

然后通过systemctl restart kubelet.service重启完毕即可。

Java与POD不一致:

通过上述方式设置后若遇到POD时区已经正常,然而Javalog输出时区不一致时需要添加TZ变量来指定:

  env:
    - name: TZ
      value: Asia/Shanghai

亲测~

你可能感兴趣的:(K8S多种时区问题解决方案)