- 博客(19)
- 资源 (5)
- 收藏
- 关注
原创 Scheduler-Framework中的Permit使用和注意事项
解释Scheduler-Framework的介绍现在也比较多了,这篇文章假设您已经了解Scheduler-Framework的框架和每个扩展点的作用。如果想全面了解,可以参阅:《浅谈 Kubernetes Scheduling-Framework 插件的实现》《自定义 Kubernetes 调度器》《kube-scheduler》接下来,我们就重点说说PermitPermitPermit用户阻止或者延迟与Node绑定,属于Binding Cycle阶段,就是说,此时Permit已经经过了预选
2020-05-27 18:29:21 522 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 1628
原创 kubecon·香港 京东云跨集群大规模应用管理实践 keynote分享
在JDCloud中,联邦Serverless服务基于联邦管理模型和Serverless应用模型,为联邦应用容器部署、弹性伸缩和故障迁移能力提供JDOS应用容器控制服务。它管理多个具有超过 10,000 个节点的集群。多个子集群统一管理,提高整体资源利用率。降低平台上多集群管理、调度、分发的复杂度。最终用户可以像使用原生 Kubernetes API 一样使用我们的平台。2、高效的跨集群弹性伸缩解决方案。1. 多集群管理与分发实践。3、制作和分享中遇到的问题。
2024-08-20 18:45:30 137
原创 基于“OneBuild”方法对镜像进行快速装箱
在云原生领域,无论使用哪种编排调度平台,Kubernetes,DockerSwarm,OpenShift等,业务都需要基于镜像进行交付,我们在内部实践“Source-to-image”和链式构建,总而总结出“OneBuild”模式。其核心思想是:一处构建,多处使用。
2024-02-19 18:21:00 876 1
原创 02 Uber Go 语言编码规范 - 指导原则 - interface 合理性验证
在开发interface时,要对interface的合理性进行验证,在编译时验证接口的符合性。这包括:将实现特定接口的导出类型作为接口API的一部分进行检查实现同一接口的(导出和非导出)类型属于实现类型的集合任何违反接口的合理性检查的场景,都会终止编译,并通知给用户补充:以上3条是编译器对接口的检查机制,大体意思是错误的使用接口会被编译器报错。所以可以利用这个机制让部门问题提前暴露。源代码// 如果Handler没有实现http.Handler,会在运行时报错type Handler st
2020-10-30 17:30:44 196
原创 02 Uber Go 语言编码规范 - 指导原则 - 指向 interface 的指针
首先,在规范中,我们建议和倡导,保存时运行goimports和gofmt,如果
2020-10-29 15:09:59 222
原创 01 Uber Go 语言编码规范 - 介绍
Uber Go 语言编码规范学习分享01-开篇介绍02-指导原则103-指导原则204-性能05-规范106-规范207-编程模式08-图说设计模式09-写在最后
2020-10-29 14:38:22 191
原创 使用git reset进行多commit合并
在开发分支下,往往会有多次提交,可能是feature,也可能是bugfix,如果git管理员基于commit进行打tag,这就比较麻烦,所以在打tag之前,最好把相似或者针对同一个feature/bugfix的多次提交进行合并。工具 git reset使用git reset开始合并首先通过git log找到当前分支的你想要合并的commit 991b88a8be945952c5b83b9e290f65d05c9d0bddAuthor: R1 <123456@abc.com>Date
2020-09-16 16:06:56 1208
转载 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 846 1
原创 Kubernetes Controller Manager 代码梳理
ControllerManager同样作为集群的一个大脑,负责集群内的Node,资源控制器,副本数管理,NameSpace,ServiceAccount、资源配额等管理,维护集群的状态。ControllerManager通过APIServer来获取整个集群的状态,确保所有node都处于预期的工作状态。ControllerManager一般和APIServer、Kube-Scheduler部署在同一台机器上。也可以单独部署。ControllerManager一般有两个部分组成,kube-controller
2020-08-19 16:27:11 273
原创 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 227
原创 kube-scheduler组件代码走读
基于v1.18.5版本组件作用kube-scheduler组件负责将pod调度到合适的节点上,在调度过程中,整体分为优选和预选两个阶段。其在集群中存在的作用,相当于集群另外一个大脑。组件源码入口package mainimport ( "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 364
原创 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 255
原创 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 275
原创 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 142
原创 The subversion command line tools are no longer provided by Xcode.
今天使用svn,发现cli直接提示错误,“The subversion command line tools are no longer provided by Xcode.”wxf@mbp_15 ~ % svnsvn: error: The subversion command line tools are no longer provided by Xcode.版本:macos 10.15.5 catalina解决办法:wxf@mbp_15 ~ % sudo rm -rf /Library/
2020-06-05 15:04:54 9202 7
转载 12-Factor
一份基准代码(Codebase),多份部署(deploy)12-Factor应用(译者注:应该是说一个使用本文概念来设计的应用,下同)通常会使用版本控制系统加以管理,如Git, Mercurial, Subversion。一份用来跟踪代码所有修订版本的数据库被称作 代码库(code repository, code repo, repo)。在类似 SVN 这样的集中式版本控制系统中,基准代码 就是指控制系统中的这一份代码库;而在 Git 那样的分布式版本控制系统中,基准代码 则是指最上游的那份代码库。
2020-05-28 17:11:52 259
QTP:动态加载对象库
2013-02-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人