容器常见问题
Pod的时区问题
在Kubernetes集群中运行的容器默认使用格林威治时间,而非宿主机时间。如果需要让容器时间与宿主机时间一致,可以使用hostPath
的方式将宿主机上的时区文件挂载到容器中。
大部分linux发行版都通过/etc/localtime
文件来配置时区,我们可以通过以下命令来获取时区信息:
# 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,和宿主机保持一致。
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 命令更新即可。