之前的blog分析过k8s 1.4的apiserver代码,今天和大家分享一下k8s 1.7.6关于apiserver启动的代码。先上一个大图,花了好几个小时!
上面的图是整个启动的完整流程,关于api注册的地方。我打印了具体日志
上面installAPIResources有三个输入源分别是下面三个:
extensions
version:apiextensions.k8s.io/v1beta1
root:/apis
storage: customresourcedefinitions 、customresourcedefinitions/status
legacy(v1)
version:v1
root:/api
storage: pods/binding、persistentvolumeclaims、namespaces/finalize、 replicationcontrollers/status、pods/status、persistentvolumes、secrets、pods/attach、nodes、resourcequotas、pods/eviction、pods/exec、 pods/portforward、 serviceaccounts、persistentvolumes/status、 replicationcontrollers、 resourcequotas/status、services/status、componentstatuses、namespaces、 services、endpoints、namespaces/status、 configmaps、podtemplates、nodes/proxy、events、services/proxy、 pods/proxy、bindings、nodes/status、replicationcontrollers/scale、persistentvolumeclaims/status、pods、pods/log:、limitranges
apis
version:authentication.k8s.io/v1
root:/apis
storage: tokenreviews
version:authentication.k8s.io/v1beta1
root:/apis
storage: tokenreviews
version:authorization.k8s.io/v1
root:/apis
storage: map[subjectaccessreviews:0xc4216d0ec0 selfsubjectaccessreviews:0xc4216d0ed0 localsubjectaccessreviews:0xc4216d0ee0]
version:authorization.k8s.io/v1beta1
root:/apis
storage: selfsubjectaccessreviews、localsubjectaccessreviews、subjectaccessreviews
version:autoscaling/v1
root:/apis
storage: horizontalpodautoscalers、horizontalpodautoscalers/status
version:autoscaling/v2alpha1
root:/apis
storage: horizontalpodautoscalers、horizontalpodautoscalers/status
version:batch/v1
root:/apis
storage: jobs、jobs/status
version:certificates.k8s.io/v1beta1
root:/apis
storage: certificatesigningrequests、 certificatesigningrequests/status、certificatesigningrequests/approval
version:extensions/v1beta1
root:/apis
storage: replicationcontrollers/scale、 replicasets/status、replicasets/scale、deployments/status、 ingresses、deployments/scale、deployments、ingresses/status、deployments/rollback、podsecuritypolicies、replicasets、 thirdpartyresources、daemonsets、daemonsets/status、replicationcontrollers、networkpolicies、
version:networking.k8s.io/v1
root:/apis
storage: networkpolicies
version:policy/v1beta1
root:/apis
storage: poddisruptionbudgets/status
version:rbac.authorization.k8s.io/v1beta1
root:/apis
storage: rolebindings、clusterroles、 clusterrolebindings、roles
version:rbac.authorization.k8s.io/v1alpha1
root:/apis
storage: clusterroles、clusterrolebindings、roles、rolebindings
version:settings.k8s.io/v1alpha1
root:/apis
storage: podpresets
version:storage.k8s.io/v1
root:/apis
storage: storageclasses
version:storage.k8s.io/v1beta1
root:/apis
storage: storageclasses
version:apps/v1beta1
root:/apis
storage: deployments/status、 deployments/rollback、deployments/scale、 statefulsets、 statefulsets/status、controllerrevisions、deployments
上面通过三个源,注册api和apis!