Skip to content

drivebyer/k8s-note

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

笔记

Latest update: 2022-05-29

client-go

笔记 状态
Informer系列之Reflector ✔️
Informer系列之Indexer ✔️
Informer系列之SharedIndexInformer ✔️
集群 leader 选举机制 ✔️
事件管理机制 todo

kubelet

关键组件:

  • type PodLifecycleEventGenerator interface
  • type PodWorkers interface

Controller Manager

笔记 状态
Deployment Controller todo

API Server

笔记 状态
资源注册流程-核心服务 ✔️
资源注册流程-扩展服务 ✔️
资源注册流程-聚合服务 todo
配置与结构体创建流程 ✔️
Extension Server 创建流程 ✔️
API Server 创建流程 todo
Aggregator Server 创建流程 todo
认证 ✔️
授权 ✔️
准入 ✔️
对接 Etcd ✔️

Scheduler

  • find all feasible nodes
  • runs a set of functions to score the feasible Nodes
  • picks a Node with the highest score
  • binding: notifies the API server about this decision
QueueSort PreFilter/Filter Filter PreScore Score Normalize Score Reserve Permit WaitOnPermit PreBind Bind PostBind
调用链路 NextPod -> MakeNextPodFunc -> SchedulingQueue.Pop -> activeQ.Pop -> ··· -> Less scheduleOne -> SchedulePod -> findNodesThatFitPod -> RunPreFilterPlugins
PrioritySort Fit
InterPodAffinity
NodeAffinity
NodePorts
[PodTopologySpread]
VolumeBinding
VolumeRestrictions

apimachinery

笔记 状态
util/wait todo

Tips

  • GenericAPIServer.Handler.GoRestfulContainer 中注册了各个路由到 handler 的映射
  • 注册路由的关键路经:InstallAPIGroup -> installAPIResources -> InstallREST -> Install -> registerResourceHandlers
  • kubectl proxy --port=8080 后访问 http://127.0.0.1:8080/apis/apiextensions.k8s.io/v1
  • ResourceVersion(利用 Etcd 中的 modifiedIndex 来实现) 有两个已知用处:
    1. 客户端并发操作时实现乐观锁;
    2. ListWatch 时实现类似断点续传,防止数据丢失
  • StatefulSet 中的关键:
    1. 为 Pod 生成一个 DNS 记录:${pod_name}.${statefulset_name}.${namespace}.svc.cluster.local
    2. 为 Pod 的 PVC 生成名字:${pvc_name}-${statefulset_name}-${编号}
    3. StatefulSet 中的 Pod 被删除后,对应的 PVC 不会删除。等待 Controller 执行控制循环后,新生成的 Pod 将重新挂载原来的 PVC
    4. 为 StatefulSet 指定一个 Headless Service 后,StatefulSet 的 Controller 会为 StatefulSet 中的每一个 Pod 生成固定的 DNS 记录

About

No description, website, or topics provided.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published