本系列文章:
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 時間修改被輕鬆完爆。