Kubernetes YAML 文件全字段详解

Kubernetes YAML 文件全字段详解

Deployment yaml

其中主要参数都在podTemplate 中,DaemonSet StatefulSet 中的pod部分一样。

apiVersion: v1
kind: Deployment
metadata:
  name:  <deploy-name>
  namespace: <ns-name>
  labels:
    <key>: <value>
spec:
  replicas: 2
  selector:
    matchLabels: #管理的有该label 的pod
      <key>: <value>
  revisionHistoryLimit: 5
  progressDeadlineSeconds: 600  #可选参数;deployment 卡住执行出现错误时,等待deployment 进行的时间秒数,deployment controller会继续重试。设置该值必须大于.spec.minReadySeconds。
  minReadySeconds: 0  #可选参数,默认为0(pod 在ready后就被认为可用),pod中容器没有crash 并被认为可用状态的最小秒数。
  strategy:   #更新的策略,默认为rollingUpdate , 可选Recreate 在创建新pod之前会杀掉所有已经存在的pod
    rollingUpdate:
      maxUnavailable: 25%   #最大不可用比例,可绝对值,可比例
      maxSurge: 25%     #最大更新pod量,可绝对值,可比例,按上取整
  rollbackTo:  #可选参数,用来配置deploy回退的配置,设置该参数将触发回退操作,每次回退完成会清楚该值
    revision: 0  #默认为0,用来指定回退到的revision,0意味着回退到历史中最老的revision
  paused: false  #可选参数 默认非paused,boolean值。用来指定暂停和恢复deploy,paused 和 非paused的唯一区别在于,paused后,所有对PodTemplateSpec的修改都不会触发新的rollout
  template: #和pod template中一样
    metadata:
      name: <pod-name>
      labels:
        <key>: <value> #需要和sepc.selector.matchLabels 中的lable 匹配,否则rs 服务管理到该pod
    spec:
      containers:
      - name:
        image:
        imagePullPolicy: Alway # Alway,IfNotPresent,Never
        command:
        args:
        workingDir: #指定容器的工作目录
        resources: #容器运行的资源申请和限制
          requests: #申请
            cpu:
            memory:
          limits: #最大限制
            cpu:
            memory:
        ports: #容器应用运行暴露的port
        - name:
          containerPort:
          protocol:
        env: # 指定容器运行的环境变量
        - name:
          value:
        volumeMounts: # 挂载外部文件到容器
        - name: <volume-name> # volume 的 name
          mountPath: /home # 挂载到容器中的指定路径
        livenessProbe:  #存活探针
          httpGet: #http检测形式
            path: </path>  #路径
            port: <containerPort>  #端口
            httpHeaders:  #需要设置请求头时的设置
            - name: <key>
              value: <value>
          initialDelaySeconds: 20 #开始探针检测的等待秒数,根据业务需求具体启动时间来设置,过长会造成应用长时间无法提供服务,过短会杀死掉没有启动完全的应用
          #exec:  探针的exec形式
          #  command:
          #  - cmd 指令
          #  - args 参数
          periodSeconds: 10 # 执行探测的间隔
          timeoutSeconds: 3  # 探测超时的时间
          successThreshold: 1 # 默认为1,失败状态后的服务检测成功1次后就识别为成功
          failureThreshold: 3  # 成功状态后的服务,检测3次失败后为失败
        readinessProbe: # 就绪探针
          tcpSocket: #tcp 端口探测模式,kubelet 执行检测工作
            port: <containerPort> #需要探测容器端口
        terminationMessagePath: /dev/terminatino-log
        terminationMessagePolicy: File
        securityContext: {} #容器上下文权限
        lifecycle: # 生命周期
          postStart:
            exec:
              command:
          preStop:
            exec:
              command:
        stdin: true #标准输入,是否开启
        stdinOnce: true #stdin 为true 后,可以有打开多个通道连接容器,当stdinOnce为true,只能有一个通道连接,并且关闭通道后,stdin也将关闭,直到容器重启
        tty: true #是否开启交互窗口,加stdin 是docker -it 一样的功能
      hostAliases: # 追加pod 中/etc/hosts 文件内容
      - ip: "10.1.2.3"
        hostnames:
        - "foo.remote"
        - "bar.remote"
      shareProcessNamespace: true  # 几乎不用参数,pod 中所有容器共享进程空间
      nodeSelector: #指定调度节点标签,用节点label 匹配
        <key>: <value>
      dnsPolicy: ClusterFirst  # dns策略
      restartPolicy: Always #Always,Never,Failure 重启策略,总是、永不、失败后重启
      schedulerName: default-scheduler  # 默认调度策略
      securityContext: {} #pod上下文权限
      terminatinoGracePeriodSeconds: 30  # 默认30 ,优雅关闭时间

securityContext Pod 权限

控制面 字段名称
已授权容器的运行 privileged
为容器添加默认的一组能力 defaultAddCapabilities
为容器去掉某些能力 requiredDropCapabilities
容器能够请求添加某些能力 allowedCapabilities
控制卷类型的使用 volumes
主机网络的使用 hostNetwork
主机端口的使用 hostPorts
主机 PID namespace 的使用 hostPID
主机 IPC namespace 的使用 hostIPC
主机路径的使用 allowedHostPaths
容器的 SELinux 上下文 seLinux
用户 ID runAsUser
配置允许的补充组 supplementalGroups
分配拥有 Pod 数据卷的 FSGroup fsGroup
必须使用一个只读的 root 文件系统 readOnlyRootFilesystem

Pod 安全策略 由设置和策略组成,它们能够控制 Pod 访问的安全特征。这些设置分为如下三类:

  • 基于布尔值控制 :这种类型的字段默认为最严格限制的值。
  • 基于被允许的值集合控制 :这种类型的字段会与这组值进行对比,以确认值被允许。
  • 基于策略控制 :设置项通过一种策略提供的机制来生成该值,这种机制能够确保指定的值落在被允许的这组值中。

RunAsUser

  • MustRunAs - 必须配置一个 range。使用该范围内的第一个值作为默认值。验证是否不在配置的该范围内。
  • MustRunAsNonRoot - 要求提交的 Pod 具有非零 runAsUser 值,或在镜像中定义了 USER 环境变量。不提供默认值。
  • RunAsAny - 没有提供默认值。允许指定任何 runAsUser

SELinux

  • MustRunAs - 如果没有使用预分配的值,必须配置 seLinuxOptions。默认使用 seLinuxOptions。验证 seLinuxOptions
  • RunAsAny - 没有提供默认值。允许任意指定的 seLinuxOptions ID。

SupplementalGroups

  • MustRunAs - 至少需要指定一个范围。默认使用第一个范围的最小值。验证所有范围的值。
  • RunAsAny - 没有提供默认值。允许任意指定的 supplementalGroups ID。

FSGroup

  • MustRunAs - 至少需要指定一个范围。默认使用第一个范围的最小值。验证在第一个范围内的第一个 ID。
  • RunAsAny - 没有提供默认值。允许任意指定的 fsGroup ID。

控制卷

通过设置 PSP 卷字段,能够控制具体卷类型的使用。当创建一个卷的时候,与该字段相关的已定义卷可以允许设置如下值:

  1. azureFile
  2. azureDisk
  3. flocker
  4. flexVolume
  5. hostPath
  6. emptyDir
  7. gcePersistentDisk
  8. awsElasticBlockStore
  9. gitRepo
  10. secret
  11. nfs
  12. iscsi
  13. glusterfs
  14. persistentVolumeClaim
  15. rbd
  16. cinder
  17. cephFS
  18. downwardAPI
  19. fc
  20. configMap
  21. vsphereVolume
  22. quobyte
  23. projected
  24. portworxVolume
  25. scaleIO
  26. storageos
  27. * (allow all volumes)

对新的 PSP,推荐允许的卷的最小集合包括:configMap、downwardAPI、emptyDir、persistentVolumeClaim、secret 和 projected。

主机网络

  • HostPorts , 默认为 emptyHostPortRange 列表通过 min(包含) and max(包含) 来定义,指定了被允许的主机端口。

允许的主机路径

  • AllowedHostPaths 是一个被允许的主机路径前缀的白名单。空值表示所有的主机路径都可以使用。

许可

包含 PodSecurityPolicy许可控制,允许控制集群资源的创建和修改,基于这些资源在集群范围内被许可的能力。

许可使用如下的方式为 Pod 创建最终的安全上下文: 1. 检索所有可用的 PSP。 1. 生成在请求中没有指定的安全上下文设置的字段值。 1. 基于可用的策略,验证最终的设置。

如果某个策略能够匹配上,该 Pod 就被接受。如果请求与 PSP 不匹配,则 Pod 被拒绝。

Pod 必须基于 PSP 验证每个字段。

services yaml

后续补充...

endpoints yaml

后续补充...

ingress yaml

后续补充...

RBAC yaml

后续补充...

HPA yaml

后续补充...

ConfigMap, Secret yaml

后续补充...

PV、PVC、StorageClass yaml

后续补充...

原文地址:https://www.cnblogs.com/h-gallop/p/12046425.html

时间: 2024-10-21 20:18:50

Kubernetes YAML 文件全字段详解的相关文章

JPEG文件编/解码详解

JPEG文件编/解码详解(1) JPEG(Joint Photographic Experts Group)是联合图像专家小组的英文缩写.它由国际电话与电报咨询委员会CCITT(The International Telegraph and Telephone Consultative Committee)与国际标准化组织ISO于1986年联合成立的一个小组,负责制定静态数字图像的编码标准. 小组一直致力于标准化工作,开发研制出连续色调.多级灰度.静止图像的数字图像压缩编码方法,即JPEG算法.

python处理word文件:win32com用法详解

目标:用python处理doc文件 方法:引入win32com模块 ************************************************************************** 一.安装 ************************************************************************** 首先要先下载安装win32com模块(起先在linux下装不成功,后在windows下面成功了...) 下载地址:http

atitit.mp4&#160;视频文件多媒体格式结构详解

atitit.mp4 视频文件多媒体格式结构详解 1. 一.基本概念1 2. MP4文件概述2 3. mp4是由一个个“box”组成的,2 4. 典型简化mp43 5. Fragments5 6. ref6 7. 具体列表6 8. Ref29 MP4文件格式详解(ISO-14496-12/14) Author:Pirate Leo Email:[email protected] 1. 一.基本概念 1. 文件,由许多Box和FullBox组成. 2. Box,每个Box由Header和Data组

HTML video 视频标签全属性详解

HTML 5 video 视频标签全属性详解 现在如果要在页面中使用video标签,需要考虑三种情况,支持Ogg Theora或者VP8(如果这玩意儿没出事的话)的(Opera.Mozilla.Chrome),支持H.264的(Safari.IE 9.Chrome),都不支持的(IE6.7.8).好吧,现在让我们从技术层面来认识HTML 5的视频,包括video标签的使用,视频对象可以用到的媒介属性和方法,以及媒介事件. Video标签的使用 Video标签含有src.poster.preloa

Struts2之struts2文件上传详解

一.学习案例:通过在uploadfile.jsp页面填写完表单,提交后跳转到success.jsp页面,然后验证upload包下上传文件是否成功. 二.案例分析:struts2文件上传并不是表面上看的只需简单配置就可以上传文件.实际是分为两步的.1.struts2首先将客户端上传的文件保存到struts.multipart.saveDir键所指定的目录,如果该键所对应的目录不存在,就会保存到javax.servlet.context.tempdir环境变量所指定的目录中.2.Action中所定义

Android AndroidManifest 清单文件以及权限详解

每个Android应用都需要一个名为AndroidManifest.xml的程序清单文件,这个清单文件名是固定的并且放在每个Android应用的根目录下.它定义了该应用对于Android系统来说一些非常重要的信息.Android系统需要这些信息才能正常运行该应用.Android程序清单文件主要具有下面作用: ·        它给应用程序Java包命名,这个包名作为应用程序唯一标识符. ·        它描述了应用程序中的每个程序组件-Activity,Service,Broadcast Re

spark读写压缩文件API使用详解

最近研究了下Spark如何读写压缩格式的文件,主要有如下三种方式,这里以lzo方式压缩为例     /*******************old hadoop api*************************/     val confHadoop = new JobConf     confHadoop.set("mapred.output.compress", "true")     confHadoop.set("mapred.output

JSch - Java实现的SFTP(文件上传详解篇) 转

JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序. 本文只介绍如何使用JSch实现的SFTP功能. SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式.SFTP是使用加密传输认证信息和传输

discuz门户首页-header文件模板语法详解和注释

header文件引用了跟多通用模板,所以整个文章会很长,现在比较忙,注释工作会不定期进行 首先开下门户首页的文件 portal里面的index.htm <!--{template common/header}--> //引用common文件下的header.htm这个也是引用模板文件的一种常用方法 <style id="diy_style" type="text/css"></style> //没什么用 <div class