首页 > 技术文章 > k8s podPreset预配置容器时区

RRecal 2021-12-16 23:41 原文

podPreset预配置容器时区

官方文档: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

 

 

 

 

 

 

 

推荐阅读