首页 > 其他分享 >在K8S中,创建一个Pod的主要流程是什么?

在K8S中,创建一个Pod的主要流程是什么?

时间:2024-02-08 09:03:23浏览次数:29  
标签:容器 创建 流程 Server kubelet API Pod K8S

在Kubernetes(简称K8s)中创建一个Pod的主要流程如下:

  1. 用户请求

    • 用户通过kubectl命令行工具或API接口提交一个Pod的定义,通常是通过YAML或JSON格式的配置文件来描述Pod的详细信息,包括容器镜像、环境变量、资源需求、卷挂载等。
  2. API Server接收入口

    • 用户的请求首先到达Kubernetes API Server,API Server会对请求进行认证、授权和准入控制检查。
  3. 持久化存储到etcd

    • 一旦API Server验证了请求的有效性,它会将Pod的定义信息写入etcd(分布式键值存储),以确保集群内的所有组件都能获取最新的集群状态。
  4. 调度决策

    • 当Pod被创建并保存到etcd后,API Server会触发调度器(scheduler)对Pod进行调度。
    • 调度器根据集群节点的资源状况、亲和性和反亲和性规则以及其他约束条件,选择一个最适合运行Pod的Node,并更新Pod的状态为“Scheduled”。
  5. 绑定Pod至Node

    • 调度器将调度决定通知给API Server,由API Server将Pod与选定的Node进行绑定。
  6. kubelet执行

    • 相应节点上的kubelet进程通过监听API Server的事件,得知需要在其上创建新的Pod。
    • kubelet从etcd中获取该Pod的详细信息,然后开始执行创建Pod的具体工作,这包括:
      • 下载所需容器镜像
      • 创建网络命名空间和网络策略
      • 设置Pod的Volume(卷)
      • 启动Pod中的各个容器
  7. 容器启动

    • 容器运行时(如Docker或containerd)负责启动容器,并监控容器的生命周期事件,如健康检查、重启策略等。
  8. Pod就绪和运行

    • 当Pod中的所有容器均成功启动并且通过了就绪探针(readiness probe)检测,则kubelet会将Pod的状态报告回API Server,标记Pod为“Running”状态,此时Pod可以接受来自Service的流量。
  9. 持续监控与管理

    • 在Pod的整个生命周期内,kubelet和API Server将持续监视Pod的状态,并根据Pod的定义和系统策略进行相应的管理和维护操作。

综上所述,这个过程中还涉及到很多细节,例如 Pod 状态的变更、事件的记录、副本集控制器对Pod数量的自动管理等。以上是创建Pod的基本流程概述。

标签:容器,创建,流程,Server,kubelet,API,Pod,K8S
From: https://www.cnblogs.com/huangjiabobk/p/18011562

相关文章

  • 在K8S中,Pod的重启策略是什么?
    在Kubernetes(K8S)中,Pod的重启策略是通过restartPolicy字段指定的,用于定义当Pod中的容器终止时kubelet应如何处理这些容器。以下是三种主要的重启策略:Always:这是默认的重启策略。如果一个容器终止(无论退出码是什么),kubelet都会自动重启该容器。这意味着只要Pod没有被删除或者节......
  • 在K8S中,Pod的健康检查方式有哪些?
    在Kubernetes(K8s)中,Pod的健康检查主要通过两种类型的探针实现:LivenessProbe和ReadinessProbe。LivenessProbe(存活探针):用于检测容器是否处于正常运行状态。如果LivenessProbe失败,则表明容器已不再健康,并且kubelet会采取相应行动,通常是重启容器。LivenessProbe可......
  • 在k8S中,Pod中的LivenessProbe探针常见方式有哪些?
    在Kubernetes(k8s)中,Pod的LivenessProbe探针常见的方式有以下三种:Exec:通过在容器内部执行一个命令来检查应用是否正常运行。如果命令的退出状态码为0,则认为应用程序是健康的;非0状态码则视为不健康。例如:livenessProbe:exec:command:-cat-/t......
  • kubernetes集群核心概念---pod
    1.pod介绍参考链接:https://kubernetes.io/zh/docs/concepts/workloads/pods/1.1.查看pod[root@centos~]#kubectlgetpod#pod或pods都可以,不指定namespace,默认是名为default的namespace [root@centos~]#kubectlgetpod-nkube-system1.2.pod的yaml资源清单格式......
  • 二刷 K8s 源码 - workqueue 的所有细节
    1.概述-何来此文2.Queue的实现2.1Queue.Add(iteminterface{})方法2.2Queue.Get()方法2.3Queue.Done(iteminterface{})方法3.DelayingQueue的实现4.RateLimitingQueue的实现5.rateLimiter限速器的实现6.控制器里用的默认限速器7.总结1.概述-......
  • github action创建一个前端的自动话部署流程。
    上次是部署后端,这次是部署前端,前面的步骤都一样,后面就直接贴部署的ymlname:buildandteston:push:branches:-masterjobs:build:runs-on:ubuntu-lateststeps:-name:checkoutrespositoryuses:actions/checkout@v2-nam......
  • Docker-compose至K8S迁移工具kompose
    参考Github:https://github.com/kubernetes/komposekompose工具用于将docker-compose配置文件转换的k8s可识别的yaml文件安装CentOS安装#yuminstallepel-release#yuminstallkompose使用源安装的版本较老可直接下载#Linuxcurl-Lhttps://github.com/kubernetes/......
  • k8s 怎么手动拉取docker镜像?
    k8s怎么手动拉取docker镜像?在Kubernetes(K8s)中管理和部署应用时,手动拉取Docker镜像是一项基本操作。在Kubernetes中,Pod创建时通常会在其配置文件(Deployment,StatefulSet等)中指定需要使用的Docker镜像。但如果你想先手动将镜像拉取到集群节点上,可以按照以下步骤进行:首先,确保......
  • 在K8S中,kube-proxy 作用是什么?
    在Kubernetes(K8s)中,kube-proxy是一个关键的网络组件,它运行在集群中的每个节点上,负责实现服务发现和负载均衡功能。kube-proxy的主要作用包括:服务代理:kube-proxy将Kubernetes的服务抽象(Service)转换为实际的网络路由规则,使得Pod可以相互通信,并且外部流量可以正确地流入到服务背后......
  • 在K8S中,kube-proxy iptables 原理是什么?
    在Kubernetes(K8s)中,kube-proxy组件使用iptables模式时,其主要原理是利用Linux内核的iptables工具动态管理节点上的网络规则,以实现服务(Service)到后端Pod之间的透明网络代理和负载均衡。以下是kube-proxy在iptables模式下工作的大致步骤:监听APIServer:kube-proxy在每个集群节点上......