首页 > 其他 > 详细

Pod对象的基本概念

时间:2020-01-23 11:22:50      阅读:89      评论:0      收藏:0      [点我收藏+]

概念

   pod是k8s的基本调度单元  pod扮演的是传统部署环境中的虚拟机角色 容器扮演的运行在虚拟机中的用户进程

 

Pod对象字段

    NodeSelector       提供用户将Pod与Node进行绑定的字段  Pod只能运行在满足NodeSelector的节点上 否则会调度失败

    NodeName          一旦Pod的这个字段被赋值 k8s就会被认为此Pod已经通过了调度 调度的结果就是赋值的节点名字(可以用来调试)

    HostAliases        定义Pod的hosts文件(/etc/hosts) 里面的内容

   凡是跟 Linux Namespace相关的属性 都是Pod级别的

 Init Containers字段

     Init Containers的生命周期 会先于所有的Containers 并且严格按照定义的顺序执行

 Containers字段

      ImagePullPolicy  拉取镜像的策略方式

      Lifecycle   容器状态发送变化时触发的钩子操作

         postStart  在容器启动后立即执行的一个操作  和容器的ENTRYPOINT命令是异步执行的 postStart启动时候ENTRYPOINT有可能并没有执行完

         postStart 执行失败该pod也会处于失败状态

         preStop 容器被杀死之前执行 preStop操作是同步执行的 它会阻塞当前容器的杀死流程 直到preStop执行完毕才能运行容器退出

 

Pod的生命周期

      Pending           Pod的YAML文件已经提交给k8s API对象已经保存到etcd中 但是Pod中的某些容器还没有被创建

      Running           Pod已经被成功调度 包含的容器都已经被创建 并且至少有一个容器正在运行

      Succeeded      Pod中所有的容器都已经正常运行完毕并且已经退出(一次性任务)

      Failed               Pod中至少有一个容器以不正常的状态(非0的返回码)退出

      Unknown          意味着Pod的状态不能持续的被kubelet汇报给apiserver(可能是主从节点通信问题)

      Ready和Running的区别        Running 只代表容器自身的进程是正常运行的 但不能表示容器中提供服务的主进程是正常的(nginx返回500)等

 

Pod的Volume类型

投射数据卷(projected)

        Secret       把pod想要访问的加密数据存储在etcd中   通过pod中的容器以挂载volume的方式来访问

                          这些保存在etcd里面的信息会以文件的方式出现在容器的volume目录中一旦etcd中的数据发生变化volume里面的内容也会被自动更新

                          由kubelet组件定时进行维护 所以这些内容的更新可能会有一定的时延 需要有重试和超时处理机制

       configMap

                明文存储配置文件信息

       Downward

               获取宿主机和Pod本身的一些属性信息 downwardApi能够获取到的信息一定是Pod里面的容器进程启动之前就能够确定下来的信息

               pod里容器运行后才能出现的信息就不能被获取到了 这种情况要获取可以用sidecar容器来获取相关信息

        serviceAccountToken

              apiserver访问授权信息

 

Service Account介绍

          是k8s系统内置的一种服务账户 它是k8s进行权限分配的对象

          service Account的授权信息和文件实际上保存在它所绑定的一个特殊的Secret对象中 这个特殊的Secret对象就叫做ServiceAccountToken

         k8s在每个pod创建的时候 自动在它的spec.volumes部分添加了默认的ServiceAccountToken定义然后给每个容器加上对应的volumeMounts字段

         Pod中的容器固定路径的授权文件路径     /var/run/secrets/kubernetes.io/serviceaccount

 

容器健康检查和恢复机制

       为Pod里的容器定义一个健康检查的探针   

       kubelet会根据这个探针的返回值来决定这个容器的状态 而不是直接以容器是否运行(Docker返回的信息)做为是否健康的依据

       pod的恢复机制是重新创建一个新容器 而不是重启一个容器

       pod一旦与某个宿主机进行了绑定 默认就不会离开这个节点 哪怕这个节点已经宕机了

       如果需要在节点宕机后使pod自动切换到其它节点 就必须使用pod控制器(Deployment)来管理pod  这就是单纯的pod和控制器管理的pod的区别

       livenessProbe探针

            exec          shell命令

            httpGet     

            tcpSocket      

            livenessProbe的检查结果   影响的是Pod的生命周期 会导致Pod里面的容器发生异常时候自动重新创建新的容器   Pod的恢复策略

       readinessProbe探针

              语法和livenessProbe一样  但是作用却不一样 readlinessProbe检查出的结果成功与否 决定着这个Pod能否通过Service的方式被访问到

              而不影响Pod的生命周期

Pod预设置  

      可以首先创建一个PodPreset的对象  然后通过selector选中相关Pod的定义   在创建Pod对象的时候自动把两者的字段进行合并

      PodPreset只会影响被创建出来的pod实例 并不会影响创建pod的各种控制器的定义(Deployment)

 

k8s一切皆对象

      1.应用抽象成Pod对象

      2.应用的配置抽象成ConfigMap对象

      3.应用要访问的密码抽象成Secret对象

      4.Pod进行批量化,自动化修改的工具对象抽象成PodPreset对象

Pod对象的基本概念

原文:https://www.cnblogs.com/yxh168/p/10919898.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!