深入解读核心资源Pod(二)

发布时间 2023-07-06 15:45:40作者: 休耕

一、Pod 资源清单

Pod 资源清单详解

apiVersion: v1          # 版本号,例如v1
kind: Pod               # 资源类型,例如Pod
metadata:               # 元数据,包含name、namespace、labels等
  name: string             # Pod名称,例如nginx
  namespace: string        # Pod所属的命名空间,例如default
  labels:                  # 自定义标签,例如app: nginx
    - name: string            # 标签名称,例如app
  annotations:             # 自定义注解,例如author: xxx
    - name: string            # 注解名称,例如author
spec:                   # Pod的规格(容器的详细定义)
  containers:             # 容器列表,一个Pod可以有多个容器
    - name: string            # 容器名称,例如nginx
      image: string           # 容器使用的镜像,例如nginx:1.7.9
      imagePullPolicy: PullIfNotPresent  # 镜像拉取策略,例如IfNotPresent、Always、Never
      command: [string]       # 容器启动命令,例如["/bin/sh"]
      args: [string]          # 容器启动参数,例如["-c", "echo hello"]
      workingDir: string      # 容器工作目录,例如/var/www
      volumeMounts:           # 挂载到容器内部的存储卷配置
        - name: string            # 存储卷名称,例如www
          mountPath: string       # 存储卷挂载路径,例如/var/www
          readOnly: boolean       # 是否只读,例如false
      ports:                  # 容器监听的端口配置
        - name: string            # 端口名称,例如http
          containerPort: int      # 容器监听的端口号,例如80
          hostPort: int           # Pod监听的端口号,例如80
          protocol: string        # 端口使用的协议,例如TCP
      env:                    # 容器运行前需设置的环境变量
        - name: string            # 环境变量名称,例如VERSION
          value: string           # 环境变量的值,例如v1
      resources:              # 容器的资源限制和请求配置
        limits:                   # 资源限制的配置
          cpu: string              # CPU的限制,单位为core数
          memory: string           # 内存的限制,单位为bytes或者MiB或者GiB
        requests:                 # 资源请求的配置
          cpu: string              # CPU的请求,容器启动的初始可用数量
          memory: string           # 内存的请求,容器启动的初始可用内存
      livenessProbe:          # 对Pod内个容器健康检查的配置,检查方法:exec、httpGet、tcpSocket
        exec:                     # 对 Pod 容器内检查方式设置为 exec 方式
          command: [string]         # exec方式需要制定的命令或者脚本
        httpGet:                  # 对 Pod 容器内检查方式设置为 httpGet 方式
          path: string              # HTTP请求路径,例如/healthz
          port: int                 # HTTP请求端口,例如8080
          host: string              # HTTP请求HOST,例如example.com
          scheme: string            # HTTP请求scheme,例如HTTP
          httpHeaders:              # HTTP请求头
            - name: string            # HTTP请求头名称,例如X-Custom-Header
              value: string           # HTTP请求头的值,例如Awesome
        tcpSocket:                # 对 Pod 容器内检查方式设置为 tcpSocket 方式
          port: int                 # TCP请求端口,例如8080
        initialDelaySeconds: int  # 容器启动完成后首次探测的时间,单位为秒,默认为0
        timeoutSeconds: int       # 探测等待响应的超时时间,单位为秒,默认为1
        periodSeconds: int        # 探测之间的间隔时间,单位为秒,默认为10
        successThreshold: int     # 探测成功的连续次数,默认为1
        failureThreshold: int     # 探测失败的连续次数,默认为3
        securityContext:          # Pod 安全上下文配置
          privileged: boolean         # 是否特权模式,默认为false
      restartPolicy: string   # Pod内个容器的重启策略,Always、OnFailure、Never,默认为Always
        nodeSelector: object      # 节点选择器,用于指定Pod调度到的节点
        imagePullSecrets:         # 镜像拉取凭证,用于从私有仓库拉取镜像
          - name: string              # 镜像拉取凭证名称,例如regsecret
        hostNetwork: boolean      # 是否使用主机网络模式,默认为false(不使用)
        volumes:                  # 在该pod上定义共享存储卷列表
        - name: string                # 共享存储卷名称,例如www
          emptyDir: {}                # 类型为emptyDir的存储卷,与Pod同生命周期的临时存储
          hostPath:                   # 类型为hostPath的存储卷,表示挂载pod所在宿主机的目录
            path: string                 # pod所在宿主机的目录,将被用于存储卷的挂载
          secret:                     # 类型为secret的存储卷,用于将Secret以文件或目录的形式挂载到Pod中
            secretName: string           # 密文存储卷名称
            items:                       # 配置文件存储卷项列表
              - key: string                 # 配置文件存储卷项的key
                path: string                # 配置文件存储卷项的路径
          configMap:                  # 类型为configMap的存储卷,用于将ConfigMap以文件或目录的形式挂载到Pod中
            name: string                 # 配置文件存储卷名称
            items:                       # 配置文件存储卷项列表
              - key: string                 # 配置文件存储卷项的key
                path: string                # 配置文件存储卷项的路径

二、node节点选择器