Pod的启动流程

静态pod和动态pod

· 静态pod:kubectl 根据一个配置文件启动的pod,不需要访问api server,写到etcd数据库 --> kube-proxy \calico --> 管理类,基础类

· 动态pod:一般的业务程序应用pod

在Kubernetes(k8s)中,Pod的启动流程是一个涉及多个组件的复杂过程。

1. 创建Pod配置文件
  • 步骤描述:首先,需要创建一个Pod配置文件,该文件定义了Pod的规格和属性,包括容器列表、镜像名称、资源请求等。配置文件通常使用YAML或JSON格式。
  • 示例
apiVersion: v1  
kind: Pod  
metadata:  
  name: my-pod  
spec:  
  containers:  
  - name: my-container  
    image: nginx:latest
2. 提交Pod配置到API Server
  • 步骤描述:使用Kubernetes API,将Pod配置文件提交给API Server。API Server是Kubernetes集群的控制中心,负责接收和处理各种请求。
  • 实现方式:可以通过kubectl命令行工具、Kubernetes客户端库(如Python的kubernetes库)或Kubernetes的REST API提交Pod配置。
3. API Server处理请求
  • 步骤描述:API Server收到创建Pod的请求后,会进行一系列处理,包括认证、授权、准入控制等。
  • 处理流程
    • 认证:验证请求的来源是否合法。
    • 授权:确认请求者是否有权限创建Pod。
    • 准入控制:通过准入控制插件验证或修改资源请求。
  • 结果:如果请求通过验证,API Server会将Pod信息存储到etcd中,etcd是Kubernetes的分布式键值存储系统,用于存储集群的所有状态信息。
4. Scheduler调度Pod
  • 步骤描述:Scheduler监听到API Server中Pod的创建事件后,会根据调度算法为Pod选择一个合适的节点。
  • 调度算法:Scheduler使用预选算法(如PodFitsHostPorts、PodFitsResources等)和优选算法(如LeastRequestedPriority、BalancedResourceAllocation等)来评估各个节点,并选择一个最优的节点。
  • 结果:Scheduler将选中的节点信息更新到Pod的spec.nodeName字段中,并将更新后的Pod信息存储回etcd。
5. Kubelet在选定节点上启动Pod
  • 步骤描述:选定节点上的kubelet监听到Pod被调度到本节点后,会开始创建并运行Pod的容器。
  • 容器创建过程
    • kubelet首先会启动一个特殊的容器——Pause容器,作为Pod中所有容器的网络命名空间(network namespace)和存储卷(volume)的共享载体。
    • 然后,kubelet会根据Pod配置文件中定义的容器列表,依次创建并启动这些容器。
    • 如果Pod配置了Init容器,则Init容器会在主容器之前启动,并且必须按顺序成功执行完毕后,主容器才会启动。
  • 容器启动后:kubelet会更新Pod的状态,并将其标记为Running。同时,API Server也会更新Pod的状态信息。
6. Pod状态监控和更新
  • 步骤描述:Pod启动后,kubelet会持续监控Pod的状态,包括容器的健康状态、资源使用情况等。
  • 健康检查:如果Pod配置了LivenessProbe和ReadinessProbe探针,kubelet会定期执行这些探针来检查容器的健康状态和就绪状态。
  • 状态更新:如果Pod的状态发生变化(如容器崩溃、重启等),kubelet会将这些变化报告给API Server,API Server会更新etcd中的Pod状态信息。
总结

Kubernetes中Pod的启动流程是一个高度自动化和分布式的过程,涉及多个组件的协同工作。通过创建Pod配置文件、提交配置到API Server、Scheduler调度、kubelet在选定节点上启动Pod以及持续监控和更新Pod状态等步骤,Kubernetes能够高效地管理和运行容器化应用。

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值