千家信息网

第二章 九析带你轻松完爆 k8s pod 时间设置

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本系列文章:第一章:九析带你轻松完爆 k8s pod 日期介绍第二章:九析带你轻松完爆 k8s pod 时间设置目录1 PodPreset 介绍2 PodPreset 开启2.1 PodPreset
千家信息网最后更新 2026年11月01日第二章 九析带你轻松完爆 k8s pod 时间设置

本系列文章:

第一章:九析带你轻松完爆 k8s pod 日期介绍

第二章:九析带你轻松完爆 k8s pod 时间设置

目录

1 PodPreset 介绍

2 PodPreset 开启

2.1 PodPreset 确认

2.2 PodPreset 开启

3 PodPreset 创建

4 PodPreset 验证


1 PodPreset 介绍

上小节中我们知道了 docker 容器默认会使用 UTC(国际标准时间),因为我们是 CST(北京时间),因此容器内时间会比北京时间晚了 8 个小时。

如何批量修改容器时间,使其跟我们使用的北京时间保持同步呢?可以使用 PodPreset 实现。

PodPreset 是 k8s API 资源,作用是在创建 Pod 时预设(preset)信息,比如 secrets、configmap、环境变量、volume mounts 等。有了 PodPreset,我们就不必显示为每个 Pod 编写所需信息,而只需执行 PodPreset API,自动将这些信息注入到指定的 Pod 容器中。

有关 PodPreset 说明,请点击查看。


2 PodPreset 开启

2.1 PodPreset 确认

PodPreset 在 K8S 中的资源类型为 settings.k8s.io/v1alpha1,默认并不开启。查看命令:

kubectl api-versions

或者:

kubectl get podpreset

2.2 PodPreset 开启

编辑 /etc/kubernetes/manifests/kube-apiserver.yaml 配置文件,在启动参数新增 runtime-config 选项;在原有 enable-admission-plugins 选项中追加 PodPreset。

--runtime-config=settings.k8s.io/v1alpha1=true // 新增

--enable-admission-plugins=NodeRestriction,PodPreset // 追加

需要注意:

第一:如果集群是多 master,那么每个 master 都要修改。

第二:修改完 kube-apiserver.yaml 文件后,apiserver 会自动重启,因此需要等一段时间


3 PodPreset 创建

编写资源文件 pod-preset.yaml:

apiVersion: settings.k8s.io/v1alpha1

kind: PodPreset

metadata:

name: pod-env-preset

namespace: default

spec:

selector:

matchLabels:

app: nginx

volumeMounts:

- mountPath: /etc/localtime

name: localtime

volumes:

- name: localtime

hostPath:

path: /etc/localtime

创建 Podpreset 资源:

kubectl apply -f pod-preset.yaml

查看 Podpreset 资源:

kubectl get podpreset


4 PodPreset 验证

特别注意 PodPreset 作用范围是 namespace。所以在创建 pod 资源时,namespace 要正确:

编写资源文件 pod.yaml :

apiVersion: v1

kind: Pod

metadata:

name: nginx

namespace: default

labels:

app: nginx

spec:

containers:

- name: nginx

image: nginx

ports:

- containerPort: 80

创建 pod 资源:

kubectl apply -f pod.yaml

创建 pod 成功后,进入 pod 容器查看时间:

kubectl exec -it nginx /bin/sh

自此,pod preset 时间修改被轻松完爆。

0