当前位置:   article > 正文

K8S 学习四(POD详解)_k8s get pod

k8s get pod

POD结构

 每个pod中都可以包含一个或者多个容器,这些容器可以分为两类:

1) 用户程序所在的容器,数量可多可少(上图的第一、第二层)

2) Pause容器,这是每个pod都会有的一个根容器,它的作用有两个 :

    2.1)可以以它为依据,评估整个Pod的健康状态

    2.2) 可以在根容器上设置IP地址,其他容器都以此IP(Pod ip),以实现POD内部的网路通信

             这里POD内部的通讯,POD之间的通讯采用虚拟二层网络技术来实现,我们当前用的环境是Flannel.

定义Pod

下面是pod的资源清单:

  1. #下面是Pod的资源清单
  2. apiVersion: v1 #必选版本号,例如v1
  3. kind: Pod #必选,资源类型,例如Pod
  4. metadata: #必选,元数据
  5. name: string #必须,Pod名称
  6. namespace: string #Pod所属的命名空间,默认为:default
  7. labels: #自定义标签列表
  8. - name: string
  9. spec: #必选,Pod中容器的详细定义
  10. containers: #必选,Pod中容器列表
  11. - name: string #必选,容器名称
  12. image: string #必选,容器的镜像名称
  13. imagePullPolicy: [ Always|Never|IfNotPresent ] #获取镜像的策略
  14. command: [string] #容器的启动命令列表,如不指定,使用打包时使用的启动命令
  15. args: [string] #容器启动命令参数列表
  16. workingDir: string #容器的工作目录
  17. volumeMounts: #挂载到容器 内部的储存卷配置
  18. - name: string #应用pod定义的共享储存卷的名称,需要volumens[]部门定义的卷名
  19. mountPath: string #存储卷在容器内mount的绝对路径,应该少于512字符
  20. readOnly: boolean #是否为制度模式
  21. ports: #需要暴露的端口库列表
  22. - name: string #端口名称
  23. containerPort: int #容器需要监听的端口号
  24. hostPort: int #容器所在主机需要监听的端口号,默认与Container相同
  25. protocol: string #端口协议支持TCP和UDP,默认TCP
  26. env: #容器运行钱需要设置的环境变量列表
  27. - name: string #环境变量名称
  28. value: string #环境变量的值
  29. resources: #资源限制和请求的设置
  30. limits: #支援限制的设置
  31. cpu: string #CPu的限制,单位为core数,将用于docker run --cpu-shares参数
  32. memory: string #内存限制,单位可以为mib、gib,将用于dockeer run --momory参数
  33. requests: #资源请求的设置
  34. cpu: string #Cpu请求,容器启动的初始可用数量
  35. memory: string #内存请求,容器启动的出师可用数量
  36. lifecycle: #生命周期钩子
  37. postStart: #容器启动后立即执行此钩子,如果执行失败,会根据重启策略进行重启
  38. preStop: #容器终止前执行此钩子,无论结果如何,容器都会终止
  39. livenessProbe: #对Pod内各个容器健康检查的设置,当探测无响应几次之后会自动重启该容器
  40. exec: #对Pod容器内检查方式设为exec方式
  41. command: [string] #exec方式需要定制的命令或脚本
  42. httpGet: #对piod内个容器健康检查方法设置为HttpGet,需要定制path。port
  43. path: string
  44. port: number
  45. host: string

清单中有这么多字段,怎么记呢? 可以使用以下命令查看:

#在这里,可以通过命令来查看每种资源的可配置项

#kubectl explain 资源类型。 (查看某种资源可以配置的1级属性字段)

#kubectl explain 资源类型.属性。 查看属性的子属性(一定要Object)

例如:

  1. [root@master ~]# kubectl explain pod
  2. KIND : POD
  3. VERSION: v1
  4. FIELDS:
  5. apiVersion <string>
  6. kind <string>
  7. metadata <Object>
  8. spec <Object>
  9. status <Object>
  10. #以上<string>的类型的字段已经给你打印出来了,直接填写就好,但是Object字段
  11. #还是需要点出来查看2级字段的
  12. [root@master ~]# kubectl explain pod.metadata
  13. KIND: POD
  14. VERSION: v1
  15. RESOURCE: metadata <Object>
  16. FIELDS: #这个意思是现实的二级字段
  17. annotations<map[string]string>
  18. clusterName<String>
  19. creationTimestamp <string>
  20. deletionGracePeriodSeconds <integer>
  21. deletionTimestamp <string>
  22. finalizers <[]string>

K8s清单属性解说

查看pod以yaml的形式展示:

kubectl get pods 【podname】 -n dev -o yaml

K8s资源清单 一级属性都是一样的,主要包含5个部分:

· apVersion <string> 版本,由K8s内部定义,版本号必须可以用kubectl api-version查询到

· kind <string>.  类型,由K8s颞部定义,版本号必须可以用kubectl api-resources查询到

· metadata <Object>  元数据,主要是资源标识和说明,常用的有name,namesapce,labels等

` spec<Object>    描述,这是配置中最重要的部分,里面对各种资源配置的详细描述

· status<Object> 状态信息,里面的内容不需要定义,由K8s自动生成

在上面的属性中,spec是接下来研究的重点,继续看他常见的子属性

· containers <[]Object> 容器列表,用于定义容器的详细信息

·nodeName <String> 根据nodeName的值将pod调度到指定的Node节点上

· nodeSelector <map[]> 根据NodeSelector中定义的信息选择将该Pod调度到包含这些label的Node上

· hostNetwork <boolean> 是否使用主机网络面试,默认为false,如果设置为true,表示使用宿主机网络

· volumes <[]Object> 存储卷,用于定义Pod上面挂载的存储信息

· restartPolicy <string> 重启策略,表示pod在遇到故障的时候的处理策略

Pod配置

本小节主要用来研究pod.spec.containers属性,这也是pod配置中最为关键的一项配置

  1. [root@master ~]# kubectl explain pod.spec.containers
  2. KIND : POD
  3. VERSION : v1
  4. RESOURCE: containers<[]Object> #数组,代表可以有多个容器
  5. FIELDS:
  6. name <string> #容器名称
  7. image <string> #容器需要构建的镜像地址
  8. imagePullPolicy <string> #镜像拉取策略(镜像是使用本地的还是远程仓库的)
  9. command <[]string> #容器的启动命令列表,如不指定,使用打包时使用的启动命令
  10. args <[]string> #容器启动命令需要的参数列表
  11. env <[]Object> #容器环境变量配置
  12. ports #容器需要暴露的端口列表
  13. resources <Object> #资源限制和资源请求的设置

Pod基本配置--name和image

创建pod-base.yaml文件内容如下:

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: pod-base
  5. namespace: dev
  6. labls:
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/162237
推荐阅读
相关标签
  

闽ICP备14008679号