官方文档:https://v1-19.docs.kubernetes.io/zh/docs/tasks/inject-data-application/podpreset/
PodPreset是干什么的?
pod的一些预配置
开启podprepreset
cat /etc/kubernetes/cfg/kube-apiserver.conf#kueb-apiserver启动参数存放文件
--enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,NodeRestriction,PodPreset、 \
#修改
--runtime-config=settings.k8s.io/v1alpha1=true \
#在末尾添加
示例
由namespace隔离,对当前namepsaces生效,这里是以ratel为例的
[root@master02 opt]# cat /etc/timezone
Asia/shanghai
apiVersion: settings.k8s.io/v1alpha1
kind: PodPreset
metadata:
name: allow-database
namespace: default
spec:
selector:
matchLabels:
podpreset: "true" #可以加一个标签,在我们需要使用以下设置的时候给pod打上一个podpreset="true" 的标签就可以
env:
- name: "LANG"
value: "C.UTF8"
# - name: DB_PORT
# value: "6379"
volumeMounts:
- mountPath: /usr/share/zoneinfo/Asia/Shanghai
name: tz-config
readOnly: true
- mountPath: /etc/localtime
name: tz-config
readOnly: true
- mountPath: /etc/timezone
name: timezone
readOnly: true
volumes:
- name: tz-config
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
- name: timezone
hostPath:
path: /etc/timezone
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations: {}
labels:
app: test
name: test
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: test
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: test
spec:
affinity: {}
containers:
- command:
- sh
- -c
- sleep 333333
env:
- name: TZ
value: Asia/Shanghai
- name: LANG
value: C.UTF-8
image: nginx
imagePullPolicy: IfNotPresent
lifecycle: {}
name: test
ports:
- containerPort: 8080
name: web
protocol: TCP
resources:
limits:
cpu: 100m
memory: 100Mi
requests:
cpu: 10m
memory: 10Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /usr/share/zoneinfo/Asia/Shanghai
name: tz-config
- mountPath: /etc/localtime
name: tz-config
- mountPath: /etc/timezone
name: timezone
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
type: ""
name: tz-config
- hostPath:
path: /etc/timezone
type: ""
name: timezone
验证:
[root@master02 opt]# kubectl get pod
NAME READY STATUS RESTARTS AGE
test-5949c7bf67-jk6hq 1/1 Running 0 14m
[root@master02 opt]# date
Thu Dec 16 21:14:48 CST 2021
[root@master02 opt]# kubectl exec -it test-5949c7bf67-jk6hq -- sh
# date
Thu Dec 16 21:14:52 CST 2021
# cat /etc/timezone
Asia/shanghai