×

Pod 是一个或多个容器一起部署在一个主机上,是可定义、部署和管理的最小计算单元。

了解 Pod

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

Pod 有一个生命周期;它们被定义,然后被分配到节点上运行,然后它们运行,直到它们的容器(s) 退出或由于其他原因被移除。根据策略和退出代码,Pod 可能会在退出后被移除,或者可以保留以访问其容器的日志。

OpenShift Dedicated 将 Pod 视为在很大程度上是不可变的;在 Pod 运行时,无法更改 Pod 定义。OpenShift Dedicated 通过终止现有 Pod 并使用修改后的配置、基础镜像或两者都重新创建它来实现更改。Pod 也被视为可消耗的,并且在重新创建时不会维护状态。因此,Pod 通常应由更高级别的控制器管理,而不是由用户直接管理。

未由复制控制器管理的裸 Pod 在节点中断时不会重新调度。

Pod 配置示例

OpenShift Dedicated 利用 Kubernetes 的 Pod 概念,它是一个或多个容器一起部署在一个主机上,是可定义、部署和管理的最小计算单元。

以下是 Pod 定义示例。它演示了 Pod 的许多特性,其中大部分在其他主题中进行了讨论,因此这里只简要提及。

Pod 对象定义 (YAML)
kind: Pod
apiVersion: v1
metadata:
  name: example
  labels:
    environment: production
    app: abc (1)
spec:
  restartPolicy: Always (2)
  securityContext: (3)
    runAsNonRoot: true
    seccompProfile:
      type: RuntimeDefault
  containers: (4)
    - name: abc
      args:
      - sleep
      - "1000000"
      volumeMounts: (5)
       - name: cache-volume
         mountPath: /cache (6)
      image: registry.access.redhat.com/ubi7/ubi-init:latest (7)
      securityContext:
        allowPrivilegeEscalation: false
        runAsNonRoot: true
        capabilities:
          drop: ["ALL"]
      resources:
        limits:
          memory: "100Mi"
          cpu: "1"
        requests:
          memory: "100Mi"
          cpu: "1"
  volumes: (8)
  - name: cache-volume
    emptyDir:
      sizeLimit: 500Mi
1 Pod 可以使用一个或多个标签进行“标记”,然后可以使用这些标签来选择和管理单个操作中的 Pod 组。标签以键/值格式存储在metadata 哈希中。
2 Pod 重新启动策略,可能的值为AlwaysOnFailureNever。默认值为Always
3 OpenShift Dedicated 为容器定义安全上下文,该上下文指定是否允许它们作为特权容器运行、以其选择的用户名运行等等。默认上下文非常严格,但管理员可以根据需要修改此上下文。
4 containers 指定一个或多个容器定义的数组。
5 容器指定外部存储卷在容器内挂载的位置。
6 指定要为 Pod 提供的卷。卷挂载到指定的路径。请勿挂载到容器根目录/,或主机和容器中路径相同的任何路径。如果容器具有足够的权限(例如主机/dev/pts文件),这可能会损坏您的主机系统。使用/host挂载主机是安全的。
7 Pod 中的每个容器都是从其自身的容器镜像实例化的。
8 Pod 定义了其容器可用的存储卷。

如果将具有大量文件的持久卷附加到 Pod,则这些 Pod 可能会失败或启动时间很长。更多信息,请参见 在 OpenShift 中使用具有大量文件的持久卷时,为什么 Pod 无法启动或需要过长时间才能达到“就绪”状态?

此 Pod 定义不包含在 Pod 创建并开始其生命周期后由 OpenShift Dedicated 自动填充的属性。 Kubernetes Pod 文档 详细介绍了 Pod 的功能和用途。

其他资源