当前位置: 首页 > news >正文

Kubernetes .yaml 文件配置

Deployment 类型的 YAML 文件参数说明

字段说明
apiVersionKubernetes API 版本,通常为 apps/v1,定义资源类型的版本。
kind资源类型,这里是 Deployment,表示我们正在定义一个 Deployment 资源。
metadata存储 Deployment 的元数据,包括名称、命名空间、标签、注解等信息。
metadata.nameDeployment 的名称,必须唯一。
metadata.namespaceDeployment 所在的命名空间,默认为 default
metadata.labels标签,键值对形式,用于组织和选择资源。
metadata.annotations注解,键值对形式,存储非标注数据,通常由外部系统使用。
spec定义 Deployment 的规格,包含副本数、Pod 模板、更新策略等配置。
spec.replicas副本数,控制创建多少个 Pod,确保高可用性和负载均衡。例如 replicas: 3 会创建 3 个 Pod。
spec.selector用于选择控制的 Pod 标签,Deployment 会通过此选择器来找到并管理相应的 Pods。
spec.selector.matchLabels选择器标签,指定要管理的 Pod 的标签。
spec.templatePod 模板,定义每个 Pod 的配置,包括容器、卷、资源等。
spec.template.metadataPod 模板的元数据,通常包含标签、注解等。
spec.template.metadata.labelsPod 的标签,必须与 spec.selector.matchLabels 中的标签匹配。
spec.template.specPod 模板的详细配置,定义容器、卷、环境变量等。
spec.template.spec.containersPod 中容器的配置列表,每个容器包含镜像、端口、资源等详细配置。
spec.template.spec.containers.name容器名称。
spec.template.spec.containers.image容器使用的镜像。
spec.template.spec.containers.ports容器暴露的端口列表,可以定义多个端口。
spec.template.spec.containers.ports.containerPort容器暴露的端口。
spec.template.spec.containers.resources容器的资源配置,包括请求和限制。
spec.template.spec.containers.resources.requests请求的资源量,Kubernetes 会确保容器有这些资源可用。
spec.template.spec.containers.resources.requests.cpu请求的 CPU 资源量,例如 250m。单位:m:毫核1000m = 1 核。core 或 空值:核
spec.template.spec.containers.resources.requests.memory请求的内存资源量,例如 64Mi。单位:B:字节,Ki:千字节,Mi:兆字节,Gi:吉字节,M:十进制单位(用于文件系统)。1M:1,000,000 字节,G:十进制单位(用于文件系统)。1G:1,000,000,000 字节
spec.template.spec.containers.resources.limits容器的资源限制,表示容器最多可以使用的资源量。
spec.template.spec.containers.resources.limits.cpu限制的 CPU 资源量,例如 500m。单位:m:毫核1000m = 1 核。core 或 空值:核
spec.template.spec.containers.resources.limits.memory限制的内存资源量,例如 128Mi。单位:B:字节,Ki:千字节,Mi:兆字节,Gi:吉字节,M:十进制单位(用于文件系统)。1M:1,000,000 字节,G:十进制单位(用于文件系统)。1G:1,000,000,000 字节
spec.template.spec.volumesPod 内部的存储卷定义,可以是 PVC、emptyDir、ConfigMap 等类型。
spec.template.spec.volumes.name卷的名称。
spec.template.spec.volumes.persistentVolumeClaim如果使用 PVC,则定义与之关联的 PersistentVolumeClaim 名称。
spec.template.spec.volumes.configMap如果使用 ConfigMap 卷,则定义 ConfigMap 的名称和数据。
spec.strategy更新策略,控制 Deployment 如何更新 Pod。例如可以设置滚动更新策略。
spec.strategy.type更新策略类型,通常有 RollingUpdate(滚动更新)和 Recreate(重新创建)。
spec.strategy.rollingUpdate如果 typeRollingUpdate,则可以设置滚动更新的详细配置。
spec.strategy.rollingUpdate.maxSurge滚动更新时最多可以创建的额外 Pod 副本数。例如 1 表示在更新过程中最多可以额外创建一个 Pod。
spec.strategy.rollingUpdate.maxUnavailable滚动更新时最大不可用的 Pod 副本数。例如 1 表示更新时最多有 1 个 Pod 不可用。
spec.minReadySecondsPod 被认为就绪之前必须等待的时间(秒)。
spec.paused如果设置为 true,Deployment 会暂停更新,直到恢复。
spec.revisionHistoryLimit控制保留多少个历史版本,防止过多的历史记录占用空间。
spec.progressDeadlineSeconds更新进程的最大等待时间,如果超过此时间,更新将被认为失败。
statusDeployment 的当前状态,自动生成,不需要在 YAML 文件中配置。
status.replicas当前运行的副本数。
status.updatedReplicas当前已更新的副本数。
status.readyReplicas当前就绪的副本数。
status.unavailableReplicas当前不可用的副本数。

Pod 类型的 YAML 文件参数说明

字段说明
apiVersionKubernetes API 版本,通常为 v1,定义资源类型的版本。
kind资源类型,这里是 Pod,表示我们正在定义一个 Pod 资源。
metadata存储 Pod 的元数据,包括名称、命名空间、标签、注解等信息。
metadata.namePod 的名称,必须唯一。
metadata.namespacePod 所在的命名空间,默认为 default
metadata.labels标签,键值对形式,用于组织和选择资源。
metadata.annotations注解,键值对形式,存储非标注数据,通常由外部系统使用。
spec定义 Pod 的规格,包含容器、卷、环境变量等配置。
spec.containersPod 内部的容器配置列表,每个容器包括镜像、端口、资源、环境变量等。
spec.containers.name容器的名称。
spec.containers.image容器使用的镜像。
spec.containers.ports容器暴露的端口列表。
spec.containers.ports.containerPort容器暴露的端口。
spec.containers.command容器启动时执行的命令,覆盖默认镜像的入口命令。
spec.containers.args容器启动时的命令行参数。
spec.containers.resources容器的资源请求和限制。
spec.containers.resources.requests请求的资源量,Kubernetes 会确保容器有这些资源可用。
spec.containers.resources.requests.cpu请求的 CPU 资源量,例如 250m
spec.containers.resources.requests.memory请求的内存资源量,例如 64Mi
spec.containers.resources.limits容器的资源限制,表示容器最多可以使用的资源量。
spec.containers.resources.limits.cpu限制的 CPU 资源量,例如 500m
spec.containers.resources.limits.memory限制的内存资源量,例如 128Mi
spec.containers.env容器环境变量。
spec.containers.env.name环境变量的名称。
spec.containers.env.value环境变量的值。
spec.containers.volumeMounts容器中的卷挂载配置。
spec.containers.volumeMounts.name卷的名称,必须与 spec.volumes 中定义的卷名称一致。
spec.containers.volumeMounts.mountPath卷挂载到容器内的路径。
spec.containers.volumeMounts.readOnly是否只读挂载,默认为 false
spec.volumesPod 使用的存储卷定义,可以是 PVC、emptyDir、ConfigMap 等类型。
spec.volumes.name卷的名称。
spec.volumes.persistentVolumeClaim如果使用 PVC,则定义与之关联的 PersistentVolumeClaim 名称。
spec.volumes.configMap如果使用 ConfigMap 卷,则定义 ConfigMap 的名称和数据。
spec.volumes.secret如果使用 Secret 卷,则定义 Secret 的名称和数据。
spec.restartPolicyPod 的重启策略,通常有 Always(总是重启)、OnFailure(失败时重启)、Never(从不重启)。
spec.schedulerName调度 Pod 的调度器名称,默认为默认调度器。
spec.dnsPolicyPod 的 DNS 策略,常用的值有 DefaultClusterFirstClusterFirstWithHostNet
spec.serviceAccountName服务账户的名称,允许为 Pod 指定特定的服务账户。
spec.nodeSelector用于选择 Pod 运行节点的节点标签。例如 nodeSelector: {disktype: ssd}
spec.affinity设置节点亲和性,可以定义将 Pod 安排到特定节点上的规则。
spec.tolerations设置 Pod 的容忍规则,允许 Pod 在特定的节点上调度,尽管该节点有一些限制条件。
spec.hostNetwork是否使用主机网络,默认为 false
spec.hostPID是否共享主机的 PID 空间,默认为 false
spec.hostIPC是否共享主机的 IPC 空间,默认为 false
spec.securityContext设置 Pod 的安全上下文,定义 Pod 的运行时权限、SELinux 安全等。
spec.securityContext.runAsUser定义容器运行时的用户 ID。
spec.securityContext.runAsGroup定义容器运行时的用户组 ID。
spec.securityContext.runAsNonRoot如果设置为 true,容器将无法以 root 用户运行。
spec.securityContext.fsGroup设置文件系统组 ID,通常用于卷挂载。
spec.nodeName如果指定,Pod 将被调度到此节点。
spec.schedulerName设置自定义调度器名称。
spec.affinity设置 Pod 的亲和性规则,定义节点选择、Pod 选择等规则。
spec.volumesPod 使用的存储卷定义,可以是 PVC、emptyDir、ConfigMap 等类型。

Service 类型的 YAML 文件参数说明

字段说明
apiVersionKubernetes API 版本,通常为 v1
kind资源类型,表示这是一个 Service
metadata存储 Service 的元数据,包括名称、命名空间、标签、注解等信息。
metadata.name服务的名称,必须在命名空间内唯一。
metadata.namespaceService 所在的命名空间,默认为 default
metadata.labels标签,键值对形式,用于组织和选择资源。
metadata.annotations注解,键值对形式,存储非标注数据,通常由外部系统使用。
spec定义 Service 的规格,包含选择器、端口、类型等配置。
spec.selector选择器,用于匹配与该 Service 关联的 Pods。
spec.selector.app选择器的标签键,匹配与此标签键和标签值相符的 Pods。
spec.portsService 暴露的端口信息。
spec.ports.portService 对外暴露的端口号。
spec.ports.targetPortPod 上容器监听的端口号,Service 将流量转发到此端口。
spec.ports.nodePort如果是 NodePort 类型,指定节点上的端口号。
spec.ports.protocol协议类型,默认为 TCP,也可以是 UDP
spec.typeService 类型,常见值有 ClusterIPNodePortLoadBalancerExternalName
spec.type=ClusterIP默认类型,表示 Service 仅在集群内部可访问。
spec.type=NodePortService 在每个 Node 上开放一个端口,外部可以访问到集群内部的服务。需要配置 nodePort 字段。
spec.type=LoadBalancerService 会自动配置一个负载均衡器,适用于外部访问。通常用于云环境下,Kubernetes 会自动为该 Service 配置一个外部负载均衡器 IP。
spec.type=ExternalName外部服务的 DNS 名称。将 Service 映射到外部 DNS 名称,常用于访问集群外部的服务。
spec.clusterIP指定 ClusterIP 地址,如果不指定,Kubernetes 会自动分配。
spec.externalIPs指定一组外部 IP 地址,可以将 Service 映射到这些地址。
spec.loadBalancerIP如果使用 LoadBalancer 类型,可以指定外部负载均衡器的 IP 地址。
spec.loadBalancerSourceRanges指定允许访问 Service 的外部 IP 地址范围。
spec.sessionAffinity会话亲和性,通常设置为 NoneClientIP,表示如何处理与客户端的会话。
spec.sessionAffinityConfig只有在 sessionAffinity 设置为 ClientIP 时,才需要此配置。
spec.sessionAffinityConfig.clientIP.timeoutSeconds设置客户端 IP 会话保持的时间,单位为秒。
spec.healthCheckNodePort对于 NodePort 类型的 Service,可以设置节点上的健康检查端口。
spec.publishNotReadyAddresses设置为 true 时,Service 会在 Pod 尚未完全就绪时允许流量进入。
spec.psp设置 Pod 安全策略(PodSecurityPolicy)。

ConfigMap 类型的 YAML 文件参数说明

字段说明
apiVersionKubernetes API 版本,通常为 v1,定义资源类型的版本。
kind资源类型,这里是 ConfigMap,表示我们正在定义一个 ConfigMap 资源。
metadata存储 ConfigMap 的元数据,包括名称、命名空间、标签、注解等信息。
metadata.nameConfigMap 的名称,必须唯一。
metadata.namespaceConfigMap 所在的命名空间,默认为 default
metadata.labels标签,键值对形式,用于组织和选择资源。
metadata.annotations注解,键值对形式,存储非标注数据,通常由外部系统使用。
data存储键值对的配置数据,ConfigMap 的核心内容。每个键代表一个配置项,值是对应的配置内容。
data.配置项的键,值为该配置项的值。
binaryData用于存储二进制数据,类似于 data,但数据是以 Base64 编码的二进制格式存储。
binaryData.存储的二进制数据,使用 Base64 编码。
metadata.creationTimestampConfigMap 的创建时间戳。
metadata.resourceVersionConfigMap 的版本,标识其版本号。
metadata.uidConfigMap 的唯一标识符。

适用场景:

  • ​​​​​​配置管理:可以通过 ConfigMap 存储应用程序的配置信息,如数据库连接、API 密钥等。
  • 共享配置:多个 Pod 或容器可以通过引用同一个 ConfigMap 来共享配置,方便集中管理。
  • 环境变量:可以将配置数据作为环境变量注入到 Pod 中,容器启动时自动加载。

Secret 类型的 YAML 文件参数说明

字段说明
apiVersionKubernetes API 版本,通常为 v1,定义资源类型的版本。
kind资源类型,这里是 Secret,表示我们正在定义一个 Secret 资源。
metadata存储 Secret 的元数据,包括名称、命名空间、标签、注解等信息。
metadata.nameSecret 的名称,必须唯一。
metadata.namespaceSecret 所在的命名空间,默认为 default
metadata.labels标签,键值对形式,用于组织和选择资源。
metadata.annotations注解,键值对形式,存储非标注数据,通常由外部系统使用。
data存储 Secret 数据的键值对,每个键表示 Secret 项的名称,值为该 Secret 项的 Base64 编码后的值。
data.存储的数据,每个键值对的值应该是 Base64 编码的字符串。
stringData用于存储明文数据,Kubernetes 会自动将其编码为 Base64 格式。
stringData.存储的明文数据,Kubernetes 会自动将其编码为 Base64 格式。
typeSecret 的类型,决定了 Secret 的用途和如何被使用,常见的类型有 Opaquekubernetes.io/dockerconfigjson 等。
type=Opaque默认类型,用于存储一般的密钥/值对数据,是最常见的 Secret 类型。
type=kubernetes.io/dockerconfigjson用于存储 Docker 配置,常用于存储 Docker registry 的认证信息。
type=kubernetes.io/service-account-token用于存储与 Kubernetes ServiceAccount 相关的认证令牌,Kubernetes 会自动管理此类 Secret。

适用场景:

  • 存储敏感信息:如数据库密码、API 密钥等。
  • 访问凭证:存储 Kubernetes 的服务账号令牌或 Docker 配置文件。
  • 访问控制:通过将 Secret 作为环境变量或文件挂载,控制应用访问敏感资源的权限。

HorizontalPodAutoscaler 类型的 YAML 文件参数说明

字段说明
apiVersionKubernetes API 版本,通常为 autoscaling/v2autoscaling/v2beta2,指定 HPA 资源的 API 版本。
kind资源类型,表示资源是 HorizontalPodAutoscaler
metadata存储 HPA 的元数据,包括名称、命名空间、标签、注解等信息。
metadata.nameHPA 的名称,必须在命名空间内唯一。
metadata.namespaceHPA 所在的命名空间,默认为 default
metadata.labels标签,键值对形式,用于组织和选择资源。
metadata.annotations注解,键值对形式,存储非标注数据,通常由外部系统使用。
specHPA 的规格配置,定义如何自动扩缩容。
spec.scaleTargetRef指定要进行自动扩缩容的目标资源,通常是 Deployment、ReplicaSet 或 StatefulSet。
spec.scaleTargetRef.apiVersion目标资源的 API 版本,通常为 apps/v1
spec.scaleTargetRef.kind目标资源的类型,通常为 DeploymentReplicaSetStatefulSet
spec.scaleTargetRef.name目标资源的名称,指向需要扩缩容的资源名称。
spec.minReplicasHPA 的最小副本数,Pod 数量的下限。
spec.maxReplicasHPA 的最大副本数,Pod 数量的上限。
spec.metrics监控的指标,用于决定是否扩容。
spec.metrics[].type指标的类型,通常为 ResourceExternal
spec.metrics[].resourcetypeResource 时,指定资源类型指标(如 CPU 或 memory)。
spec.metrics[].resource.name资源名称,通常为 cpumemory
spec.metrics[].resource.target目标资源值,设定扩缩容的标准。
spec.metrics[].resource.target.type目标类型,通常为 Utilization(百分比)或 Value(绝对值)。
spec.metrics[].resource.target.value目标值,设置目标资源值。如果类型是 Value,则为绝对值;如果是 Utilization,则为百分比。
spec.metrics[].externaltypeExternal 时,指定外部指标(如自定义指标)。
spec.metrics[].external.name外部指标的名称。
spec.metrics[].external.target外部指标的目标值。
spec.metrics[].external.target.value外部指标的目标值。
spec.behavior指定 HPA 的扩缩容行为控制策略。
spec.behavior.scaleUp配置扩容行为。
spec.behavior.scaleDown配置缩容行为。
spec.behavior.scaleUp.stabilizationWindowSeconds控制扩容的稳定性窗口,单位为秒,表示在多少秒内不进行扩容。
spec.behavior.scaleDown.stabilizationWindowSeconds控制缩容的稳定性窗口,单位为秒,表示在多少秒内不进行缩容。
spec.behavior.scaleUp.selectPolicy扩容的选择策略,通常为 Max(最大值)或 Min(最小值)。
spec.behavior.scaleDown.selectPolicy缩容的选择策略,通常为 Max(最大值)或 Min(最小值)。

适用场景:

  • 自动扩展:根据负载自动增加或减少 Pod 副本数量。
  • CPU 或内存负载:根据 CPU 或内存的使用情况进行自动扩缩容。
  • 自定义指标:可以使用外部指标(例如通过 Prometheus 获取的指标)来驱动自动扩缩容。

StatefulSet 类型的 YAML 文件参数说明

字段说明
apiVersionKubernetes API 版本,通常为 apps/v1
kind资源类型,表示资源是 StatefulSet
metadata存储 StatefulSet 的元数据,包括名称、命名空间、标签、注解等信息。
metadata.nameStatefulSet 的名称,必须在命名空间内唯一。
metadata.namespaceStatefulSet 所在的命名空间,默认为 default
metadata.labels标签,键值对形式,用于组织和选择资源。
metadata.annotations注解,键值对形式,存储非标注数据,通常由外部系统使用。
specStatefulSet 的规格配置,定义如何部署 StatefulSet。
spec.replicasPod 副本数,定义 StatefulSet 中应该存在多少个 Pod 实例。
spec.selector选择器,定义 Pod 标签选择条件,必须与 Pod 的标签匹配。
spec.selector.matchLabelsPod 标签选择器。
spec.templatePod 模板,定义 Pod 的具体规格,包括容器、卷、端口等配置。
spec.template.metadataPod 模板中的元数据。
spec.template.metadata.labelsPod 模板中的标签,通常用来与 spec.selector.matchLabels 匹配。
spec.template.specPod 模板中的规格,定义容器、卷、资源请求和限制等信息。
spec.template.spec.containersPod 中的容器列表。
spec.template.spec.containers.name容器名称,必须与定义的镜像相匹配。
spec.template.spec.containers.image容器镜像,指定要使用的 Docker 镜像。
spec.template.spec.containers.resources容器的资源请求和限制,定义 CPU 和内存的使用限制。
spec.template.spec.containers.ports容器端口配置。
spec.template.spec.containers.volumeMounts容器挂载的卷信息。
spec.volumeClaimTemplates用于 StatefulSet 中的持久化存储卷声明。
spec.volumeClaimTemplates[].metadata.name持久化存储卷声明的名称。
spec.volumeClaimTemplates[].spec.resources存储卷的资源要求。
spec.serviceName与 StatefulSet 关联的服务名称。
spec.podManagementPolicy

Pod 管理策略,通常为 OrderedReadyParallel

OrderedReady : 保证 Pod 按顺序启动和终止。
Parallel: 所有 Pod 可以并行启动和终止。

spec.updateStrategy更新策略,定义 StatefulSet 如何处理更新。
spec.updateStrategy.type

更新类型,通常为 RollingUpdateOnDelete

RollingUpdate :表示滚动更新(默认方式)。
OnDelete:表示只在删除现有 Pod 后才会进行更新。

spec.updateStrategy.rollingUpdateRollingUpdate 更新类型时的具体配置。
spec.updateStrategy.rollingUpdate.partition指定更新时的分区数,用于控制同时更新的 Pod 数量。
statusStatefulSet 的当前状态,包括 Pod 的当前状态、准备好的 Pod 数量等信息。

适用场景:

  • 有状态服务:适用于有状态的应用,如数据库、分布式缓存等,保证每个 Pod 的状态不会丢失。
  • 稳定的网络标识符:StatefulSet 会为每个 Pod 分配稳定的 DNS 名称,适用于需要稳定标识符的服务。
  • 持久化存储:与持久化存储卷(PersistentVolumeClaim)配合使用,每个 Pod 都会分配独立的存储卷。

Ingress 类型的 YAML 文件参数说明

字段说明
apiVersionKubernetes API 版本,通常为 networking.k8s.io/v1
kind资源类型,表示资源是 Ingress
metadata存储 Ingress 的元数据,包括名称、命名空间、标签、注解等信息。
metadata.nameIngress 资源的名称。
metadata.namespaceIngress 所在的命名空间,默认为 default
metadata.labels标签,键值对形式,用于组织和选择资源。
metadata.annotations注解,键值对形式,存储非标注数据,通常由外部系统使用。
specIngress 资源的规格配置,定义路由规则和控制器配置。
spec.rules访问规则,定义路由规则。
spec.rules.host主机名,指示应路由到哪个服务。
spec.rules.httpHTTP 路由规则。
spec.rules.http.paths路由的路径列表。
spec.rules.http.paths.path路径,定义请求 URL 的路径。
spec.rules.http.paths.backend后端服务,定义请求被转发到哪个服务。
spec.rules.http.paths.backend.service.name后端服务的名称。
spec.rules.http.paths.backend.service.port后端服务的端口。
spec.tlsTLS 配置,定义如何为访问规则配置 TLS 加密。
spec.tls.hosts配置启用 TLS 加密的主机名列表。
spec.tls.secretNameTLS 证书的 secret 名称。
status当前 Ingress 的状态,包括已应用的规则和任何错误。

适用场景:

  • 外部访问:Ingress 通常用于提供 HTTP/HTTPS 访问 Kubernetes 集群中的服务,而不是直接通过 NodePort 或 LoadBalancer 类型的服务来暴露。
  • 反向代理:Ingress 可以配置为反向代理,转发请求到多个服务,并提供路由和负载均衡的功能。
  • TLS 加密:Ingress 可以配置为支持 TLS 加密,通过指定 TLS 证书为服务启用 HTTPS。
  • 流量控制:Ingress 控制流量的路由方式,支持基于路径和主机名的规则配置,可以为不同的路径或主机路由到不同的服务。

PersistentVolume (PV) 类型的 YAML 文件参数说明

字段说明
apiVersionKubernetes API 版本,通常为 v1
kind资源类型,表示资源是 PersistentVolume
metadata存储 PV 的元数据,包括名称、命名空间、标签、注解等信息。
metadata.namePersistentVolume 资源的名称。
metadata.namespacePersistentVolume 所在的命名空间,通常不设置,因为 PV 是集群级别的资源。
metadata.labels标签,键值对形式,用于组织和选择资源。
metadata.annotations注解,键值对形式,存储非标注数据,通常由外部系统使用。
specPersistentVolume 的规格配置,定义存储类型和大小等。
spec.capacity存储资源的容量。
spec.capacity.storage存储的大小,单位可以是 GiMiTi 等。
spec.volumeMode

存储卷的模式,通常是 FilesystemBlock

Filesystem : 文件系统模式(默认)。

Block: 块存储模式。

spec.accessModes

存储卷的访问模式,常见的模式包括 ReadWriteOnceReadOnlyManyReadWriteMany

ReadWriteOnce: 仅允许一个节点进行读写操作。
ReadOnlyMany: 允许多个节点以只读方式访问。
ReadWriteMany: 允许多个节点进行读写操作。

spec.persistentVolumeReclaimPolicy

释放策略,控制当 PVC 删除时 PV 的行为。常见的策略有 RetainRecycleDelete

Retain: 保留该 PV,即使 PVC 被删除,PV 仍然存在。
Recycle: 回收该 PV,将其设置为可用。

Delete: 删除该 PV 和关联的存储资源。

spec.storageClassName存储类名称,指定该 PV 使用的存储类。
spec.mountedBy已经挂载此 PV 的 Pod 的 UID 列表。
spec.local如果使用本地存储,指定本地存储路径。
spec.local.path本地存储路径。
spec.nfs如果使用 NFS 存储,配置 NFS 参数。
spec.nfs.serverNFS 服务器的 IP 地址或主机名。
spec.nfs.path共享的 NFS 路径。
spec.cephfs如果使用 CephFS 存储,配置 CephFS 参数。
spec.rbd如果使用 RBD 存储,配置 RBD 参数。
spec.flexVolume如果使用 FlexVolume 存储,配置 FlexVolume 参数。
spec.awsElasticBlockStore如果使用 AWS EBS 存储,配置 AWS EBS 参数。
spec.gcePersistentDisk如果使用 GCE Persistent Disk 存储,配置 GCE Persistent Disk 参数。
statusPersistentVolume 的状态信息,包括 phase
status.phase

当前 PV 的状态,通常为 AvailableBoundReleasedFailed

Available: 可用,表示 PV 处于空闲状态,等待绑定。
Bound: 已绑定,表示 PV 与 PVC 绑定并使用中。
Released: 释放,表示 PV 已释放,不再使用。
Failed: 失败,表示 PV 配置或绑定时发生了错误。

适用场景:

  • 持久存储:用于持久化存储,适用于容器重启后需要保留数据的场景,如数据库、文件存储等。
  • 跨 Pod 共享数据:PV 提供了一种方式,允许多个 Pod 访问同一个存储资源,满足应用共享存储的需求。
  • 本地存储:如果需要使用物理节点上的磁盘进行存储,可以使用本地存储类型的 PV。
  • 云存储集成:在使用云服务(如 AWS EBS、Google Persistent Disk)时,PV 提供了与云存储的集成,能够动态管理存储资源。

PersistentVolumeClaim (PVC) 类型的 YAML 文件参数说明

字段说明
apiVersionKubernetes API 版本,通常为 v1
kind资源类型,表示资源是 PersistentVolumeClaim
metadata存储 PVC 的元数据,包括名称、命名空间、标签、注解等信息。
metadata.namePersistentVolumeClaim 资源的名称。
metadata.namespacePersistentVolumeClaim 所在的命名空间。
metadata.labels标签,键值对形式,用于组织和选择资源。
metadata.annotations注解,键值对形式,存储非标注数据,通常由外部系统使用。
specPersistentVolumeClaim 的规格配置,定义存储请求、访问模式、资源需求等。
spec.accessModes

PVC 的访问模式。常见模式包括 ReadWriteOnceReadOnlyManyReadWriteMany

ReadWriteOnce: 只能由一个节点进行读写。

ReadOnlyMany: 允许多个节点只读。

ReadWriteMany: 允许多个节点进行读写操作。

spec.resources资源请求,包含存储大小请求。
spec.resources.requests请求的存储容量。
spec.resources.requests.storage请求的存储大小,单位可以是 GiMiTi 等。
spec.resources.limits可选的资源上限,通常不设置,仅用于指定最大资源限制。
spec.storageClassName存储类名称,指定该 PVC 使用的存储类。
spec.volumeMode存储卷的模式,通常为 FilesystemBlock
spec.selectorPVC 选择的 PV 标签选择器,用于过滤可以绑定的 PV。
spec.volumeName绑定到 PVC 的 PV 名称,如果已存在一个与 PVC 匹配的 PV,可以直接使用该名称。
statusPersistentVolumeClaim 的状态信息,包括 phase
status.phase

当前 PVC 的状态,通常为 PendingBoundLost

Pending: PVC 正在等待 PV 可用。

Bound: PVC 已与 PV 绑定。

Lost: PVC 在存储资源丢失时的状态。

适用场景:

  • 存储需求声明:PVC 用于声明 Pod 对持久存储的需求。例如,当数据库或日志服务需要存储数据时,可以使用 PVC 申请存储。
  • 存储与 Pod 绑定:PVC 可以与 PV 绑定,提供实际的存储资源。当 Pod 启动时,会自动使用 PVC 绑定的存储卷。
  • 存储资源管理:通过 PVC 可以管理存储资源的请求和使用,灵活地选择不同存储后端,支持多种存储类型。

Job 类型的 YAML 文件参数说明

字段说明
apiVersionKubernetes API 版本,通常为 batch/v1
kind资源类型,表示资源是 Job
metadata存储 Job 的元数据,包括名称、命名空间、标签、注解等信息。
metadata.nameJob 资源的名称。
metadata.namespaceJob 所在的命名空间。
metadata.labels标签,键值对形式,用于组织和选择资源。
metadata.annotations注解,键值对形式,存储非标注数据,通常由外部系统使用。
specJob 的规格配置,定义如何执行 Job、并行任务的数量、重试策略等。
spec.parallelism并行运行的 Pod 数量,即同时运行多少个 Pod 来完成任务。
spec.completions完成任务所需的 Pod 数量,通常为 1,表示执行任务 1 次。
spec.activeDeadlineSecondsJob 最大运行时间(单位秒)。如果超出该时间,Job 会被终止。
spec.backoffLimitJob 失败后重试的次数。
spec.templateJob 的 Pod 模板,定义 Job 执行时使用的容器和资源配置。
spec.template.metadataPod 的元数据,定义容器的标签、注解等信息。
spec.template.specPod 的规格配置,定义容器、资源、卷等配置。
spec.template.spec.containers容器配置数组,定义 Job 使用的容器。
spec.template.spec.restartPolicyPod 的重启策略,通常为 NeverOnFailure
spec.template.spec.volumes定义 Job 中使用的存储卷。
statusJob 的状态信息,包括任务执行的当前状态。
status.succeeded已成功完成的 Pod 数量。
status.failed失败的 Pod 数量。
status.active当前正在运行的 Pod 数量。
status.startTimeJob 开始执行的时间。
status.completionTimeJob 完成的时间。

适用场景:

  • 批处理任务:Job 适用于需要按批处理方式执行的任务,如数据库备份、日志处理等。Job 可以确保任务在指定的 Pod 数量完成后结束。
  • 并行任务:Job 支持并行执行多个 Pod,适用于大规模数据处理或任务分发的场景。
  • 定时任务:Job 可以与 CronJob 配合使用,定时执行某些批处理任务。

CronJob 类型的 YAML 文件参数说明

字段说明
apiVersionKubernetes API 版本,通常为 batch/v1
kind资源类型,表示资源是 CronJob
metadata存储 CronJob 的元数据,包括名称、命名空间、标签、注解等信息。
metadata.nameCronJob 资源的名称。
metadata.namespaceCronJob 所在的命名空间。
metadata.labels标签,键值对形式,用于组织和选择资源。
metadata.annotations注解,键值对形式,存储非标注数据,通常由外部系统使用。
specCronJob 的规格配置,定义如何执行任务、任务的调度时间等。
spec.scheduleCron 表达式,指定 CronJob 执行的时间计划。
spec.jobTemplateCronJob 运行时创建的 Job 模板。
spec.jobTemplate.specJob 模板的规格配置,定义 Job 创建时使用的容器、资源、重启策略等。
spec.jobTemplate.spec.templateJob 模板中的 Pod 模板,定义容器和 Pod 的资源配置。
spec.jobTemplate.spec.template.spec.containers容器配置,定义 CronJob 执行时使用的容器镜像及命令。
spec.jobTemplate.spec.template.spec.restartPolicyPod 的重启策略,通常为 Never
spec.successfulJobsHistoryLimit保留成功执行的 CronJob 的数量。
spec.failedJobsHistoryLimit保留失败执行的 CronJob 的数量。
spec.concurrencyPolicy

CronJob 的并发策略。可以是 AllowForbidReplace

Allow: 允许多个 CronJob 实例并发执行。

Forbid : 阻止多个 CronJob 实例并发执行。如果上一个任务未完成,新的任务不会开始执行。

Replace: 替换正在执行的 CronJob 实例,如果之前的任务未完成,新任务将终止并替换之。

spec.startingDeadlineSecondsCronJob 开始执行的最后期限,单位是秒。如果在该时间范围内未开始执行,CronJob 将被视为失败。
statusCronJob 的状态信息,包括 CronJob 最后一次的执行状态等。
status.lastScheduleTimeCronJob 最后一次成功调度的时间。

适用场景:

  • 定时任务:CronJob 适用于需要定时执行的任务,如每天运行的备份任务、定期报告生成等。
  • 周期性任务:CronJob 可以根据设定的 Cron 表达式执行任务,支持复杂的调度模式,如每周、每月等。
  • 清理任务:定期清理日志、过期文件等。
  • 数据同步:例如,定期从外部系统同步数据。

相关文章:

  • Kubernetes 集群部署应用
  • C PRIMER PLUS——第9节:动态内存分配、存储类别、链接和内存管理
  • 17前端项目----支付弹框
  • Three.js + React 实战系列 - 页脚区域 Footer 组件 ✨
  • vector--OJ1
  • Windows系统更新一键禁用:WindowsUpdateBlocker轻量级工具推荐
  • Typescript 源码核心流程
  • LeetCode 热题 100 101. 对称二叉树
  • 79.评论日记
  • UOJ 164【清华集训2015】V Solution
  • 元数据分类
  • 并发笔记-给数据上锁(二)
  • 怎样选择成长股 读书笔记(一)
  • Linux epoll 详解:概念、使用、数据结构、流程及应用
  • 力扣-二叉树-101 对称二叉树
  • 常见的 DCGM 设备级别指标及其含义
  • 一个网球新手的学习心得
  • 【C语言文件操作详解】fopen 函数全解析 —— 模式参数、使用技巧与重定向的区别
  • 运动员技术等级分为国际级运动健将
  • C——猜数字游戏
  • 耿军强任陕西延安市领导,此前任陕西省公安厅机场公安局局长
  • 首映丨纪录电影《滚烫年华》:献给所有奋斗者
  • 习近平结束对俄罗斯国事访问并出席纪念苏联伟大卫国战争胜利80周年庆典回到北京
  • 上海“电子支付费率成本为0”背后:金融服务不仅“快”和“省”,更有“稳”和“准”
  • 奥利弗·斯通回顾越战50周年:我们不善于总结历史教训
  • 夜读丨母亲的手擀面