![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
kubernetes
文章平均质量分 69
xf491698144
北冥有鱼,很大的鱼。
展开
-
原生scheduler-framwork调度插件详细
图 插件详细说明原创 2020-09-17 17:51:08 · 209 阅读 · 0 评论 -
Kubernetes v1.19 正式发布
Kubernetes v1.19 正式发布 本周 Kubernetes v1.19 正式发布,这是今年发布的第二个版本,也是耗时最长的一个版本。 在此版本中有 34 个增强功能,其中 10 个GA,15 个 beta 以及 9 个 alpha。并且从 v1.19 开始,Kubernetes 每个版本的支持周期延长至 1 年。(感谢[ Long Term Support (LTS) working group ](https://github.com/kubernetes/community/tree/mas转载 2020-08-31 10:29:52 · 843 阅读 · 1 评论 -
Kubernetes Controller Manager 代码梳理
ControllerManager同样作为集群的一个大脑,负责集群内的Node,资源控制器,副本数管理,NameSpace,ServiceAccount、资源配额等管理,维护集群的状态。ControllerManager通过APIServer来获取整个集群的状态,确保所有node都处于预期的工作状态。ControllerManager一般和APIServer、Kube-Scheduler部署在同一台机器上。也可以单独部署。 ControllerManager一般有两个部分组成,kube-controller原创 2020-08-19 16:27:11 · 271 阅读 · 0 评论 -
kube-scheduler 调度中的流氓兔 - preempt
preempt 作用 这兔子在pod调度失败后,在没有禁用抢占调度的情况下,开始了“流氓式”的调度。 它的作用是抢占低优先级的pod,如果成功了,那么就更新pod spec,返回nodename。 func (sched *Scheduler) preempt(ctx context.Context, prof *profile.Profile, state *framework.CycleState, preemptor *v1.Pod, scheduleErr error) (string, error原创 2020-08-14 17:49:07 · 220 阅读 · 0 评论 -
kube-scheduler组件代码走读
基于v1.18.5版本 组件作用 kube-scheduler组件负责将pod调度到合适的节点上,在调度过程中,整体分为优选和预选两个阶段。其在集群中存在的作用,相当于集群另外一个大脑。 组件源码入口 package main import ( "math/rand" "os" "time" "github.com/spf13/pflag" cliflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/logs" _ "k原创 2020-08-14 16:29:30 · 360 阅读 · 0 评论 -
kubelet 创建容器源码过程
在创建容器,会执行kubernetes\pkg\kubelet\kuberuntime\kuberuntime_manager.go中的SyncPod方法,该方法的整体做的事情是: 计算需要创建或者删除的pod个数; 如果sandbox容器发生改变则杀掉重来; 删掉不需要在pod中维持或者保留的containers; 创建一个sandbox容器; 创建临时容器; 创建初始化容器; 创建正常的容器; 更新容器资源。 首先看computePodActions // Step 1: Compute sand原创 2020-08-13 17:04:32 · 252 阅读 · 0 评论 -
kubelet启动过程代码走读
kubelet启动过程分析 基于1.18.5 入口 入口文件kubernetes\cmd\kubelet\app\server.go中的startKubelet是完成初始化之后,开始对pod进行管理的入口, 从方法看,startKubelet不断调用k.Run方法,不断的同步信息。 func startKubelet(k kubelet.Bootstrap, podCfg *config.PodConfig, kubeCfg *kubeletconfiginternal.KubeletConfigurati原创 2020-08-12 20:11:02 · 269 阅读 · 0 评论 -
kubernetes scheduler genericScheduler findNodesThatPassFilters思路整理
代码作用 查找能够满足filter过滤插件的节点,返回结果有可能是0,1,N // findNodesThatPassFilters finds the nodes that fit the filter plugins. func (g *genericScheduler) findNodesThatPassFilters(ctx context.Context, prof *profile.Profile, state *framework.CycleState, pod *v1.Pod, status原创 2020-08-07 14:38:24 · 136 阅读 · 0 评论 -
kubernetes 生产可用部署方案架构图
原创 2020-06-04 15:59:56 · 956 阅读 · 0 评论 -
Scheduler-Framework中的Permit使用和注意事项
解释 Scheduler-Framework的介绍现在也比较多了,这篇文章假设您已经了解Scheduler-Framework的框架和每个扩展点的作用。 如果想全面了解,可以参阅: 《浅谈 Kubernetes Scheduling-Framework 插件的实现》 《自定义 Kubernetes 调度器》 《kube-scheduler》 接下来,我们就重点说说Permit Permit Permit用户阻止或者延迟与Node绑定,属于Binding Cycle阶段,就是说,此时Permit已经经过了预选原创 2020-05-27 18:29:21 · 514 阅读 · 1 评论 -
踩坑client-go for kubernetes乐观锁
直接上一段代码 func (po *PreOccupy) SetPodAnnotation(pod *v1.Pod) error { clientSet := po.Handle.ClientSet() if _, ok := pod.Annotations[OccupyExpireTime]; ok { pod.Annotations[OccupyExpireTime] = "" } if _, ok := pod.Annotations[OccupyKilled]原创 2020-05-19 17:03:52 · 1617 阅读 · 0 评论