揭秘k8s pod创建全过程 当你使用 kubectl create 命令 创建一个Deployment资源时 kubectl向 API Server 发送Deployment创建请求 API server 创建Deployment资源 并将其存入ETCD 由于 Deployment 控制器 在监控 Deployment 资源 所以在Deployment资源被创建后 API Server 会通知Deployment 控制器 有Deployment 资源被创建了 随后Deployment 控制器就会 向API Server发送ReplicaSet创建请求 创建一个ReplicaSet 资源并将其存入ETCD 由于ReplicaSet控制器 在监控ReplicaSet资源 所以在ReplicaSet资源被创建后 API Server 会通知ReplicaSet控制器 有ReplicaSet资源被创建了 随后ReplicaSet 控制器就会 向API Server发送 pod 创建请求 创建指定副本数量的 pod并将其存入ETCD 此时被创建出来的pod 只是在 API Server和ETCD中存在 并没有在工作节点运行 因为pod处于 Pending 状态 由于调度器在监控 Pod 资源 当有 Pod资源被创建时 API Server 会通知调度器 有 Pod资源被创建了 当调度器发现有未设置nodeName属性的pod时 调度器会选择一个最合适的节点 调用API Server的pod patch API 设置 pod的nodeName属性为工作节点名称 并保存至ETCD 由于kubelet也在监控 Pod资源 当Pod资源发生变化时 API Server 会通知 kubelet 当指定工作节点的 kubelet 发现 有新 pod 被调度到本节点 就会调用容器运行时的CRI接口 容器运行时会调用 CNI 网络插件 为 pod 建立网络 这样pod中的所有容器就创建好了 然后 kubelet 会调用 CRI 接口 获取 pod 状态信息 随后向API server发送pod状态更新请求 并将其存入ETCD 此时,pod变为Running状态 #程序员 #每天学习一点点 #干货分享 #编程 #知识分享
00:00 / 02:41
连播
清屏
智能
倍速
点赞606
软件定义网络SDN-14:Calico网络插件 #kubernetes #calico #underlay #overlay #bgp 一、Calico网络插件 Calico 是一个开源的容器网络界面(CNI)插件,它为容器和虚拟机提供网络连接和网络安全解决方案。 二、网络模型 1. Underlay Network(非封装网络) Underlay 是数据中心场景的基础物理设施,保证任何两个点路由可达。 2. Overlay Network(封装网络) 一个基于物理网络之上构建的逻辑网络。 Overlay 是在网络技术领域指的是一种网络架构上叠加的虚拟化网络技术。Overlay 网络技术多种多样,包括 IPIP、VXLAN、GRE、NVGRE 等隧道技术。 三、Calico网络模型-VXLAN 1. VXLAN( Virtual Extensible LAN, 虚拟可扩展局域网),是一种二层网络虚拟化技术。VXLAN 通过“隧道”机制,构建出覆盖网络(Overlay Network)。 3. 优势:只要 k8s 节点间三层互通,可以跨网段,对主机网关路由没有特殊要求。 4. 缺点:需要进行 VXLAN 的数据包封包和解包,会存在一定的性能损耗 四、Calico网络模型-IPIP 1. IPIP 隧道的工作原理是将源主机的 IP 数据包封装在一个新的 IP 数据包中,新的 IP 数据包的目的地址是隧道的另一端。在隧道的另一端,接收方将解封装原始 IP 数据包,并将其传递到目标主机。IPIP 隧道可以在不同的网络之间建立连接,例如在 IPv4 网络和 IPv6 网络之间建立连接。 2. 优点:只要 k8s 节点间三层互通,即可跨网段通信,对主机网关路由没有特殊要求。 3. 缺点:需要进行 IPIP 的数据包封装和解封装,会带来一定的性能损耗。 五、Calico网络模型-BGP 1. 边界网关协议(Border Gateway Protocol, BGP)是互联网上一个核心的自治系统间路由协议。它通过维护 IP 路由表或“前缀”表来实现自治系统(AS)之间的可达性。BGP 不使用传统的内部网关协议(IGP)的指标,而是基于路径、网络策略或规则集来决定路由。因此,它被称为距离矢量路由协议。 2. 优点:不用封包解包,通过 BGP 协议可实现 Pod 网络在主机间的三层可达,通信效率高,无额外封装
00:00 / 14:04
连播
清屏
智能
倍速
点赞27
两项k8s最重要的设计思想 在传统的软件开发中,我们常见的编程范式有: 面向过程 面向对象 面向数据库 面向服务 面向事件等 kubernetes则有所不同,有其独特之处 面向 API 编程 Kubernetes是一个面向 API 编程的软件系统 这一理念转变源于Kubernetes作为 现代云原生平台的核心定位 它必须具备强大的灵活性和可扩展性 在Kubernetes中 API Server是一个关键组件 负责管理所有资源 每种资源类型都有对应的API 例如: Namespace、Pod、Deployment 新增一种资源类型 本质上就是新增一个API 比如 当你使用kube control命令创建一个Pod 时 其实是通过kube control命令调用了API Server的Pod创建接口 随后将相关信息存储到ETCD数据库中 声明式编程 kubernetes还是一个声明式的软件系统 用户定义资源时 只是提供了一份yaml格式的声明 声明了用户对该资源的期望状态 而资源的实际状态会因为某些原因而偏离期望状态 所以需要有一个角色来持续监控这些资源的状态 当资源的实际状态与期望状态不一致时 采取相应的措施让资源重新回到用户的期望状态 这个角色就是控制器 Controller 例如,当你创建了一个副本数为2的Deployment资源时: 对应工作节点的kubelet会创建pod ReplicaSet Controller会持续监控其对应的Pod数量 如果发现副本数少于2,如某个 Pod 崩溃 Controller会创建一个新的Pod 并由节点上的kubelet启动该pod 以确保副本数恢复到设定值 此机制也适用于大部分其他资源类型 #程序员 #每天学习一点点 #编程 #干货分享 #云原生
00:00 / 01:42
连播
清屏
智能
倍速
点赞173
00:00 / 01:08
连播
清屏
智能
倍速
点赞5
00:00 / 01:15
连播
清屏
智能
倍速
点赞2
00:00 / 05:11
连播
清屏
智能
倍速
点赞55
00:00 / 42:49
连播
清屏
智能
倍速
点赞23
00:00 / 11:38
连播
清屏
智能
倍速
点赞1717
00:00 / 07:12
连播
清屏
智能
倍速
点赞0
00:00 / 00:36
连播
清屏
智能
倍速
点赞256
00:00 / 07:24
连播
清屏
智能
倍速
点赞111
00:00 / 03:00
连播
清屏
智能
倍速
点赞43