k8s-Deployment资源在线字段说明文档

Deployment资源是Kubernetes中用于定义应用程序的部署方式和管理策略的一种资源类型,可以实现应用程序的自动扩展、滚动更新和回滚等功能。


⚪️点击字段名可查看字段详情。小屏幕下体验不好,建议电脑端阅读。

  • apiVersion - 资源定义的版本

  • kind - 资源定义的名称

  • metadata - 元数据

    • name - 资源对象的名称

    • namespace - 名称空间

    • labels - 资源对象的标签键值对

    • annotations - 资源对象的注解

    • ownerReferences - 该对象的持有者对象列表。如果列表中的所有对象都已被删除,则该对象将被垃圾回收。

      • apiVersion - 资源定义的版本

      • kind - 资源定义的名称

      • name - 资源对象的名称

      • uid - 资源对象的id

    • finalizers - 最终处理器。可以向这个数组注册一个自定义的最终处理器,结合deletionTimestamp,在对象被标志为删除后,做一些资源的清理操作。举例:在Pod实际删除之前获取Pod的容器日记。

  • spec - 描述对象的期望状态

    • replicas - 副本数。可选,默认值为1。

    • strategy - 部署策略

      • type - 策略类型

      • rollingUpdate - 滚动更新部署配置

        • maxUnavailable - 最大不可用pod数,或者比例。可以是具体的数字,或者百分比。

        • maxSurge - 可以调度高于所需Pod数的最大Pod数,或者比例。可以是具体的数字,或者百分比。

    • selector - Pod的标签选择器。它必须与pod模板的标签匹配。

      • matchLabels - 标签匹配的映射。要求是AND关系。

      • matchExpressions - 表达式匹配数组。这些表达式是AND关系。

        • key - 标签的key

        • operator - 操作符,支持:In, NotIn, Exists, DoesNotExist

        • values - 匹配的标签值,支持多个。

    • minReadySeconds - 新创建的Pod准备就绪的最短秒数,超过这个时间才能被视为可用。默认为0,即pod一旦准备好就被认为可用了。

    • revisionHistoryLimit - 限制Deployment在集群中保留的历史修订版本的数量。当Deployment更新时,生成新的修订版本,同时旧的修订版本可能被删除以保持数量在限制范围内。历史版本用于回滚,如果更新的Deployment出现问题,可以回滚到之前的修订版本。

    • template - Pod模版,Deployment控制器将根据这个模版创建Pod资源。

      • metadata - 元数据

        • name - 资源对象的名称

        • namespace - 名称空间

        • labels - 资源对象的标签键值对

        • annotations - 资源对象的注解

        • ownerReferences - 该对象的持有者对象列表。如果列表中的所有对象都已被删除,则该对象将被垃圾回收。

          • apiVersion - 资源定义的版本

          • kind - 资源定义的名称

          • name - 资源对象的名称

          • uid - 资源对象的id

        • finalizers - 最终处理器。可以向这个数组注册一个自定义的最终处理器,结合deletionTimestamp,在对象被标志为删除后,做一些资源的清理操作。举例:在Pod实际删除之前获取Pod的容器日记。

      • spec - Pod的期望状态描述。

        • initContainers - 初始化容器。用于在Pod创建时完成一些初始化工作。数组,一个Pod支持多个初始化容器。

          • name - 容器的名称

          • image - 容器的镜像

          • imagePullPolicy - 镜像拉取策略

          • command - 启动命令

          • args - 启动参数

          • workingDir - 容器的工作目录。如果未指定,则将使用容器运行时的默认值,该值可能在容器镜像中进行了配置(例如在Dockerfile中使用WORKDIR指定)。

          • ports - 容器暴露的端口

            • name - 名称

            • hostPort - 映射到宿主机上的主机端口

            • containerPort - 容器端口

            • protocol - 协议

          • envFrom - 用于引用ConfigMap或Secret资源来设置环境变量。ConfigMap和Secret中的所有键值对都会被填充到容器的环境变量中。

            • prefix - 环境变量名的前缀。在ConfigMap的data的key加上此前缀作为环境变量名。

            • configMapRef - 引用的ConfigMap资源

              • name - ConfigMap资源的名称

            • secretRef - 引用的Secret资源

              • name - Secret资源的名称

          • env - 环境变量

            • name - 环境变量名

            • value - 环境变量值。默认空字符串。

            • valueFrom - 环境变量值从Pod的其它字段取值,或者从ConfigMap/Secret资源取值。

              • fieldRef - 值引用此Pod的其它字段

                • fieldPath - 字段路径。例如:metadata.name、status.hostIP、spec.serviceAccountName

              • resourceFieldRef - 值引用此Pod的Resources的字段

                • containerName - 容器的名称

                • resource - 容器的资源限制配置的字段引用,例如:limits.cpu, limits.memory, requests.cpu, requests.memory

              • configMapKeyRef - 值引用ConfigMap的data的某个字段

                • name - ConfigMap资源的名称

                • key - ConfigMap资源的data的key

              • secretKeyRef - 值引用Secret的data的某个字段

                • name - Secret资源的名称

                • key - Secret资源的data的key

          • resources - 资源配额

            • limits - 最高限额。key有cpu、memory。

              • cpu - 例如:100Mi

              • memory - 例如:1024Mi

            • requests - 最低申请。key有cpu、memory。

              • cpu - 例如:100Mi

              • memory - 例如:1024Mi

          • volumeMounts - 挂载到容器文件系统中的存储卷

            • name - 卷的名称

            • readOnly - 是否以只读方式挂载

            • mountPath - 挂载路径

            • subPath - 将卷中的指定文件或目录挂载到容器的mountPath路径上

        • containers - 容器。数组,一个Pod支持多个容器。

          • name - 容器的名称

          • image - 容器的镜像

          • imagePullPolicy - 镜像拉取策略

          • command - 启动命令

          • args - 启动参数

          • workingDir - 容器的工作目录。如果未指定,则将使用容器运行时的默认值,该值可能在容器镜像中进行了配置(例如在Dockerfile中使用WORKDIR指定)。

          • ports - 容器暴露的端口

            • name - 名称

            • hostPort - 映射到宿主机上的主机端口

            • containerPort - 容器端口

            • protocol - 协议

          • envFrom - 用于引用ConfigMap或Secret资源来设置环境变量。ConfigMap和Secret中的所有键值对都会被填充到容器的环境变量中。

            • prefix - 环境变量名的前缀。在ConfigMap的data的key加上此前缀作为环境变量名。

            • configMapRef - 引用的ConfigMap资源

              • name - ConfigMap资源的名称

            • secretRef - 引用的Secret资源

              • name - Secret资源的名称

          • env - 环境变量

            • name - 环境变量名

            • value - 环境变量值。默认空字符串。

            • valueFrom - 环境变量值从Pod的其它字段取值,或者从ConfigMap/Secret资源取值。

              • fieldRef - 值引用此Pod的其它字段

                • fieldPath - 字段路径。例如:metadata.name、status.hostIP、spec.serviceAccountName

              • resourceFieldRef - 值引用此Pod的Resources的字段

                • containerName - 容器的名称

                • resource - 容器的资源限制配置的字段引用,例如:limits.cpu, limits.memory, requests.cpu, requests.memory

              • configMapKeyRef - 值引用ConfigMap的data的某个字段

                • name - ConfigMap资源的名称

                • key - ConfigMap资源的data的key

              • secretKeyRef - 值引用Secret的data的某个字段

                • name - Secret资源的名称

                • key - Secret资源的data的key

          • resources - 资源配额

            • limits - 最高限额。key有cpu、memory。

              • cpu - 例如:100Mi

              • memory - 例如:1024Mi

            • requests - 最低申请。key有cpu、memory。

              • cpu - 例如:100Mi

              • memory - 例如:1024Mi

          • volumeMounts - 挂载到容器文件系统中的存储卷

            • name - 卷的名称

            • readOnly - 是否以只读方式挂载

            • mountPath - 挂载路径

            • subPath - 将卷中的指定文件或目录挂载到容器的mountPath路径上

        • volumes - 存储卷。数组,一个Pod可以挂载多个卷。

          • name - 卷的名称

          • secret - 可选。可以将一个secret资源当作卷。

            • secretName - secret资源的名称。secret资源必须与pod在同一个namespace。

            • items - 挂载项

              • key - 对应secret资源的data的某一项的key

              • path - 挂载文件的相对路径

              • mode - 文件的读写权限。例如:777,默认为defaultMode的值

            • defaultMode - 指定默认文件的读写权限。默认值为:644

          • configMap - 可选。可以将一个ConfigMap资源当作卷挂载使用。

            • name - ConfigMap资源的名称。ConfigMap资源必须与pod在同一个namespace。

            • items - 挂载项

              • key - 对应ConfigMap资源的data的某一项的key

              • path - 挂载文件的相对路径

              • mode - 文件的读写权限。例如:777,默认为defaultMode的值

            • defaultMode - 指定默认文件的读写权限。默认值为:644

          • emptyDir - emptyDir表示一个与Pod生命周期共享的临时目录。

          • restartPolicy - 重启策略。

          • terminationGracePeriodSeconds - 优雅终止期限是在将运行在 Pod 中的进程发送终止信号和强制使用 kill 信号停止进程之间的持续时间(以秒为单位)。用于使Pod能够优雅地终止。

          • activeDeadlineSeconds - Pod可运行的时长,超过这个时间则会被kill掉。只对Job和CronJob生效。

          • dnsPolicy - DN策略,可选,默认值为ClusterFirst。

          • nodeSelector - 节点选择器,通过标签选择匹配的节点。

          • serviceAccountName - 指定用于运行此Pod的ServiceAccount的名称,Pod将拥有ServiceAccount的权限(rbac)。

          • hostNetwork - 配置为true,Pod中运行的应用程序可以直接看到宿主主机的网络接口,宿主主机所在的局域网上所有网络接口都可以访问到该应用程序。设置此字段,则dnsPolicy必须设置为ClusterFirstWithHostNet。

          • securityContext - Pod级别的安全配置

            • runAsUser - 容器内进程的运行用户。该配置可以帮助限制容器内进程的权限。

            • runAsGroup - 容器内进程的运行用户组。该配置可以帮助限制容器内进程的权限。

            • runAsNonRoot - 指示容器必须以非 root 用户身份运行。如果为 true,Kubelet 将在运行时验证镜像,以确保它不会以root身份运行,如果是,则无法启动容器。

          • imagePullSecrets - 引用同一Namespace中的Secret资源,用于拉取镜像。

            • name - 引用的Secret资源的名称。

          • hostname - 主机名和子域名的生成规则是Kubernetes默认行为,但它们也可以通过配置来定制。你可以为Pod指定自定义的主机名或子域名。每个Pod都有一个唯一的主机名(hostname)和一个子域(subdomain)。<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>。

          • subdomain - 主机名和子域名的生成规则是Kubernetes默认行为,但它们也可以通过配置来定制。你可以为Pod指定自定义的主机名或子域名。每个Pod都有一个唯一的主机名(hostname)和一个子域(subdomain)。<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>。

          • affinity - 调度亲和性配置。

            • nodeAffinity - 节点亲和性。

              • requiredDuringSchedulingIgnoredDuringExecution - 调度期间必须,执行期间忽略的节点亲和性配置

                • nodeSelectorTerms - 节点选择器列表。

                  • matchExpressions - 按节点标签匹配的节点选择器列表。

                    • key - 标签名

                    • operator - 操作符

                    • values - 匹配的标签值,支持多个。

            • podAffinity - Pod亲和性。

              • requiredDuringSchedulingIgnoredDuringExecution - 调度期间必须,执行期间忽略的Pod亲和性配置

                • labelSelector - 标签选择器。

                  • matchLabels - 标签匹配的映射。要求是AND关系。

                  • matchExpressions - 表达式匹配数组。这些表达式是AND关系。

                    • key - 标签的key

                    • operator - 操作符,支持:In, NotIn, Exists, DoesNotExist

                    • values - 匹配的标签值,支持多个。

                • namespaces - 指定适用于该规则的命名空间名称。

            • podAntiAffinity - Pod反亲和性。(例如,避免将此Pod与其他Pod放在同一节点中)

              • requiredDuringSchedulingIgnoredDuringExecution - 调度期间必须,执行期间忽略的Pod亲和性配置

                • labelSelector - 标签选择器。

                  • matchLabels - 标签匹配的映射。要求是AND关系。

                  • matchExpressions - 表达式匹配数组。这些表达式是AND关系。

                    • key - 标签的key

                    • operator - 操作符,支持:In, NotIn, Exists, DoesNotExist

                    • values - 匹配的标签值,支持多个。

                • namespaces - 指定适用于该规则的命名空间名称。

          • schedulerName - 调度器名称,不配置则使用默认调度器。

          • tolerations - Pod的容忍度。

            • key - 污点key。如果一个容忍度的 key 为空且 operator 为 Exists, 表示这个容忍度与任意的 key、value 和 effect 都匹配,即这个容忍度能容忍任何污点。

            • operator - 操作符。默认为Equal

            • value - 污点值。

            • effect - 效果

            • tolerationSeconds - 容忍时间长度。effect必须是NoExecute有效,否则该字段将被忽略。

          • hostAliases - 自定义主机名解析到指定IP的规则,注入到Pod的hosts文件中。这仅适用于非hostNetwork的Pod。

            • ip - 域名解析的IP

            • hostnames - 域名,支持多个。

          • priorityClassName - 配置Pod的优先级类名。优先级类名通过PriorityClass资源定义。

          • priority - 优先级的值。当启用优先级准入控制器(Priority Admission Controller)时,它会阻止用户设置该字段。准入控制器会根据PriorityClassName资源对象配置的值填充该字段的值。