Kubernetes 控制平面组件
[TOC]
Kubernetes控制平面组件 目录
Kube-scheduler(调度)
Controller Manager
kubelet
CRI
CNI
CSI
k8s三大核心能力:集群管理,资源调度、服务发现
Shell # 进入容器内部,查看cgroup限制 docker inspect containerId # 根据Cgroup查找到限制的路径 cd /sys/fs/cgroup "CgroupParent": "kubepods-burstable-pod92e4430a_3409_4e54_b791_87245e7b00cb.slice" # label设置 k get no --show-labels k label no xxx xxx=xx # replace是替换,apply是增量操作(旧数据可能还存在:比如,required替换preferred) k replace -f xx.yaml k apply -f xx.yaml
Kube-scheduler(调度)
调度器
predicates策略
predicates plugin工作原理
priorities策略
资源需求
resources: limits: memory: 1Gi cpu: 1 requests: memory: 256Mi cpu: 100m # 上面配置的解读 # 下面配置(相对值):抢cpu的时候,相对值 # noah @ noahLinux in /sys/fs/cgroup/cpu/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod92e4430a_3409_4e54_b791_87245e7b00cb.slice [21:02:26] $ cat cpu.shares102 # 下面的配置(绝对值):解析上限时一个CPU # noah @ noahLinux in /sys/fs/cgroup/cpu/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod92e4430a_3409_4e54_b791_87245e7b00cb.slice [21:03:00] $ cat cpu.cfs_period_us100000 # noah @ noahLinux in /sys/fs/cgroup/cpu/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod92e4430a_3409_4e54_b791_87245e7b00cb.slice [21:03:14] $ cat cpu.cfs_quota_us100000
磁盘资源需求
init container的资源需求
把pod调度到指定Node上
nodeSelector
NodeAffinity
podAffinity
podAffinity例子
Taints和Tolerations
多租户Kubernetes集群-计算资源隔离
来自生产系统的经验
优先级调度
PriorityClass
为pod设置priority
多调度器
来自生产的一些经验
Controller Manager 控制器的工作流程
Informer的内部机制
控制器的协同工作原理
通用Controller
Cloud Controller Manager
Cloud Controller manager 的配置
需要定制的Cloud Controller
来自生产的经验
确保scheduler和controller的高可用
Leader Election
Kubelet kubelet
kubelet架构
kubelet管理pod的核心流程
节点管理
pod管理
pod启动流程
kubelet启动pod的流程
CRI CRI
运行时的层级
CRI
开源运行时的比较
Docker和Containerd的差异细节
多种运行时性能比较
运行时优劣对比
CNI
CNI插件分类和常见插件
CNI插件运行机制
CNI插件设计考量
打通主机层网络
CNI Plugin
Flannel
Calico
Calico组件
Calico初始化
Calico配置一览
Calico VXLan
IPPool
IPAMBlock
IPAMHandle
创建Pod并查看IP配置情况
CNI plugin的对比
CSI