Kubernetes实战(二十二)-Pod时区修改

一般国内引用的基础镜像时区都是 UTC 时区,在此基础上,如果去容器查看日志的话就会发现和本地时间对不上,会导致一些问题出现,比如输出的日志时间和当前不一致,所以一般都会把操作系统或容器里的时区替换为 Shanghai。

修改Pod时区有两种方式:

  1. 修改镜像中的时区配置文件
  2. 将时区配置文件创建为 ConfigMap 然后挂载到容器中

方案一:修改镜像中的时区配置文件

修改前查看时区:

$ docker run -d --name=test_date nginx

$ docker exec -it test_date date
Wed Dec  6 09:16:58 UTC 2023

$ date
2023年12月 6日 星期三 17时17分07秒 CST

创建 Dockerfile 文件

$ vim Dockerfile
FROM nginx
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
$ docker build -t nginx_test_date -f Dockerfile .

$ docker run -d --name=nginx_test_date nginx_test_date
9a9f51208801e4db73671175f7fb812ceae8148b6e8f90999cb2a4cbb2d14e96

$ docker exec -it nginx_test_date date
Wed Dec  6 17:23:37 CST 2023

$ date
2023年12月 6日 星期三 17时23分52秒 CST

方案二:将时区配置文件创建为 ConfigMap 然后挂载到容器中

创建 ConfigMap 

➜ kubectl create configmap shanghai --from-file=/usr/share/zoneinfo/Asia/Shanghai

创建 nginx.yaml 文件

$ vim nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        imagePullPolicy: IfNotPresent
        volumeMounts:
        - name: shanghai
          mountPath: "/etc/localtime"
          subPath: "Shanghai"
      volumes:
      - name: shanghai
        configMap:
          name: shanghai
测试时区。
$ kubectl apply -f nginx.yaml
deployment.apps/nginx created

$ kubectl get pod
NAME                    READY   STATUS    RESTARTS   AGE
nginx-58b89cf8d-gndj6   1/1     Running   0          2s

$ kubectl exec -it nginx-58b89cf8d-gndj6 date
Wed Dec  6 17:46:53 CST 2023 #与当前时间一致

$ date
2023年12月 6日 星期三 17时46分58秒 CST

你可能感兴趣的:(#,Kubernetes系列,kubernetes,容器,云原生)