美文网首页kubelet源码解析
kubelet创建容器之设置容器重启次数

kubelet创建容器之设置容器重启次数

作者: 微凉哇 | 来源:发表于2021-11-26 14:05 被阅读0次

    基于kubernetes v1.18.6,关于基于windows平台运行kubelet的相关代码逻辑不作解析。

    概述

    kubelet通过以下四个步骤,来启动pod容器:

    1. 拉取镜像
    2. 创建容器
    3. 启动容器
    4. 执行容器启动后的钩子

    其中创建容器又分为以下子步骤:

    1. 设置容器重启次数
    2. 生成创建容器所需配置
    3. 创建容器
    4. 预启动容器
    5. 生成容器引用信息

    本文主要解析创建容器/设置容器重启次数阶段kubelet所做工作,首先我们先看下设置容器重启次数阶段的代码逻辑

    设置容器重启次数

    流程解析: 该步骤根据容器名称查询podstatus中容器状态,若查询不到则重启次数设置为0,如查询到该容器状态则重启次数基于原值加1

    该值主要用来生成日志文件链接:

    // kubelet管理的日志(软链接)
    /var/log/pods/<pod namespace>_<pod name>_<pod uid>/<容器名称>/重启重启次数.log
    
    对应
    
    // 容器日志 
    /var/lib/docker/containers/<容器id>/<容器id>-json.log
    

    源码实现

    kubernetes\pkg\kubelet\kuberuntime\kuberuntime_container.go

    func (m *kubeGenericRuntimeManager) startContainer(podSandboxID string, podSandboxConfig *runtimeapi.PodSandboxConfig, spec *startSpec, pod *v1.Pod, podStatus *kubecontainer.PodStatus, pullSecrets []v1.Secret, podIP string, podIPs []string) (string, error) {
    ...
        // For a new container, the RestartCount should be 0
        restartCount := 0
        containerStatus := podStatus.FindContainerStatusByName(container.Name)
        if containerStatus != nil {
            restartCount = containerStatus.RestartCount + 1
        }
    ...
    }
    

    相关文章

      网友评论

        本文标题:kubelet创建容器之设置容器重启次数

        本文链接:https://www.haomeiwen.com/subject/ooztxrtx.html