SuperAPI AI 工具集

k8s-timezone-config

部署与运维

查看项目

更新于 10-15 23:42

技能介绍

用途:Kubernetes Pod 默认使用 UTC,日志与应用时间戳显示 +0000 而非巴西本地时间(-0300)。本技能通过为容器添加 TZ 环境变量统一时区。

主要能力与用法:在 Helm values.yaml 中通过 extraEnv 添加 name: TZ、value: America/Sao_Paulo;对含多容器的 Deployment(如 API + 前端)需为所有容器分别设置;原生 Deployment 与 StatefulSet 在 spec.template.spec.containers[].env 下添加同样的 TZ 项。常用应用如 Dependency-Track 需 apiServer.extraEnv 与 frontend.extraEnv 都配置,Grafana 用 env 或 extraEnvVars,Loki、Prometheus、DefectDojo、PostgreSQL 各有对应配置位置。

验证:重启 Pod 后可用 kubectl exec -it <pod-name> -n <namespace> -- date 查看,应显示 -03 偏移;日志时间戳也会从 +0000 变为 -0300。GitOps 流程为编辑 argo-cd-helm-values 下 values.yaml、提交推送、由 ArgoCD 自动同步。

限制与注意:TZ 改动需重启 Pod 才生效;须为所有容器及 sidecar、init 容器设置;CronJob 调度始终按 UTC(0 8 * * * 实际在 05:00 BRT 触发),K8s 1.27+ 可用 spec.timeZone;kubectl logs 时间戳来自容器运行时,仍为 UTC;distroless 和 scratch 镜像无 /usr/share/zoneinfo,会静默回退 UTC,需自带 tzdata 或挂载;Java 应用还需在 JAVA_OPTS 中加 -Duser.timezone=America/Sao_Paulo;PostgreSQL 的 TZ 只设 OS 时钟,数据库时区需在 postgresql.conf 另设。