首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1. Pod
1.1. Pod介绍
1.1.1. Pod简介
1.1.2. Pod生命周期
1.1.3. Pod状态
1.2. Pod模板
1.2.1. apiversion/kind
1.2.2. metadata
1.2.3. spec
1.2.4. k8s和image中的命令
1.2.5. 就绪性探测和存活性探测
1.3. 案例
1.3.1. 创建简单pod
1.3.2. 带健康检测的pod
2. Deployment
2.1. 介绍
2.1.1. 简介
2.1.2. 部署方式
2.1.3. Deployment升级方案
2.2. 模板
2.3. 案例
2.3.1. 创建deployment
2.3.2. 模拟蓝绿发布
2.3.3. 滚动发布
2.3.4. 模拟灰度(金丝雀)发布
2.3.5. 版本回滚
2.3.6. 常用命令
3. DaemonSet
3.1. DaemonSet介绍
3.2. 模板
3.3. 案例
3.3.1. 创建daemonset
3.3.2. 升级daemonset
4. Job
4.1. Job介绍
4.2. 模板
4.3. 案例
5. CronJob
5.1. cronjob介绍
5.2. 模板
5.3. 案例
6. StatefulSet
6.1. 介绍
6.1.1. Statefulset使用场景
6.1.2. Statefulset注意项
6.2. 模板
6.3. 案例
6.3.1. 创建Statefulset资源
6.3.2. 扩缩容
6.3.3. 滚动更新
6.3.4. 删除Statefulset
6.3.5. 部署有状态应用一般思路
7. 原理分析
8. 调度
8.1. 调度器
8.2. 节点选择器
8.3. 节点亲和性
8.4. Pod亲和性
8.5. 污点和污点容忍度
当前位置:
首页>>
技术小册>>
Kubernets合辑5-Pod控制器
小册名称:Kubernets合辑5-Pod控制器
7.1. Deployment创建过程 以 kubectl apply -f deployment.yaml 为例,了解 Deployment 创建的过程。 - Kubectl 生成 API 请求 - Kubectl 校验 deployment.yaml 中的字段,确保资源清单的合法性 - Kubectl 检查 deployment.yaml 中的API字段,填充kubeconfig的认证信息,填充 deployment 请求体信息。 - 将封装好的请求发送到 ApiServer - ApiServer 身份认证 - apiServer 通过认证信息确认用户合法身份 - 通过RBAC鉴权,确认用户具备资源操作权限 - 通过准入控制,确保满足Kubernetes部分高级功能,参考文档 - 将HTTP请求反序列化,存入ECTD中 - 执行资源初始化逻辑,如边车容器注入、证书注入等操作 - ControllerManager创建资源对象 - Deployment Controller 通过ApiServer发现有Deployment需要创建 - Deployment Controller 通过ApiServer查询对应ReplicaSet是否满足,不满则则创建新的ReplicaSet,并设置版本号 - ReplicaSet Controller 通过ApiServer发现有新的 ReplicaSet资源,通过查询是否有满足条件的Pod,如果Pod不满足条件,则创建Pod对象 - Scheduler 调度资源 - Scheduler 通过ApiServer监听创建新Pod的请求,一旦需要创建新Pod,则通过调度算法选择Node - 先通过一组预算策略进行评估,筛选可以调度的Node - 再通过优选策略,在符合条件的Node中选择得分最高的Node作为运行该Pod的节点,最高分有多个节点时,随机选择一个 - Scheduler 创建一个Binding对象并且请求ApiServer,该对象包含了Pod的唯一信息和选择的Nodename - Kubelet 初始化Pod 之前所有的操作,都是在操作 etcd 数据库,只有 Kubelet 这一步才开始正式创建Pod - Kubelet 通过ApiServer查询到当前自身节点上Pod清单,与自己缓存中记录进行比对,如果是新的Pod则进入创建流程 - Kubelet 生成Podstatus对象,填充Pod状态(Pending,Running,Succeeded,Failed,Unkown) - Kubelet 检查Pod是否具备对应的准入权限,如果不具备则处于Pending状态 - 如果Pod存在资源限制,则通过Cgroups 对Pod进行资源限制 - 创建容器目录,并挂载存储卷的目录 - 检索ImagePullSecret,用于拉取镜像 - 通过CRI 接接口调用容器runtime创建容器 - CRI 创建容器 - 创建Pause容器,用于为其他容器提供共享的网络名称空间和启动pid名称空间,从而实现网络共享和僵尸进程回收 - docker runtime 调用CNI插件,从IP资源池中分配一个IP地址给当前Pause容器 - 拉取业务镜像,如果填充了 imagepullsecret 会通过指定的密钥去拉取镜像 - 挂载configmap到容器 - 填充Pod元数据信息 - 启动容器,监听容器的event,执行对应钩子 ![](/uploads/images/20230804/59da196166612ceb6c2ed9212895668c.jpg)
上一篇:
6.3.5. 部署有状态应用一般思路
下一篇:
8. 调度
该分类下的相关小册推荐:
Kubernets合辑12-配置中心
Kubernetes中文教程(一)
Kubernets合辑3-kubernetes介绍
Kubernetes中文教程(二)
Kubernets合辑15-持续部署
Kubernets合辑14-日志收集
Kubernetes中文教程(三)
Kubernets合辑13-集群监控
Kubernets合辑8-权限控制
Kubernetes合辑1-安装Kubernetes
云原生-K8S入门实战
Kubernets合辑6-服务发现