zoukankan      html  css  js  c++  java
  • [Kubernetes]Pod字段自动填充

      PodPreset(Pod预设置)在Kubernetes v1.11以后出现,开发人员只需要提交一个基本的Pod YAML,Kubernetes就可以自动给对应的Pod对象加上运维人员设定好的其他必要的信息(如labels,volumes)

    #开发人员编写
    apiVersion: v1
    kind: Pod
    metadata:
      name: website
      labels:
        app: website
        role: frontend
    spec:
      containers:
        - name: website
          image: nginx
          ports:
            - containerPort: 80

      这个Pod在运维人员看来,在生产环境里是根本不能用的,因此他需要定义一个PodPreset对象,在这个对象中,凡是他想在开发人员编写的Pod里追加的字段,都可以预先定义好

    ##运维人员编写
    apiVersion: settings.k8s.io/v1alpha1
    kind: PodPreset
    metadata:
      name: allow-database
    spec:
      selector:
        matchLabels:
          role: frontend
      env:
        - name: DB_PORT
          value: "6379"
      volumeMounts:
        - mountPath: /cache
          name: cache-volume
      volumes:
        - name: cache-volume
          emptyDir: {}

      然后运维人员先创建了这个PodPreset,然后开发人员才创建Pod

    $ kubectl create -f preset.yaml
    $ kubectl create -f pod.yaml

      Pod运行其起来后可以看到多了新添加的labels,env,volumes等定义,还被自动加上了一个annotation表示这个pod对象呗PodPreset改动过

    $ kubectl get pod website -o yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: website
      labels:
        app: website
        role: frontend
      annotations:
           podpreset.admission.kubernetes.io/podpreset-allow-database: "resource version"
    spec:
      containers:
        - name: website
          image: nginx
          volumeMounts:
            - mountPath: /cache
              name: cache-volume
          ports:
            - containerPort: 80
          env:
            - name: DB_PORT
              value: "6379"
      volumes:
        - name: cache-volume
          emptyDir: {}

      PodPreset只会在Pod API对象被创建之前追加在这个对象本身上,而不会影响任何Pod的控制器的定义。(如现在提交的是一个nginx-deployment,那么这个Deployment对象本身是永远不会被PodPreset改变的,被改变的知识这个Deployment创建出来的所有Pod)

      如果定义了同时作业与一个Pod对象的多个PodPreset,会发生什么呢?

      Kubernetes会合并这两个PodPreset要做的修改,如果它们要做的修改有冲突,这些冲突字段就不会被修改

  • 相关阅读:
    GitTortoise + Git Source Control Provider使用笔记
    Manage your ViewEngine(Wirte by myself)
    JSON DATE 转换标准的一些资料(收集)
    IE 6崩溃第一条禁用所有插件
    invalid label problem
    使用jQuery Html() 作为客户端htmlEncode的问题
    在WIN7下使用XP Mode安装IE6+
    Jquery simple friendly scroll
    Cygwin使用指南
    How to enable Plain Text Password
  • 原文地址:https://www.cnblogs.com/yuxiaoba/p/9751215.html
Copyright © 2011-2022 走看看