ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Kubernetes入门篇 (五) : Pod生命周期与创建过程

2020-03-15 10:36:32  阅读:257  来源: 互联网

标签:容器 Kubernetes 创建 调度 入门篇 API 主机 Pod


在上一节当中我们利用yaml文件创建了资源对象Pod,这节讲解一下Pod的生命周期与创建过程

一、Pod生命周期

所谓的pod生命周期就是说pod这个资源对象从开始创建到结束整个的一个流程,在流程当中会经历多个阶段

Pod 的 status 属性是一个 PodStatus 对象,拥有一个 phase 字段。它简单描述了 Pod 在其生命周期的阶段

阶段 说明
Pending Pod 已被 Kubernetes 接受,apiServer将信息记录到etcd当中,但尚未创建一个或多个容器镜像。这包括被调度之前的时间以及通过网络下载镜像所花费的时间,执行需要一段时间。
Running Pod 已经被绑定到了一个节点上面去运行,所有容器已被创建,完成了Pod的调度。至少一个容器正在运行,或者正在启动或重新启动。
Succeeded 所有容器成功终止,也不会重启。
Failed 所有容器终止,至少有一个容器以失败方式终止。也就是说,这个容器要么已非 0 状态退出,要么被系统终止。
Unknown 由于一些原因,Pod 的状态无法获取,通常是与 Pod 通信时出错导致的。

二、Pod创建过程

Pod是Kubernetes中最基本的部署调度单元,可以包含container,逻辑上表示某种应用的一个实例。例如一个web站点应用由前端、后端及数据库构建而成,这三个组件将运行在各自的容器中,那么我们可以创建包含三个container的pod。本文将对Kubernetes的基本处理流程做一个简单的分析。

Pod的创建流程如下图所示(图片来源于网络):

具体的创建步骤包括:

1、客户端提交创建请求,可以通过API Server的Restful API,也可以使用kubectl命令行工具。支持的数据类型包括JSON和YAML。

2、API Server处理用户请求,存储Pod数据到etcd,返回确认信息给客户端即created。

3、API Server会去etcd去查看其状态变化,调度器通过API Server查看未绑定的Pod(所有Kubernetes组件都使用which机制来跟踪API Server的一些变动)。尝试为Pod分配主机即为Pod挑选符合要求的节点,使其在节点上运行。

4、过滤主机 (调度预选):调度器用一组规则过滤掉不符合要求的主机。比如Pod指定了所需要的资源量,那么可用资源比Pod需要的资源量少的主机会被过滤掉。

5、主机打分(调度优选):对第一步筛选出的符合要求的主机进行打分,在主机打分阶段,调度器会考虑一些整体优化策略,比如把容一个Replication Controller的副本分布到不同的主机上,使用最低负载的主机等。

6、选择主机:选择打分最高的主机,进行binding操作,绑定主机成功后将结果存储到etcd中。

7、kubelet根据调度结果执行Pod创建操作: 绑定成功后,scheduler会调用APIServer的API在etcd中创建一个boundpod对象,描述在一个工作节点上绑定运行的所有pod信息。运行在每个工作节点上的kubelet也会定期与etcd同步boundpod信息,一旦发现应该在该工作节点上运行的boundpod对象没有更新,则调用Docker API创建并启动pod内的容器。

标签:容器,Kubernetes,创建,调度,入门篇,API,主机,Pod
来源: https://blog.csdn.net/BearStarX/article/details/104873617

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有