k8s-实战入门-Pod详解(十)

源代码 2024-9-25 20:29:23 66 0 来自 中国
本章节将详细先容Pod资源的各种设置(yaml)和原理。
5.1 Pod先容

5.1.1 Pod结构


每个Pod中都可以包罗一个大概多个容器,这些容器可以分为两类:

  • 用户步伐所在的容器,数量可多可少。
  • Pause容器,这是每个Pod都会有的一个根容器,它的作用有两个:
    可以以它为依据,评估整个Pod的康健状态
    可以在根容器上设置IP所在,别的容器都此IP(Pod IP),以实现Pod内部的网路通信
    这里是Pod内部的通讯,Pod的之间的通讯采取虚拟二层网络技能来实现,我们当前情况用的是Flannel
5.1.2 Pod界说

下面是Pod的资源清单:
apiVersion: v1     #必选,版本号,比方v1kind: Pod         #必选,资源类型,比方 Podmetadata:         #必选,元数据  name: string     #必选,Pod名称  namespace: string  #Pod所属的定名空间,默以为"default"  labels:           #自界说标签列表    - name: string                 spec:  #必选,Pod中容器的详细界说  containers:  #必选,Pod中容器列表  - name: string   #必选,容器名称    image: string  #必选,容器的镜像名称    imagePullPolicy: [ Always|Never|IfNotPresent ]  #获取镜像的计谋     command: [string]   #容器的启动命令列表,如不指定,使用打包时使用的启动命令    args: [string]      #容器的启动命令参数列表    workingDir: string  #容器的工作目次    volumeMounts:       #挂载到容器内部的存储卷设置    - name: string      #引用pod界说的共享存储卷的名称,需用volumes[]部分界说的的卷名      mountPath: string #存储卷在容器内mount的绝对路径,应少于512字符      readOnly: boolean #是否为只读模式    ports: #必要袒露的端口库号列表    - name: string        #端口的名称      containerPort: int  #容器必要监听的端标语      hostPort: int       #容器所在主机必要监听的端标语,默认与Container雷同      protocol: string    #端口协议,支持TCP和UDP,默认TCP    env:   #容器运行前需设置的情况变量列表    - name: string  #情况变量名称      value: string #情况变量的值    resources: #资源限定和哀求的设置      limits:  #资源限定的设置        cpu: string     #Cpu的限定,单位为core数,将用于docker run --cpu-shares参数        memory: string  #内存限定,单位可以为Mib/Gib,将用于docker run --memory参数      requests: #资源哀求的设置        cpu: string    #Cpu哀求,容器启动的初始可用数量        memory: string #内存哀求,容器启动的初始可用数量    lifecycle: #生命周期钩子        postStart: #容器启动后立刻执行此钩子,假如执行失败,会根据重启计谋举行重启        preStop: #容器停止前执行此钩子,无论结果怎样,容器都会停止    livenessProbe:  #对Pod内各容器康健查抄的设置,当探测无相应频频后将自动重启该容器      exec:         #对Pod容器内查抄方式设置为exec方式        command: [string]  #exec方式必要订定的命令或脚本      httpGet:       #对Pod内个容器康健查抄方法设置为HttpGet,必要订定Path、port        path: string        port: number        host: string        scheme: string        HttpHeaders:        - name: string          value: string      tcpSocket:     #对Pod内个容器康健查抄方式设置为tcpSocket方式         port: number       initialDelaySeconds: 0       #容器启动完成后初次探测的时间,单位为秒       timeoutSeconds: 0          #对容器康健查抄探测等候相应的超时时间,单位秒,默认1秒       periodSeconds: 0           #对容器监控查抄的定期探测时间设置,单位秒,默认10秒一次       successThreshold: 0       failureThreshold: 0       securityContext:         privileged: false  restartPolicy: [Always | Never | OnFailure]  #Pod的重启计谋  nodeName: <string> #设置NodeName体现将该Pod调理到指定到名称的node节点上  nodeSelector: obeject #设置NodeSelector体现将该Pod调理到包罗这个label的node上  imagePullSecrets: #Pull镜像时使用的secret名称,以key:secretkey格式指定  - name: string  hostNetwork: false   #是否使用主机网络模式,默以为false,假如设置为true,体现使用宿主机网络  volumes:   #在该pod上界说共享存储卷列表  - name: string    #共享存储卷名称 (volumes类型有很多种)    emptyDir: {}       #类型为emtyDir的存储卷,与Pod同生命周期的一个暂时目次。为空值    hostPath: string   #类型为hostPath的存储卷,体现挂载Pod所在宿主机的目次      path: string                #Pod所在宿主机的目次,将被用于同期中mount的目次    secret:          #类型为secret的存储卷,挂载集群与界说的secret对象到容器内部      scretname: string        items:           - key: string        path: string    configMap:         #类型为configMap的存储卷,挂载预界说的configMap对象到容器内部      name: string      items:      - key: string        path: string小提示:# 在这里,可通过一个命令来查察每种资源的可设置项#  kubectl **explain** 资源类型        查察某种资源可以设置的一级属性# kubectl explain 资源类型.属性    查察属性的子属性[root@master ~]# kubectl explain pod[root@master ~]# kubectl explain pod.metadata在kubernetes中根本全部资源的一级属性都是一样的,重要包罗5部分: apiVersion  <string>    版本,由kubernetes内部界说,版本号必须可以用 kubectl api-versions 查询到 kind <string>                类型,由kubernetes内部界说,版本号必须可以用 kubectl api-resources 查询到metadata  <Object>    元数据,重要是资源标识和分析,常用的有name、namespace、labels等> > spec <Object>              形貌,这是设置中最紧张的一部分,内里是对各种资源设置的详细形貌               > > status  <Object>            状态信息,内里的内容不必要界说,由kubernetes自动天生kubectl apiversions 4.png kubectl api-resourceskubectl get pods nginx-64777cd554-4k4pf -n dev -o yaml 6.png

在上面的属性中,spec是接下来研究的重点,继承看下它的常见子属性:
containers  <[]Object>      容器列表,用于界说容器的详细信息nodeName <String>          根据nodeName的值将pod调理到指定的Node节点上nodeSelector  <map[]>      根据NodeSelector中界说的信息选择将该Pod调理到包罗这些label的Node 上hostNetwork  <boolean>    是否使用主机网络模式,默以为false,假如设置为true,体现使用宿主机网络volumes      <[]Object>      存储卷,用于界说Pod上面挂在的存储信息restartPolicy <string>      重启计谋,体现Pod在遇到故障的时间的处置惩罚计谋kubectl explain pods.spec 8.png
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 20:26, Processed in 0.138156 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表