1.問題
kubectl exec -it podName -n namespace /bin/sh
進入容器運行 date
命令,發現時區不對是 UTC 時區,造成公司日誌系統無法採集日誌,需要改爲 UTC+8 北京時間。
2.解決
需要更改 Dockerfile,在 build image 時修改時區.
FROM alpine:3.11.6
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
ENV TZ=Asia/Shanghai
RUN apk update \
&& apk add tzdata \
&& echo "${TZ}" > /etc/timezone \
&& ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \
&& rm /var/cache/apk/*
...
我的基礎鏡像是 alpine ,可以使用以上的設置。
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
表示使用阿里鏡像包源,可以使安裝 tzdata 加速,不然很慢。
3.其他系統
基於 Debian
直接設置環境變量即可,默認安裝了 tzdata
ENV TZ=Asia/Shanghai
基於 Ubuntu
FROM ubuntu:bionic
ENV TZ=Asia/Shanghai
RUN echo "${TZ}" > /etc/timezone \
&& ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \
&& apt update \
&& apt install -y tzdata \
&& rm -rf /var/lib/apt/lists/*