深入剖析 Kubernetes
Kubernetes 原来可以如此简单
张磊  Kubernetes 社区资深成员与项目维护者
飙升榜 第4名
专栏
已完结·共 57 讲
|
11.7w 人已学
|
收藏
陈斯佳
第四十二课:Kubernetes默认调度器调度策略解析 Predicates在调度过程中的作用,可以理解为Filter,也就是按照调度策略从当前的集群所有节点中“过滤”出一些符合条件的节点来运行调度的 Pod。 默认的调度策略有三种,一种是GerenalPredicates,负责最基础的调度策略,比如计算宿主机CPU和内存资源等是否够用的PodFitsResource;还有检查宿主机名字是否和Pod的spec.nodeName一致的PodFitsHost。第二类是和Volume相关的过滤规则,比如NoDiskConflict是检查多个Pod申明挂载的持久化Volume是否有冲突。第三类是宿主机相关的过滤条件,主要考察待调度的Pod是否满足Node本身条件,比PodToleratesNodeTaints,负责检查Node 的“污点”taint机制,而 NodeMemoryPressurePredicate,检查的是当前节点的内存是不是已经不够充足,如果是的话,那么待调度 Pod 就不能被调度到该节点上。第四种类型是和Pod相关的过滤规则,这一组规则,跟 GeneralPredicates 大多数是重合的。而比较特殊的,是 PodAffinityPredicate。在具体执行的时候, 当开始调度一个 Pod 时,Kubernetes 调度器会同时启动 16 个 Goroutine,来并发地为集群里的所有 Node 计算 Predicates,最后返回可以运行这个 Pod 的宿主机列表。 在 Predicates 阶段完成了节点的“过滤”之后,Priorities 阶段的工作就是为这些节点打分。这里打分的范围是 0-10 分,得分最高的节点就是最后被 Pod 绑定的最佳节点。Priorities 里最常用到的一个打分规则,是LeastRequestedPriority。这个算法实际上就是在选择空闲资源(CPU 和 Memory)最多的宿主机。此外,还有 NodeAffinityPriority、TaintTolerationPriority 和 InterPodAffinityPriority 这三种 Priority。在默认 Priorities 里,还有一个叫作 ImageLocalityPriority 的策略。它是在 Kubernetes v1.12 里新开启的调度规则,即:如果待调度 Pod 需要使用的镜像很大,并且已经存在于某些 Node 上,那么这些 Node 的得分就会比较高。
2021-11-03
勤劳的小胖子-libo
凭这篇Istio的文章就值回票价。
2021-03-04
我在睡觉
老师这节课讲的ingress是一个7层负载均衡 用ingress是否可以搭建一个4层负载均衡?
2021-01-20
我在睡觉
是否也可以用云提供的7层负载均衡器+nodeport形式实现的ingress效果。这样做效率是否会更高?
2021-01-20
我在睡觉
是否也可以用云提供的7层负载均衡器+nodeport形式实现的ingress效果。这样做效率是否会更高?
2021-01-20
沈洪彬
没看直接做,50分,看了一半做了一下,35分。 看完了做能多少分-_-
2021-01-18
张裕尧
有一个问题想请教一下,Flannel 项目为什么不添加NetworkPolicy的功能呢?Flannel应该也可以有能力在宿主机上创建iptables
2021-01-17
单朋荣
calico: 通过veth pair路由规则,实现直接在二层网络通信;对不同子网的三层网络通信,使用ipip来再次封装一次ip包,实现外部的寻址。 flannel vxlan: 它在三层网络外层,又做了一次二层链路寻址(避免tun0的用户态到内核态的切换开销); mac地址是各个flannel.1的地址,flannel.1所在主机地址,都可以由flannel进程从etcd中获取到。 张老师,这两种方式性能差别在什么地方啊?谢谢!!
2021-01-14
单朋荣
把握几个核心,然后串起来,其它需要的东西再去拿就可以了。 问题牵引: 网络方案是谁?它和“CNI标准”的关系(实现)是?kubernetes网络配置由谁来完成?(或者说我要怎么做才能实现它??) 核心支撑点: 1、flannel网络方案本身 2、CNI插件,这里是内置的Flannel插件 3、dockershim(DRI) 两个背景知识: 1、CNI 的设计思想:Kubernetes 在启动 Infra 容器之后,就可以直接调用 CNI 网络插件,为这个 Infra 容器的 Network Namespace,配置符合预期的网络栈。 2、建立网络的“三类”基础组件/可执行文件。 串线(着重描述三个核心点之间的串联关系): kubelet 创建 Pod ->创建 Infra 容器。主要是由(CRI)**dockershim **调用 Docker API 创建并启动 Infra 容器-> SetUpPod方法。方法的作用是:1.为 CNI 插件准备参数,2.然后调用 CNI 插件为 Infra 容器配置网络。 1.所需参数->实现ADD/DEL方法->CNI插件(*flannel插件*)实现。: 1.1参数一:由 dockershim 设置的一组 CNI 环境变量,ADD/DEL方法参数。 1.2参数二:是 dockershim 从 CNI “配置文件”里加载到的、默认插件的配置信息;由*flannel网络方案本身*安装时生成。 2.调用 CNI 插件: 引:"dockershim 对 *Flannel CNI 插件*的调用,其实就是走了个过场。Flannel CNI 插件唯一需要做的,就是对 dockershim 传来的 Network Configuration (CNI配置文件)进行补充。" 接下来,Flannel CNI 插件->调用 CNI bridge 插件(参数一:“CNI环境变量/ADD", 参数二:”Network Confiuration/Delegate"),-->“代表”Flannel,将容器加入CNI网络(cni0网桥)。
2021-01-14
Jay66
golang程序如果用容器发布,程序内指定了可执行的cpu数,实际上这个是取决于宿主机的cpu数?因为内核是一样的么?
2021-01-13
讲师

张磊

Kubernetes 社区资深成员与项目维护者

张磊,曾就职于微软研究院,《Docker 容器与容器云》作者,2021 年 CNCF 基金会 TOC 名单中国内唯一的入选者。 Kubernetes 社区资深成员与项目维护者,长期专注并活跃于容器集群管理与云计算数据中心领域,连续三次被微软授予该领域“最有价值专家”(MVP...查看更多
编辑推荐
包含这门课的学习路径

架构师

28门课程 151.9w人学习

运维工程师

32门课程 149.1w人学习

云原生工程师

14门课程 86.5w人学习

后端工程师

27门课程 184.1w人学习
看过的人还看了
Service Mesh 实战
马若飞
FreeWheel 北京研发中心首席工程师、《Istio 实战指南》作者

41讲 | 11858 人已学习

¥59¥129
SRE 实战手册
赵成
蘑菇街技术总监

13讲 | 13439 人已学习

¥29¥68
OpenResty 从入门到实战
温铭
OpenResty 软件基金会第一任主席,Apache APISIX 项目 VP

52讲 | 20909 人已学习

¥59¥129
容器实战高手课
李程远
eBay 总监级工程师,云平台架构师

31讲 | 24653 人已学习

¥59¥129
etcd 实战课
唐聪
腾讯云资深工程师,etcd 活跃贡献者

28讲 | 28455 人已学习

¥59¥129
分布式技术原理与算法解析
聂鹏程
智载云帆 CTO,前华为分布式 Lab 资深技术专家

43讲 | 39667 人已学习

¥59¥129