Kubernetes .yaml 文件配置
Deployment 类型的 YAML 文件参数说明
字段 | 说明 |
---|---|
apiVersion | Kubernetes API 版本,通常为 apps/v1 ,定义资源类型的版本。 |
kind | 资源类型,这里是 Deployment ,表示我们正在定义一个 Deployment 资源。 |
metadata | 存储 Deployment 的元数据,包括名称、命名空间、标签、注解等信息。 |
metadata.name | Deployment 的名称,必须唯一。 |
metadata.namespace | Deployment 所在的命名空间,默认为 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.template | Pod 模板,定义每个 Pod 的配置,包括容器、卷、资源等。 |
spec.template.metadata | Pod 模板的元数据,通常包含标签、注解等。 |
spec.template.metadata.labels | Pod 的标签,必须与 spec.selector.matchLabels 中的标签匹配。 |
spec.template.spec | Pod 模板的详细配置,定义容器、卷、环境变量等。 |
spec.template.spec.containers | Pod 中容器的配置列表,每个容器包含镜像、端口、资源等详细配置。 |
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.volumes | Pod 内部的存储卷定义,可以是 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 | 如果 type 为 RollingUpdate ,则可以设置滚动更新的详细配置。 |
spec.strategy.rollingUpdate.maxSurge | 滚动更新时最多可以创建的额外 Pod 副本数。例如 1 表示在更新过程中最多可以额外创建一个 Pod。 |
spec.strategy.rollingUpdate.maxUnavailable | 滚动更新时最大不可用的 Pod 副本数。例如 1 表示更新时最多有 1 个 Pod 不可用。 |
spec.minReadySeconds | Pod 被认为就绪之前必须等待的时间(秒)。 |
spec.paused | 如果设置为 true ,Deployment 会暂停更新,直到恢复。 |
spec.revisionHistoryLimit | 控制保留多少个历史版本,防止过多的历史记录占用空间。 |
spec.progressDeadlineSeconds | 更新进程的最大等待时间,如果超过此时间,更新将被认为失败。 |
status | Deployment 的当前状态,自动生成,不需要在 YAML 文件中配置。 |
status.replicas | 当前运行的副本数。 |
status.updatedReplicas | 当前已更新的副本数。 |
status.readyReplicas | 当前就绪的副本数。 |
status.unavailableReplicas | 当前不可用的副本数。 |
Pod 类型的 YAML 文件参数说明
字段 | 说明 |
---|---|
apiVersion | Kubernetes API 版本,通常为 v1 ,定义资源类型的版本。 |
kind | 资源类型,这里是 Pod ,表示我们正在定义一个 Pod 资源。 |
metadata | 存储 Pod 的元数据,包括名称、命名空间、标签、注解等信息。 |
metadata.name | Pod 的名称,必须唯一。 |
metadata.namespace | Pod 所在的命名空间,默认为 default 。 |
metadata.labels | 标签,键值对形式,用于组织和选择资源。 |
metadata.annotations | 注解,键值对形式,存储非标注数据,通常由外部系统使用。 |
spec | 定义 Pod 的规格,包含容器、卷、环境变量等配置。 |
spec.containers | Pod 内部的容器配置列表,每个容器包括镜像、端口、资源、环境变量等。 |
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.volumes | Pod 使用的存储卷定义,可以是 PVC、emptyDir、ConfigMap 等类型。 |
spec.volumes.name | 卷的名称。 |
spec.volumes.persistentVolumeClaim | 如果使用 PVC,则定义与之关联的 PersistentVolumeClaim 名称。 |
spec.volumes.configMap | 如果使用 ConfigMap 卷,则定义 ConfigMap 的名称和数据。 |
spec.volumes.secret | 如果使用 Secret 卷,则定义 Secret 的名称和数据。 |
spec.restartPolicy | Pod 的重启策略,通常有 Always (总是重启)、OnFailure (失败时重启)、Never (从不重启)。 |
spec.schedulerName | 调度 Pod 的调度器名称,默认为默认调度器。 |
spec.dnsPolicy | Pod 的 DNS 策略,常用的值有 Default 、ClusterFirst 、ClusterFirstWithHostNet 。 |
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.volumes | Pod 使用的存储卷定义,可以是 PVC、emptyDir、ConfigMap 等类型。 |
Service 类型的 YAML 文件参数说明
字段 | 说明 |
---|---|
apiVersion | Kubernetes API 版本,通常为 v1 。 |
kind | 资源类型,表示这是一个 Service 。 |
metadata | 存储 Service 的元数据,包括名称、命名空间、标签、注解等信息。 |
metadata.name | 服务的名称,必须在命名空间内唯一。 |
metadata.namespace | Service 所在的命名空间,默认为 default 。 |
metadata.labels | 标签,键值对形式,用于组织和选择资源。 |
metadata.annotations | 注解,键值对形式,存储非标注数据,通常由外部系统使用。 |
spec | 定义 Service 的规格,包含选择器、端口、类型等配置。 |
spec.selector | 选择器,用于匹配与该 Service 关联的 Pods。 |
spec.selector.app | 选择器的标签键,匹配与此标签键和标签值相符的 Pods。 |
spec.ports | Service 暴露的端口信息。 |
spec.ports.port | Service 对外暴露的端口号。 |
spec.ports.targetPort | Pod 上容器监听的端口号,Service 将流量转发到此端口。 |
spec.ports.nodePort | 如果是 NodePort 类型,指定节点上的端口号。 |
spec.ports.protocol | 协议类型,默认为 TCP ,也可以是 UDP 。 |
spec.type | Service 类型,常见值有 ClusterIP 、NodePort 、LoadBalancer 、ExternalName 。 |
spec.type=ClusterIP | 默认类型,表示 Service 仅在集群内部可访问。 |
spec.type=NodePort | Service 在每个 Node 上开放一个端口,外部可以访问到集群内部的服务。需要配置 nodePort 字段。 |
spec.type=LoadBalancer | Service 会自动配置一个负载均衡器,适用于外部访问。通常用于云环境下,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 | 会话亲和性,通常设置为 None 或 ClientIP ,表示如何处理与客户端的会话。 |
spec.sessionAffinityConfig | 只有在 sessionAffinity 设置为 ClientIP 时,才需要此配置。 |
spec.sessionAffinityConfig.clientIP.timeoutSeconds | 设置客户端 IP 会话保持的时间,单位为秒。 |
spec.healthCheckNodePort | 对于 NodePort 类型的 Service,可以设置节点上的健康检查端口。 |
spec.publishNotReadyAddresses | 设置为 true 时,Service 会在 Pod 尚未完全就绪时允许流量进入。 |
spec.psp | 设置 Pod 安全策略(PodSecurityPolicy)。 |
ConfigMap 类型的 YAML 文件参数说明
字段 | 说明 |
---|---|
apiVersion | Kubernetes API 版本,通常为 v1 ,定义资源类型的版本。 |
kind | 资源类型,这里是 ConfigMap ,表示我们正在定义一个 ConfigMap 资源。 |
metadata | 存储 ConfigMap 的元数据,包括名称、命名空间、标签、注解等信息。 |
metadata.name | ConfigMap 的名称,必须唯一。 |
metadata.namespace | ConfigMap 所在的命名空间,默认为 default 。 |
metadata.labels | 标签,键值对形式,用于组织和选择资源。 |
metadata.annotations | 注解,键值对形式,存储非标注数据,通常由外部系统使用。 |
data | 存储键值对的配置数据,ConfigMap 的核心内容。每个键代表一个配置项,值是对应的配置内容。 |
data. | 配置项的键,值为该配置项的值。 |
binaryData | 用于存储二进制数据,类似于 data ,但数据是以 Base64 编码的二进制格式存储。 |
binaryData. | 存储的二进制数据,使用 Base64 编码。 |
metadata.creationTimestamp | ConfigMap 的创建时间戳。 |
metadata.resourceVersion | ConfigMap 的版本,标识其版本号。 |
metadata.uid | ConfigMap 的唯一标识符。 |
适用场景:
- 配置管理:可以通过 ConfigMap 存储应用程序的配置信息,如数据库连接、API 密钥等。
- 共享配置:多个 Pod 或容器可以通过引用同一个 ConfigMap 来共享配置,方便集中管理。
- 环境变量:可以将配置数据作为环境变量注入到 Pod 中,容器启动时自动加载。
Secret 类型的 YAML 文件参数说明
字段 | 说明 |
---|---|
apiVersion | Kubernetes API 版本,通常为 v1 ,定义资源类型的版本。 |
kind | 资源类型,这里是 Secret ,表示我们正在定义一个 Secret 资源。 |
metadata | 存储 Secret 的元数据,包括名称、命名空间、标签、注解等信息。 |
metadata.name | Secret 的名称,必须唯一。 |
metadata.namespace | Secret 所在的命名空间,默认为 default 。 |
metadata.labels | 标签,键值对形式,用于组织和选择资源。 |
metadata.annotations | 注解,键值对形式,存储非标注数据,通常由外部系统使用。 |
data | 存储 Secret 数据的键值对,每个键表示 Secret 项的名称,值为该 Secret 项的 Base64 编码后的值。 |
data. | 存储的数据,每个键值对的值应该是 Base64 编码的字符串。 |
stringData | 用于存储明文数据,Kubernetes 会自动将其编码为 Base64 格式。 |
stringData. | 存储的明文数据,Kubernetes 会自动将其编码为 Base64 格式。 |
type | Secret 的类型,决定了 Secret 的用途和如何被使用,常见的类型有 Opaque 、kubernetes.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 文件参数说明
字段 | 说明 |
---|---|
apiVersion | Kubernetes API 版本,通常为 autoscaling/v2 或 autoscaling/v2beta2 ,指定 HPA 资源的 API 版本。 |
kind | 资源类型,表示资源是 HorizontalPodAutoscaler 。 |
metadata | 存储 HPA 的元数据,包括名称、命名空间、标签、注解等信息。 |
metadata.name | HPA 的名称,必须在命名空间内唯一。 |
metadata.namespace | HPA 所在的命名空间,默认为 default 。 |
metadata.labels | 标签,键值对形式,用于组织和选择资源。 |
metadata.annotations | 注解,键值对形式,存储非标注数据,通常由外部系统使用。 |
spec | HPA 的规格配置,定义如何自动扩缩容。 |
spec.scaleTargetRef | 指定要进行自动扩缩容的目标资源,通常是 Deployment、ReplicaSet 或 StatefulSet。 |
spec.scaleTargetRef.apiVersion | 目标资源的 API 版本,通常为 apps/v1 。 |
spec.scaleTargetRef.kind | 目标资源的类型,通常为 Deployment 、ReplicaSet 或 StatefulSet 。 |
spec.scaleTargetRef.name | 目标资源的名称,指向需要扩缩容的资源名称。 |
spec.minReplicas | HPA 的最小副本数,Pod 数量的下限。 |
spec.maxReplicas | HPA 的最大副本数,Pod 数量的上限。 |
spec.metrics | 监控的指标,用于决定是否扩容。 |
spec.metrics[].type | 指标的类型,通常为 Resource 或 External 。 |
spec.metrics[].resource | 当 type 为 Resource 时,指定资源类型指标(如 CPU 或 memory)。 |
spec.metrics[].resource.name | 资源名称,通常为 cpu 或 memory 。 |
spec.metrics[].resource.target | 目标资源值,设定扩缩容的标准。 |
spec.metrics[].resource.target.type | 目标类型,通常为 Utilization (百分比)或 Value (绝对值)。 |
spec.metrics[].resource.target.value | 目标值,设置目标资源值。如果类型是 Value ,则为绝对值;如果是 Utilization ,则为百分比。 |
spec.metrics[].external | 当 type 为 External 时,指定外部指标(如自定义指标)。 |
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 文件参数说明
字段 | 说明 |
---|---|
apiVersion | Kubernetes API 版本,通常为 apps/v1 。 |
kind | 资源类型,表示资源是 StatefulSet 。 |
metadata | 存储 StatefulSet 的元数据,包括名称、命名空间、标签、注解等信息。 |
metadata.name | StatefulSet 的名称,必须在命名空间内唯一。 |
metadata.namespace | StatefulSet 所在的命名空间,默认为 default 。 |
metadata.labels | 标签,键值对形式,用于组织和选择资源。 |
metadata.annotations | 注解,键值对形式,存储非标注数据,通常由外部系统使用。 |
spec | StatefulSet 的规格配置,定义如何部署 StatefulSet。 |
spec.replicas | Pod 副本数,定义 StatefulSet 中应该存在多少个 Pod 实例。 |
spec.selector | 选择器,定义 Pod 标签选择条件,必须与 Pod 的标签匹配。 |
spec.selector.matchLabels | Pod 标签选择器。 |
spec.template | Pod 模板,定义 Pod 的具体规格,包括容器、卷、端口等配置。 |
spec.template.metadata | Pod 模板中的元数据。 |
spec.template.metadata.labels | Pod 模板中的标签,通常用来与 spec.selector.matchLabels 匹配。 |
spec.template.spec | Pod 模板中的规格,定义容器、卷、资源请求和限制等信息。 |
spec.template.spec.containers | Pod 中的容器列表。 |
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 管理策略,通常为
|
spec.updateStrategy | 更新策略,定义 StatefulSet 如何处理更新。 |
spec.updateStrategy.type | 更新类型,通常为
|
spec.updateStrategy.rollingUpdate | RollingUpdate 更新类型时的具体配置。 |
spec.updateStrategy.rollingUpdate.partition | 指定更新时的分区数,用于控制同时更新的 Pod 数量。 |
status | StatefulSet 的当前状态,包括 Pod 的当前状态、准备好的 Pod 数量等信息。 |
适用场景:
- 有状态服务:适用于有状态的应用,如数据库、分布式缓存等,保证每个 Pod 的状态不会丢失。
- 稳定的网络标识符:StatefulSet 会为每个 Pod 分配稳定的 DNS 名称,适用于需要稳定标识符的服务。
- 持久化存储:与持久化存储卷(PersistentVolumeClaim)配合使用,每个 Pod 都会分配独立的存储卷。
Ingress 类型的 YAML 文件参数说明
字段 | 说明 |
---|---|
apiVersion | Kubernetes API 版本,通常为 networking.k8s.io/v1 。 |
kind | 资源类型,表示资源是 Ingress 。 |
metadata | 存储 Ingress 的元数据,包括名称、命名空间、标签、注解等信息。 |
metadata.name | Ingress 资源的名称。 |
metadata.namespace | Ingress 所在的命名空间,默认为 default 。 |
metadata.labels | 标签,键值对形式,用于组织和选择资源。 |
metadata.annotations | 注解,键值对形式,存储非标注数据,通常由外部系统使用。 |
spec | Ingress 资源的规格配置,定义路由规则和控制器配置。 |
spec.rules | 访问规则,定义路由规则。 |
spec.rules.host | 主机名,指示应路由到哪个服务。 |
spec.rules.http | HTTP 路由规则。 |
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.tls | TLS 配置,定义如何为访问规则配置 TLS 加密。 |
spec.tls.hosts | 配置启用 TLS 加密的主机名列表。 |
spec.tls.secretName | TLS 证书的 secret 名称。 |
status | 当前 Ingress 的状态,包括已应用的规则和任何错误。 |
适用场景:
- 外部访问:Ingress 通常用于提供 HTTP/HTTPS 访问 Kubernetes 集群中的服务,而不是直接通过 NodePort 或 LoadBalancer 类型的服务来暴露。
- 反向代理:Ingress 可以配置为反向代理,转发请求到多个服务,并提供路由和负载均衡的功能。
- TLS 加密:Ingress 可以配置为支持 TLS 加密,通过指定 TLS 证书为服务启用 HTTPS。
- 流量控制:Ingress 控制流量的路由方式,支持基于路径和主机名的规则配置,可以为不同的路径或主机路由到不同的服务。
PersistentVolume (PV) 类型的 YAML 文件参数说明
字段 | 说明 |
---|---|
apiVersion | Kubernetes API 版本,通常为 v1 。 |
kind | 资源类型,表示资源是 PersistentVolume 。 |
metadata | 存储 PV 的元数据,包括名称、命名空间、标签、注解等信息。 |
metadata.name | PersistentVolume 资源的名称。 |
metadata.namespace | PersistentVolume 所在的命名空间,通常不设置,因为 PV 是集群级别的资源。 |
metadata.labels | 标签,键值对形式,用于组织和选择资源。 |
metadata.annotations | 注解,键值对形式,存储非标注数据,通常由外部系统使用。 |
spec | PersistentVolume 的规格配置,定义存储类型和大小等。 |
spec.capacity | 存储资源的容量。 |
spec.capacity.storage | 存储的大小,单位可以是 Gi 、Mi 、Ti 等。 |
spec.volumeMode | 存储卷的模式,通常是
|
spec.accessModes | 存储卷的访问模式,常见的模式包括
|
spec.persistentVolumeReclaimPolicy | 释放策略,控制当 PVC 删除时 PV 的行为。常见的策略有
|
spec.storageClassName | 存储类名称,指定该 PV 使用的存储类。 |
spec.mountedBy | 已经挂载此 PV 的 Pod 的 UID 列表。 |
spec.local | 如果使用本地存储,指定本地存储路径。 |
spec.local.path | 本地存储路径。 |
spec.nfs | 如果使用 NFS 存储,配置 NFS 参数。 |
spec.nfs.server | NFS 服务器的 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 参数。 |
status | PersistentVolume 的状态信息,包括 phase 。 |
status.phase | 当前 PV 的状态,通常为
|
适用场景:
- 持久存储:用于持久化存储,适用于容器重启后需要保留数据的场景,如数据库、文件存储等。
- 跨 Pod 共享数据:PV 提供了一种方式,允许多个 Pod 访问同一个存储资源,满足应用共享存储的需求。
- 本地存储:如果需要使用物理节点上的磁盘进行存储,可以使用本地存储类型的 PV。
- 云存储集成:在使用云服务(如 AWS EBS、Google Persistent Disk)时,PV 提供了与云存储的集成,能够动态管理存储资源。
PersistentVolumeClaim (PVC) 类型的 YAML 文件参数说明
字段 | 说明 |
---|---|
apiVersion | Kubernetes API 版本,通常为 v1 。 |
kind | 资源类型,表示资源是 PersistentVolumeClaim 。 |
metadata | 存储 PVC 的元数据,包括名称、命名空间、标签、注解等信息。 |
metadata.name | PersistentVolumeClaim 资源的名称。 |
metadata.namespace | PersistentVolumeClaim 所在的命名空间。 |
metadata.labels | 标签,键值对形式,用于组织和选择资源。 |
metadata.annotations | 注解,键值对形式,存储非标注数据,通常由外部系统使用。 |
spec | PersistentVolumeClaim 的规格配置,定义存储请求、访问模式、资源需求等。 |
spec.accessModes | PVC 的访问模式。常见模式包括
|
spec.resources | 资源请求,包含存储大小请求。 |
spec.resources.requests | 请求的存储容量。 |
spec.resources.requests.storage | 请求的存储大小,单位可以是 Gi 、Mi 、Ti 等。 |
spec.resources.limits | 可选的资源上限,通常不设置,仅用于指定最大资源限制。 |
spec.storageClassName | 存储类名称,指定该 PVC 使用的存储类。 |
spec.volumeMode | 存储卷的模式,通常为 Filesystem 或 Block 。 |
spec.selector | PVC 选择的 PV 标签选择器,用于过滤可以绑定的 PV。 |
spec.volumeName | 绑定到 PVC 的 PV 名称,如果已存在一个与 PVC 匹配的 PV,可以直接使用该名称。 |
status | PersistentVolumeClaim 的状态信息,包括 phase 。 |
status.phase | 当前 PVC 的状态,通常为
|
适用场景:
- 存储需求声明:PVC 用于声明 Pod 对持久存储的需求。例如,当数据库或日志服务需要存储数据时,可以使用 PVC 申请存储。
- 存储与 Pod 绑定:PVC 可以与 PV 绑定,提供实际的存储资源。当 Pod 启动时,会自动使用 PVC 绑定的存储卷。
- 存储资源管理:通过 PVC 可以管理存储资源的请求和使用,灵活地选择不同存储后端,支持多种存储类型。
Job 类型的 YAML 文件参数说明
字段 | 说明 |
---|---|
apiVersion | Kubernetes API 版本,通常为 batch/v1 。 |
kind | 资源类型,表示资源是 Job 。 |
metadata | 存储 Job 的元数据,包括名称、命名空间、标签、注解等信息。 |
metadata.name | Job 资源的名称。 |
metadata.namespace | Job 所在的命名空间。 |
metadata.labels | 标签,键值对形式,用于组织和选择资源。 |
metadata.annotations | 注解,键值对形式,存储非标注数据,通常由外部系统使用。 |
spec | Job 的规格配置,定义如何执行 Job、并行任务的数量、重试策略等。 |
spec.parallelism | 并行运行的 Pod 数量,即同时运行多少个 Pod 来完成任务。 |
spec.completions | 完成任务所需的 Pod 数量,通常为 1,表示执行任务 1 次。 |
spec.activeDeadlineSeconds | Job 最大运行时间(单位秒)。如果超出该时间,Job 会被终止。 |
spec.backoffLimit | Job 失败后重试的次数。 |
spec.template | Job 的 Pod 模板,定义 Job 执行时使用的容器和资源配置。 |
spec.template.metadata | Pod 的元数据,定义容器的标签、注解等信息。 |
spec.template.spec | Pod 的规格配置,定义容器、资源、卷等配置。 |
spec.template.spec.containers | 容器配置数组,定义 Job 使用的容器。 |
spec.template.spec.restartPolicy | Pod 的重启策略,通常为 Never 或 OnFailure 。 |
spec.template.spec.volumes | 定义 Job 中使用的存储卷。 |
status | Job 的状态信息,包括任务执行的当前状态。 |
status.succeeded | 已成功完成的 Pod 数量。 |
status.failed | 失败的 Pod 数量。 |
status.active | 当前正在运行的 Pod 数量。 |
status.startTime | Job 开始执行的时间。 |
status.completionTime | Job 完成的时间。 |
适用场景:
- 批处理任务:Job 适用于需要按批处理方式执行的任务,如数据库备份、日志处理等。Job 可以确保任务在指定的 Pod 数量完成后结束。
- 并行任务:Job 支持并行执行多个 Pod,适用于大规模数据处理或任务分发的场景。
- 定时任务:Job 可以与 CronJob 配合使用,定时执行某些批处理任务。
CronJob 类型的 YAML 文件参数说明
字段 | 说明 |
---|---|
apiVersion | Kubernetes API 版本,通常为 batch/v1 。 |
kind | 资源类型,表示资源是 CronJob 。 |
metadata | 存储 CronJob 的元数据,包括名称、命名空间、标签、注解等信息。 |
metadata.name | CronJob 资源的名称。 |
metadata.namespace | CronJob 所在的命名空间。 |
metadata.labels | 标签,键值对形式,用于组织和选择资源。 |
metadata.annotations | 注解,键值对形式,存储非标注数据,通常由外部系统使用。 |
spec | CronJob 的规格配置,定义如何执行任务、任务的调度时间等。 |
spec.schedule | Cron 表达式,指定 CronJob 执行的时间计划。 |
spec.jobTemplate | CronJob 运行时创建的 Job 模板。 |
spec.jobTemplate.spec | Job 模板的规格配置,定义 Job 创建时使用的容器、资源、重启策略等。 |
spec.jobTemplate.spec.template | Job 模板中的 Pod 模板,定义容器和 Pod 的资源配置。 |
spec.jobTemplate.spec.template.spec.containers | 容器配置,定义 CronJob 执行时使用的容器镜像及命令。 |
spec.jobTemplate.spec.template.spec.restartPolicy | Pod 的重启策略,通常为 Never 。 |
spec.successfulJobsHistoryLimit | 保留成功执行的 CronJob 的数量。 |
spec.failedJobsHistoryLimit | 保留失败执行的 CronJob 的数量。 |
spec.concurrencyPolicy | CronJob 的并发策略。可以是
|
spec.startingDeadlineSeconds | CronJob 开始执行的最后期限,单位是秒。如果在该时间范围内未开始执行,CronJob 将被视为失败。 |
status | CronJob 的状态信息,包括 CronJob 最后一次的执行状态等。 |
status.lastScheduleTime | CronJob 最后一次成功调度的时间。 |
适用场景:
- 定时任务:CronJob 适用于需要定时执行的任务,如每天运行的备份任务、定期报告生成等。
- 周期性任务:CronJob 可以根据设定的 Cron 表达式执行任务,支持复杂的调度模式,如每周、每月等。
- 清理任务:定期清理日志、过期文件等。
- 数据同步:例如,定期从外部系统同步数据。