第 1 章 Pod 规格的变化


Kubernetes 中的 pod 是最小的计算单元,由单一主机上的一个或多个容器共享网络和存储组成。Red Hat Ansible Automation Platform 使用默认的 pod 规格,该规格可通过用户定义的 YAML 或 JSON 文档进行自定义。

1.1. 简介

pod 的 Kubernetes 概念是共同部署在同一主机上的一个或多个容器,也是可被定义、部署和管理的最小计算单元。

Pod 等同于一个容器的虚拟机实例(物理或虚拟)。每个 pod 分配有自己的内部 IP 地址,因此拥有完整的端口空间,并且 pod 内的容器可以共享其本地存储和网络。

Pod 具有生命周期。它们经过定义,然后分配到某一节点上运行,然后运行它们,直到容器退出或它们因为其他原因被删除为止。根据策略和退出代码,Pod 可在退出后删除,或被保留下来以启用对容器日志的访问。

Red Hat Ansible Automation Platform 提供了一个简单的默认 pod 规格,但您可以提供一个自定义 YAML 或 JSON 文档来覆盖默认的 pod 规格。此自定义文档使用自定义字段,如 ImagePullSecrets,它们可以被序列化为有效的 Pod JSON 或 YAML。

可在 Openshift Online 文档中找到完整的选项列表。

提供长时间运行的服务的 pod 示例

这个示例展示了 pod 的许多特性,其中大多数已在其他主题中阐述,因此这里仅简略提及:

apiVersion: v1
kind: Pod
metadata:
  annotations: { ... }                      
1

  labels:
    deployment: docker-registry-1
    deploymentconfig: docker-registry
    docker-registry: default
  generateName: docker-registry-1-          
2

spec:
  containers:                               
3

  - env:         	            	  
4

    - name: OPENSHIFT_CA_DATA
      value: ...
    - name: OPENSHIFT_CERT_DATA
      value: ...
    - name: OPENSHIFT_INSECURE
      value: "false"
    - name: OPENSHIFT_KEY_DATA
      value: ...
    - name: OPENSHIFT_MASTER
      value: https://master.example.com:8443
    image: openshift/origin-docker-registry:v0.6.2 
5

    imagePullPolicy: IfNotPresent
    name: registry
    ports:   		                          
6

    - containerPort: 5000
      protocol: TCP
    resources: {}                                    
7

    securityContext: { ... }    		 
8

    volumeMounts:                       	   
9

    - mountPath: /registry
      name: registry-storage
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: default-token-br6yz
      readOnly: true
  dnsPolicy: ClusterFirst
  imagePullSecrets:                                  
10

  - name: default-dockercfg-at06w
  restartPolicy: Always  			     
11

  serviceAccount: default			    
12

  volumes:        	                            
13

  - emptyDir: {}
    name: registry-storage
  - name: default-token-br6yz
    secret:
      secretName: default-token-br6yz
Copy to Clipboard Toggle word wrap
Expand
标签描述

annotations:

pod 可以被“标上”一个或多个标签,然后使用这些标签在一个操作中选择和管理多组 pod。标签以 key:value 格式存储在 metadata 散列中。本例中的一个标签是 docker-registry=default

generateName:

Pod 在其命名空间内需要具有唯一名称。一个 pod 定义可以使用 generateName 属性指定名称的基础,并且会自动添加随机字符来生成唯一名称。

containers:

containers 指定一组容器定义。在这种情况下(在大多数情况下),仅定义一个容器。

env:

环境变量将必要的值传递给每个容器。

image:

pod 中的每个容器使用自己的 Docker 格式的容器镜像进行安装。

ports:

容器可以绑定到 pod IP 上提供的端口。

resources:

指定 pod 时,您可以选择性地描述容器需要的每个资源量。要指定的最常见资源是 CPU 和内存 (RAM)。其他资源可用。

securityContext:

OpenShift Online 为容器定义了一个安全上下文,用于指定是否允许其作为特权容器运行,作为所选用户运行,等等。默认上下文的限制性比较强,但管理员可以根据需要进行更改。

volumeMounts:

容器指定外部存储卷应当挂载到容器内的什么位置上。在本例中,一个卷用于存储 registry 的数据,另一个卷则提供凭证的访问途径,registry 需要这些凭证来向 OpenShift Online API 发出请求。

ImagePullSecrets

一个 pod 可以包含一个或多个容器,这些容器必须从某些 registry 中拉取。如果容器来自需要身份验证的 registry,您可以提供一个 ImagePullSecrets 列表,它引用命名空间中的 ImagePullSecrets。指定这些可让 Red Hat OpenShift Container Platform 在拉取镜像时与容器 registry 进行身份验证。如需更多信息,请参阅 Kubernetes 文档中的 Pod 和容器的资源管理

restartPolicy:

pod 重启策略,可能的值有 AlwaysOnFailureNever。默认值为 Always

serviceAccount:

Pod 对 OpenShift Online API 发出请求是一种比较常见的模式,它有一个 serviceAccount 字段,用于指定 pod 在发出请求时使用哪个服务帐户用户进行身份验证。这可以为自定义基础架构组件提供精细的访问控制。

volumes:

pod 定义了可供其容器使用的存储卷。在本例中,它提供了一个用于存储 registry 的临时卷,以及一个包含服务帐户凭证的 secret 卷。

您可以使用自动化控制器在基于 Kubernetes 的集群中运行作业的 pod,并在自动化控制器 UI 中编辑 pod 规格。用于创建运行作业的 pod 的 pod 规格,采用 YAML 格式。有关编辑 pod 规格的更多信息,请参阅自定义 pod 规格

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat