为k8s里运行的容器配置时区
需求背景
我们经常会用一些诸如emqx,nats等第三方中间件,这些中间件往往默认时区就是UTC时区,这其实也没关系,但是打印出来的日志,就会与我们的上海时区差8小时,为了解决这个问题,我的简单解决办法,就是把服务器的时区通过可读的方式挂载进去。
操作步骤
1、把服务器的时区设置成上海时区。ubuntu18系统时区设置方法如下:
timedatectl set-timezone Asia/Shanghai
2、修改emqx的StatefulSet.yaml 。注意挂载服务器的/etc/localtime到容器中,一定要设置readOnly: true,避免被误修改服务器的时区
# Source: emqx/templates/statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: lzw-emqx
name: lzw-emqx
spec:
serviceName: lzw-emqx
replicas: 1
updateStrategy:
type: RollingUpdate
selector:
matchLabels:
app: lzw-emqx
template:
metadata:
labels:
app: lzw-emqx
spec:
containers:
- image: emqx/emqx:4.2.4-alpine-amd64
imagePullPolicy: IfNotPresent
name: lzw-emqx
envFrom:
- configMapRef:
name: lzw-emqx
volumeMounts:
- name: lzw-emqx-log
mountPath: /opt/emqx/log
- name: sfere-time-zone
mountPath: /etc/localtime
readOnly: true
readinessProbe:
httpGet:
path: /status
port: 8081
initialDelaySeconds: 15
periodSeconds: 2
restartPolicy: Always
volumes:
- name: lzw-emqx-log
emptyDir: {}
- name: sfere-time-zone
hostPath:
path: /etc/localtime