本系列文章:
nginx第一章:九析带你轻松完爆 k8s pod 日期介绍docker
第二章:九析带你轻松完爆 k8s pod 时间设置api
目录app
1 PodPreset 介绍ide
2 PodPreset 开启spa
2.1 PodPreset 确认
orm
2.2 PodPreset 开启
server
3 PodPreset 建立blog
4 PodPreset 验证ip
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 时间修改被轻松完爆。