K8S 创建pod yaml文件详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S 创建pod yaml文件详解相关的知识,希望对你有一定的参考价值。

参考技术A

以下参数的解释由于是分段的,所以具体所处的层级,对基础的必选参数了解后,进行分辨

 在容器列表containers中的各项定义

 健康检查有三种方式分别是通过脚本或命令、通过httpGet、通过tcp检测

Pod 定义详解

文章目录

Yaml 格式的 Pod 定义文件的完整内容如下

apiVersion: v1
kind: Pod
metadate: 
  name: string
  namespace: string
  labels:
    - name: string
  annotations:
    - name: string
spce:
  containers:
  - name: string
    image: string
    imagePullPolicy: [Always | Never | IfNotPresent]
    command: [string]
    args: [string]
    workingDir: string
    vilumnMounts:
    - name: string
      mountsPath: string
      readOnly: boolean
    ports:
    - name: string
      containerPort: int
      hostPort: int
      protocol: string
    env:
    - name: string
      value: string
    resource:
      limits:
        cpu: string
        memory: string
      requests:
        cpu: string
        memory: string
    livenessProbe:
      exec:
        command: [string]
      httpGet:
        path: string
        port: string
        host: string
        scheme: string
        httpHeaders:
        - name: string
          values: string
      tcpSocket:
        port: number
      initialDelaySeconds: 0
      timeoutSeconds: 0
      successThreshold: 0
      failureThreshold: 0
    securityContext:
      privileged: false
  restartPolicy: [Always | Never | OnFailure]
  nodeSelector: object
  imagePullSecrets:
  - name: string
  hostNetwork: false
  Volumes:
  - name: string
    emptyDir: 
    hostPath:
      path: string
    secret:
      secretName: string
      items:
      - key:string
        path: string
    configMap:
      name: string
      items:
      - key: string
        path: string

对 Pod 定义文件模板中各属性的详细说明

属性名称取值类型是否必选取值说明备注
apiVersionstringRequired版本号
kindstringRequired资源类型
meatdateobjectRequired元数据
m.namestringRequiredpod 名称
m.namespacestringRequiredpod 所属命名空间默认为 default
m.labelslist自定义标签列表
m.annotationslist自定义注解列表
specobjectRequiredpod 中容器的详细定义
s.containerslistRequiredpod 中的容器列表
s.c.namestringRequired容器名称
s.c.imagestringRequired容器镜像
s.c.imagePullPolicystring容器拉取策略:Always(默认) | IfNotPresent | Never
s.c.commandlist容器启动命令列表如果不指定,则使用镜像打包时设定的启动命令
s.c.argslist容器启动命令参数列表
s.c.workingDirstring容器的工作目录
s.c.volumeMountslist挂载到容器内部的存储卷配置
s.c.v.namestring引用 pod 定义的共享存储卷名称
s.c.v.mountPathstring存储卷在容器内挂载的绝对路径
s.c.v.readOnlyboolean是否为只读模式默认为读写模式
s.c.portslist容器的端口号列表
s.c.p.namestring端口的名称
s.c.p.containerPortstring容器需要监听的端口号
s.c.p.hostPoststring容器所在的主机需要监听的端口号设置该项,同一台宿主机将无法启动该容器的第二份副本
s.c.p.protocolstring端口协议,支持 TCP 和 UDP,默认使用 TCP
s.c.envlist容器运行前虚设置的环境变量列表
s.c.e.namestring环境变量的名称
s.c.e.valuestring环境变量的值
s.c.resourcesobject资源限制和资源请求的设置
s.c.r.limitsobject资源限制的设置
s.c.r.l.cpustringCPU 限制,单位为 core 核数
s.c.r.l.memorystring内存限制,单位可以为 MiB,GiB 等
s.c.r.requestsobject资源请求的设置
s.c.r.r.cpustringCPU 请求
s.c.r.r.memorystring内存请求
s.volumeslist在该 pod 上定义的共享存储列表
s.v.namestring共享存储卷的名称1
s.v.emptyDirobject类型为 emptyDir 的存储卷
s.v.hostPathobject类型为 hostPath 的存储卷
s.v.h.pathstringPod 容器挂载的宿主机目录
s.v.secretobject类型为 secret 的存储卷表示挂载集群预定义的 Secret 到容器内部
s.v.configMapobject类型为 configMap 的存储卷表示挂载集群预定义的 ConfigMap 到容器内部
s.livenessProbeobject对 Pod 内各容器健康检查的设置当探测几次无反应后,将依据重启策略干活
s.l.execobject对 Pod 内各容器健康检查的设置,exec 方式
s.l.e.commandstringexec 方式需要制定的命令或脚本
s.l.httpGetobject对 Pod 内各容器健康检查的设置,httpGet 方式
s.l.tcpSocketobject对 Pod 内各容器健康检查的设置,tcpSocket 方式
s.l.initDelaySecondsnumber容器启动完成后首次探测的时间
s.l.timeoutSecondsnumber对容器健康检查的探测等待超时时间,默认为1s
s.l.periodSecondsnumber对容器健康的定期探测时间设置,默认 10 s 一次
s.restartPolicystringPod 的重启方式Always | Never | OnFailure,默认为 Always
s.nodeSelectorobject设置 node 的 label,pod 将被指定到具有这些 Label 的 node 上
s.imagePullSecretsobjectpull 推送镜像时使用的 Secret 名称
s.hostNetworkboolean是否使用主机网络模式,默认为false使用主机网络模式,该 Pod 将无法在宿主机上启动第二个副本

如果记不住

如果上面的详细清单记不住,可以使用如下kubectl explain工具随时查看:

#小提示:
#   在这里,可通过一个命令来查看每种资源的可配置项
#   kubectl explain 资源类型         查看某种资源可以配置的一级属性
#   kubectl explain 资源类型.属性     查看属性的子属性
[root@k8s-master01 ~]# kubectl explain pod
KIND:     Pod
VERSION:  v1
FIELDS:
   apiVersion   <string>
   kind <string>
   metadata     <Object>
   spec <Object>
   status       <Object>
 
[root@k8s-master01 ~]# kubectl explain pod.metadata
KIND:     Pod
VERSION:  v1
RESOURCE: metadata <Object>
FIELDS:
   annotations  <map[string]string>
   clusterName  <string>
   creationTimestamp    <string>
   deletionGracePeriodSeconds   <integer>
   deletionTimestamp    <string>
   finalizers   <[]string>
   generateName <string>
   generation   <integer>
   labels       <map[string]string>
   managedFields        <[]Object>
   name <string>
   namespace    <string>
   ownerReferences      <[]Object>
   resourceVersion      <string>
   selfLink     <string>
   uid  <string>

以上是关于K8S 创建pod yaml文件详解的主要内容,如果未能解决你的问题,请参考以下文章

K8S中 yaml 文件详解(poddeploymentservice)

K8S中 yaml 文件详解(poddeploymentservice)

k8s的yaml文件配置详解(转))

k8s pod配置文件ymal详解

k8s pod配置文件ymal详解

k8s pod配置文件ymal详解