zoukankan      html  css  js  c++  java
  • k8s:kubelet

    kubelet通过以下方式获取自身node上要运行的pod清单:

    1、静态pod
    从yaml直接生成,而没有通过控制器管理的pod成为静态pod,kebelet会持续监控yaml文件,如果yaml文件有变化,kubelet会执行对应的变化。
    --file-check-frequency 设置检查该目录的时间间隔

    2、HTTP端点
    通过 --mainfest-url参数设置,通过--http-check-frequency设置检查该HTTP端点数据的时间间隔,默认20s

    3、监听api。
    kubelet读取到监听信息,如果是创建和修改pod的任务,则做如下处理
    1)为pod创建一个数据目录
    2)从api读取pod清单
    3)为该pod挂载外部卷
    4)下载pod用到的Secret
    5)检查节点上已运行pod,如果没有容器或者pause容器没启动,则停止pod里所有容器进程,若要删除,则删除这些容器。
    6)为pod创建pause容器,pause容器用于接管pod中的网络
    7)pod中每个容器做如下处理
    7.1 计算容器哈希值,然后用容器的名称查询对应docker容器的哈希值,若找到容器,且哈希值不同,则停止docker容器中的进程,且停止pause容器进程,哈希值相同则不做任何处理。
    7.2 如果容器被终止,会根据restartPolicy做处理,没设置restartPolicy则不做任何处理。
    7.3 调用docker client下载镜像,调用docker client运行容器。

    容器健康检查

    LivenessProbe
    探测容器不健康,则删除容器,然后根据restartPolicy做相应处理;
    如果没有LivenessProbe,kubelet认为LivenessProbe返回的永远是true;

    三种探针
    execAction:运行命令,返回0代表OK
    TCPSocketAction:对IP 端口进行TCP检查
    HTTPGetAction:通过ip 端口 路径调用HTTP Get方法, 200<=状态码<=400代表OK

    RedinessProbe
    探测失败,pod状态会被修改;
    endpoint controller将从service的endpoint中删除该容器的IP;

    监控
    cAdvisor + Heapster
    metric server

    原文作者:大鹏SP
    版权声明:本文采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,转载请标明作者及原文链接。
  • 相关阅读:
    [洛谷P3360]偷天换日
    [BZOJ3195]奇怪的道路
    [BAOJ3631]松鼠的新家
    [BZOJ4899]记忆的轮廓
    [BZOJ3940]Censoring
    P3303 [SDOI2013]淘金
    2019.8.5 NOIP模拟测试13 反思总结【已更新完毕】
    2019.8.3 NOIP模拟测试12 反思总结【P3938 斐波那契,P3939 数颜色,P3940 分组】
    2019.8.1 NOIP模拟测试11 反思总结
    洛谷P2178 [NOI2015]品酒大会
  • 原文地址:https://www.cnblogs.com/sunpong/p/14991086.html
Copyright © 2011-2022 走看看