zoukankan      html  css  js  c++  java
  • Pod

    1.pod的基本概念

    1)k8s中最小的部署单元

    2)一组容器的集合,含多个容器

    3)一个pod中的容器共享网络命名空间

    4)Pod 生命周期比较短暂的组件, 比如, 当 Pod 所在节点发生故障, 那么该节点上的 Pod
    会被调度到其他节点, 但需要注意的是, 被重新调度的 Pod 是一个全新的 Pod,跟之前的
    Pod 没有关系 。

    5)pod依赖于一个基础镜像,一般都是pause开头的这样一个镜像。

    2.pod的两种机制

    1)共享网络

    一个pod创建后,它通过pause根容器,把其它业务容器加入到pause容器里,让所有业务容器在同一个namespaces名称空间中,从而实现网络共享。

    注:docker不同容器实现隔离的机制是各自独立的 namespaces和cgroup实现的。

    2)共享存储

    一个pod创建后,是分布node节点上的,那么当这个节点宕机以后,pod的自愈能力会在其它节点创建新的pod,这时候如果没有用到共享存储的话,新创建的pod只是一个纯粹的编排资源对象,没有实际的数据,那么数据就丢失了。k8s中定义了pv和pvc的概念使得pod共享存储。

    3.pod镜像拉取的三种策略

    yaml文件中你会看到这样两行:

    image:nginx:1.18

    imagepullpolicy:always

    ---

    always:每次创建pod都会重新拉取镜像

    iFNotPresent:默认值,宿主机不存在该镜像时才拉取。

    never:pod永远不会主动拉取镜像

    4.pod资源限制

    k8s采用request和limit两种制类型来对资源进行分配和限制,底层还是用docker的cgroup技术。

        request资源需求:即运行pod的节点必须满足运行pod的最基本需求才能运行pod

        limit资源限制:运行pod期间,内存使用量可能会增加,那么最多能使用多少,这就是资源限额也就是硬限制。

    CPU单位理解:一核=1000(millicores)  500M即0.5个Cpu
    内存单位理解:常规的M单位

    参考图中示例:

    5.重启机制

    yaml文件中你会看到这样一行:

    restartpolicy:never

    always:默认策略,当容器终止退出后,总是重启容器,适用于业务容器

    注:下面两种策略适用于批量任务

    onfailure:当容器一次退出(退出状态码非0)时,才重启容器

    never:当容器终止退出,从不重启容器。

    6.影响pod调度的属性

    1)pod资源限制会对pod具体分配到那个节点上运行产生影响

    2)节点选择器 

    例如:nodeselecter:

        env_role:test  #选择test标签的节点上运行pod。

    前提先给节点打标签命令如图:

     3)节点亲和性

    nodeaffinity 分硬亲和和软亲和。

     4)污点和污点容忍 taint污点:节点不做普通调度,是节点属性,而上面的节点选择器和亲和力都是pod属性。

            

  • 相关阅读:
    DotNetty是微软的Azure团队,使用C#实现的Netty的版本发布
    C# 与 .NET Framework 对应关系
    C# 基于Directshow.Net lib库 USB摄像头使用DirectShow.NET获取摄像头视频流
    Actor模型的状态(State)+行为(Behavior)+邮箱(Mailbox)
    c# 无法加载DLL:找不到指定的模块(异常来自HRESULT:0X8007007E)
    管道式编程(Pipeline Style programming)
    Word文档转Markdown插件(Windows)
    纯Java实现定时任务(转)
    Spring MVC使用Schedule实现定时任务
    Spring Boot使用Schedule实现定时任务
  • 原文地址:https://www.cnblogs.com/you-xiaoqing/p/14337459.html
Copyright © 2011-2022 走看看