v>
在kubernetes中基本所有资源的一级属性都是一样的,主要包含5部分:
apiVersion <string> 版本,由kubernetes内部定义,版本号必须可以用 kubectl api-versions 查询到
kind <string> 类型,由kubernetes内部定义,版本号必须可以用 kubectl api-resources 查询到
metadata <Object> 元数据,主要是资源标识和说明,常用的有name、namespace、labels等
spec <Object> 描述,这是配置中最重要的一部分,里面是对各种资源配置的详细描述
status <Object> 状态信息,里面的内容不需要定义,由kubernetes自动生成
1 apiVersion: v1 #必选,版本号,例如v1 2 kind: Pod #必选,资源类型,例如 Pod 3 metadata: #必选,元数据 4 name: string #必选,Pod名称namespace: string #Pod所属的命名空间,默认为"default" 5 labels: #自定义标签列表 6 - name: string 7 spec: #必选,Pod中容器的详细定义 8 containers: #必选,Pod中容器列表 9 - name: string #必选,容器名称 10 image: string #必选,容器的镜像名称 11 imagePullPolicy: [ Always|Never|IfNotPresent ] #获取镜像的策略,默认策略是IfNotPresent 12 command: [string] #容器的启动命令列表,如不指定,使用打包时使用的启动命令 13 args: [string] #容器的启动命令参数列表 14 workingDir: string #容器的工作目录 15 volumeMounts: #挂载到容器内部的存储卷配置 16 - name: string #引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名 17 mountPath: string #存储卷在容器内mount的绝对路径,应少于512字符 18 readOnly: boolean #是否为只读模式 19 ports: #需要暴露的端口库号列表 20 - name: string #端口的名称 21 containerPort: int #容器需要监听的端口号 22 hostPort: int #容器所在主机需要监听的端口号,默认与Container相同 23 protocol: string #端口协议,支持TCP和UDP,默认TCP 24 env: #容器运行前需设置的环境变量列表 25 - name: string #环境变量名称 26 value: string #环境变量的值 27 resources: #资源限制和请求的设置 28 limits: #资源限制的设置 29 cpu: string #Cpu的限制,单位为core数,将用于docker run --cpu-shares参数 30 memory: string #内存限制,单位可以为Mib/Gib,将用于docker run --memory参数 31 requests: #资源请求的设置 32 cpu: string #Cpu请求,容器启动的初始可用数量 33 memory: string #内存请求,容器启动的初始可用数量 34 lifecycle: #生命周期钩子 35 postStart: #容器启动后立即执行此钩子,如果执行失败,会根据重启策略进行重启 36 preStop: #容器终止前执行此钩子,无论结果如何,容器都会终止 37 livenessProbe: #对Pod内各容器健康检查的设置,当探测无响应几次后将自动重启该容器 38 exec: #对Pod容器内检查方式设置为exec方式 39 command: [string] #exec方式需要制定的命令或脚本 40 httpGet: #对Pod内个容器健康检查方法设置为HttpGet,需要制定Path、port 41 path: string 42 port: number 43 host: string 44 scheme: string 45 HttpHeaders: 46 - name: string 47 value: string 48 tcpSocket: #对Pod内个容器健康检查方式设置为tcpSocket方式 49 port: number 50 initialDelaySeconds: 0 #容器启动完成后首次探测的时间,单位为秒 51 timeoutSeconds: 0 #对容器健康检查探测等待响应的超时时间,单位秒,默认1秒 52 periodSeconds: 0 #对容器监控检查的定期探测时间设置,单位秒,默认10秒一次 53 successThreshold: 0 54 failureThreshold: 0 55 securityContext: 56 privileged: false 57 restartPolicy: [Always | Never | OnFailure] #Pod的重启策略,默认是always 58 nodeName: <string> #设置NodeName表示将该Pod调度到指定到名称的node节点上 59 nodeSelector: obeject #设置NodeSelector表示将该Pod调度到包含这个label的node上 60 imagePullSecrets: #Pull镜像时使用的secret名称,以key:secretkey格式指定 61 - name: string 62 hostNetwork: false #是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络 63 volumes: #在该pod上定义共享存储卷列表 64 - name: string #共享存储卷名称 (volumes类型有很多种) 65 emptyDir: {} #类型为emtyDir的存储卷,与Pod同生命周期的一个临时目录。为空值 66 hostPath: string #类型为hostPath的存储卷,表示挂载Pod所在宿主机的目录 67 path: string #Pod所在宿主机的目录,将被用于同期中mount的目录 68 secret: #类型为secret的存储卷,挂载集群与定义的secret对象到容器内部 69 scretname: string 70 items: 71 - key: string 72 path: string 73 74 configMap: #类型为configMap的存储卷,挂载预定义的configMap对象到容器内部 75 name: string 76 items: 77 - key: string 78 path: string