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 国际许可协议进行许可,转载请标明作者及原文链接。
  • 相关阅读:
    (一二二)核心动画进阶
    1089. Insert or Merge (25)
    (一二一)核心动画基础
    (一二〇)CALayer的一些特性
    (一一九)通过CALayer实现阴影、圆角、边框和3D变换
    1086. Tree Traversals Again (25)
    POJ 2610:Dog & Gopher
    模拟内存分配(链表实现)
    圣诞树后能找到我的记忆
    YTU 2797: 复仇者联盟之关灯
  • 原文地址:https://www.cnblogs.com/sunpong/p/14991086.html
Copyright © 2011-2022 走看看