【kubernetes/k8s原始碼分析】 deployment原始碼分析
阿新 • • 發佈:2018-12-14
0. 開始
func NewControllerInitializers() map[string]InitFunc {
controllers := map[string]InitFunc{}
controllers["deployment"] = startDeploymentController
controllers["replicaset"] = startReplicaSetController
return controllers
}
0.1 startDeploymentController函式
- 判斷
deployments
是否開啟 - 建立並初始化
DeploymentController
NDeploymentController
物件的Run方法,迴圈處理流程
func startDeploymentController(ctx ControllerContext) (bool, error) { if !ctx.AvailableResources[schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "deployments"}] { return false, nil } dc, err := deployment.NewDeploymentController( ctx.InformerFactory.Extensions().V1beta1().Deployments(), ctx.InformerFactory.Extensions().V1beta1().ReplicaSets(), ctx.InformerFactory.Core().V1().Pods(), ctx.ClientBuilder.ClientOrDie("deployment-controller"), ) if err != nil { return true, fmt.Errorf("error creating Deployment controller: %v", err) } go dc.Run(int(ctx.Options.ConcurrentDeploymentSyncs), ctx.Stop) return true, nil }