โค๏ธ๐๐ๆฐๆถไปฃๆฅๆฑไบๅ็๏ผไบๅ็ๅ ทๆ็ฏๅข็ปไธใๆ้ไป่ดนใๅณๅผๅณ็จใ็จณๅฎๆงๅผบ็น็นใMyblog:http://nsddd.top
[TOC]
Kubernetes ๆฏGo่ฏญ่จๅผๅ็๏ผ็ธๅฏนๆฅ่ฏดๅคง้จๅ็ปๆ่ฟๆฏๅพๆธ ๆฐ็ใ
Kubernetes็ไปฃ็ ้ฝๅจ kubernetes็ฎๅฝไธ๏ผๅฆๅพ๏ผๆ นๆฎๅ่ฝไธป่ฆๅๆไปฅไธๅ ็ฑป๏ผ
1ใๆๆกฃ็ฑป
๏ผapiใdocsใlogo๏ผ
2ใๅทฅๅ
ท็ฑป
๏ผbuildใclusterใGodepsใhackใstagingใtranslations๏ผ
3ใไปฃ็ ็ฑป
๏ผcmdใpkgใpluginใtestใthird_party๏ผ
ๅทฅๅ ท็ฑปไธป่ฆ็จๅฐ็ build็ฎๅฝไธ็ๆไปถ๏ผ่ชๅทฑๅจๆ็ผ่ฏ็ๆถๅไผ็จๅฐ๏ผ
ๆ ธๅฟไปฃ็ ้ไธญๅจcmdๅpkgไธญใ่ฟไธคไธชๆฏ Kubernetes ๆ้่ฆ็ไธคไธชๅ ~
cmdๅ ้จๅ ๅซๅไธช็ปไปถ็ๅ ฅๅฃ๏ผๅ ทไฝๆ ธๅฟ็ๅฎ็ฐ้จๅๅจpkg็ฎๅฝไธใ
ๆไปฌๆฏไธไธช ๅฏๆง่กๆไปถ้ฝๅฏนๅบ cmd
ๅ ณไบๅ ถไป็ฎๅฝ๏ผ
plugin
็ฎๅฝไนๅ็็ๆฌๅ
ๆฌ scheduler
้จๅ็ไปฃ็ ๏ผๅฝๅ็ๆฌ๏ผๅบ่ฏฅๆฏๅจ1.10ไนๅ๏ผๅทฒ็ปๅฐscheduler้จๅไปฃ็ ็งปๅฐๅๅ
ถไป็ปไปถไธ่ด็ pkg
็ฎๅฝ๏ผๆไปฅ็ฎๅ plugin
ไธป่ฆๅ
ๅซ็ๆฏ่ฎค่ฏ
ไธ้ดๆ
้จๅ็ไปฃ็ ใ
root@cubmaster01:~/go/src/k8s.io/kubernetes# tree -L 1
.
โโโ api
โโโ build
โโโ CHANGELOG
โโโ CHANGELOG.md -> CHANGELOG/README.md
โโโ cluster
โโโ cmd
โโโ code-of-conduct.md
โโโ CONTRIBUTING.md
โโโ docs
โโโ go.mod
โโโ go.sum
โโโ hack
โโโ LICENSE
โโโ LICENSES
โโโ logo
โโโ Makefile -> build/root/Makefile
โโโ Makefile.generated_files -> build/root/Makefile.generated_files
โโโ _output
โโโ OWNERS
โโโ OWNERS_ALIASES
โโโ pkg
โโโ plugin
โโโ README.md
โโโ SECURITY_CONTACTS
โโโ staging
โโโ SUPPORT.md
โโโ test
โโโ third_party
โโโ vendor
makefile ๆฏๆไบคๅ็ผ่ฏ็๏ผ
Kubernetes ็็ผ่ฏๆนๆณๆไธ็ง๏ผmakefile ๅ docker ๆฏๆฏๆไบคๅ็ผ่ฏ็ใ
้กพๅๆไน๏ผ
โฏ tree api/ -L 2
api/
โโโ api-rules
โ โโโ aggregator_violation_exceptions.list
โ โโโ apiextensions_violation_exceptions.list
โ โโโ codegen_violation_exceptions.list
โ โโโ README.md
โ โโโ sample_apiserver_violation_exceptions.list
โ โโโ violation_exceptions.list
โโโ openapi-spec
โ โโโ README.md
โ โโโ swagger.json
โ โโโ v3
โโโ OWNERS
3 directories, 9 files
ๆไปฌๅฏไปฅ็ๅฐ swagger.json
ๆไปฌ้ฝ็ฅ้ api ๅฃฐๆ้ฝๆฏๆไธไธช json ๆไปถ๏ผ้่ฟๅฃฐๆๆๅๆๆ็ API
ๅฆๆๆไปฌ้่ฆ็ API ๆๆกฃ๏ผ็
swagger.json
::: tip ๅคง้็ kubernetes ็ๆบ็ ๆๅจ๏ผ้คไบ่ขซๆฝ็ฆปไธบๅ็ฌ็ปไปถ็้จๅ๏ผไพๅฆ api server ็ไปฃ็ ๏ผproxy ็ปไปถ็ไปฃ็ ๏ผkubelet ็ปไปถ็ไปฃ็ ใ
- ไธๅก้ป่พ้ฝๅจ pkg
- ๅฝไปค่กๅๆฐ้ฝๅจ cmd
:::
ๅ
ณไบไธคไธช็ปไปถ๏ผ ./pkg/api
ๅ ./pkg/apis
::: warning Api ๆไปถๅคนไธๅ ๅซๅOpen API ็ธๅ ณ็ๆจกๅๅฎไน็ญๅ ๅฎนใ
ๅ็งฐไธไธๆ ท๏ผไฝ็จๆฏๅฎๅ จไธไธๆ ท็ใ
-
็จไบๆ นๆฎ OpenAPI ่ง่ๅฝขๆ็ฌฆๅๅ ถ่งๅฎ็ API
-
apis ๆฏๅ ๅซๅ ๅปบ API Groups ๅ API Objects ็๏ผ่ scheme ็ธๅ ณ็ไปฃ็ ๅคง้จๅๅจ่ฟ้ใ
:::
root@cubmaster01:~/go/src/k8s.io/kubernetes# tree -L 1 pkg
pkg
โโโ api
โโโ apis
โโโ auth
โโโ capabilities
โโโ client
โโโ cloudprovider
โโโ cluster
โโโ controller
โโโ controlplane
โโโ credentialprovider
โโโ features
โโโ fieldpath
โโโ generated
โโโ kubeapiserver
โโโ kubectl
โโโ kubelet
โโโ kubemark
โโโ OWNERS
โโโ printers
โโโ probe
โโโ proxy
โโโ quota
โโโ registry
โโโ routes
โโโ scheduler
โโโ security
โโโ securitycontext
โโโ serviceaccount
โโโ util
โโโ volume
โโโ windows
็ฎๅฝ็ปๆ๏ผ
root@cubmaster01:~/go/src/k8s.io/kubernetes/pkg/apis# tree -L 1
.
โโโ abac
โโโ admission
โโโ admissionregistration
โโโ apidiscovery
โโโ apiserverinternal
โโโ apps
โโโ authentication
โโโ authorization
โโโ autoscaling
โโโ batch
โโโ certificates
โโโ coordination
โโโ core
โโโ discovery
โโโ events
โโโ extensions
โโโ flowcontrol
โโโ imagepolicy
โโโ networking
โโโ node
โโโ OWNERS
โโโ policy
โโโ rbac
โโโ resource
โโโ scheduling
โโโ storage
ๅจKubernetesๆบ็ ไธญ๏ผcore
็ฎๅฝๅapps
็ฎๅฝๆฏไธคไธชไธๅ็็ฎๅฝ๏ผ็จไบๅญๆพไธๅ็APIๅฏน่ฑกใ
core
็ฎๅฝไธๅญๆพ็ๆฏๅบ็ก็APIๅฏน่ฑก๏ผไพๅฆ PodใServiceใReplicationController ็ญใ่ฟไบAPIๅฏน่ฑกๆฏKubernetes็ๆ ธๅฟๅ่ฝ๏ผๆไพไบๅบๆฌ็่ฐๅบฆใ็ฎก็ๅ็ๆงๅ่ฝใapps
็ฎๅฝไธๅญๆพ็ๆฏๆฉๅฑ็APIๅฏน่ฑก๏ผไพๅฆ DeploymentใStatefulSet ็ญใ่ฟไบAPIๅฏน่ฑกๆฏๅฏนๅบ็กๅ่ฝ็ๆฉๅฑ๏ผๆไพไบๆดๅค็่ฐๅบฆใ็ฎก็ๅ็ๆงๅ่ฝใ
ๆปไน๏ผcore
็ฎๅฝๅapps
็ฎๅฝๆฏ็จๆฅๅญๆพไธๅ็ฑปๅ็APIๅฏน่ฑก็ใๅฆๆไฝ ๆณไบ่งฃๆไธช็นๅฎ็APIๅฏน่ฑก็่ฏฆ็ปไฟกๆฏ๏ผๅฏไปฅๅจ็ธๅบ็็ฎๅฝไธๆพๅฐๅฏนๅบ็ๆไปถใ
ไธป่ฆ็ฎๅฝ็่งฃ้๏ผ
pkg/apis
็ฎๅฝๆฏKubernetesๆบ็ ไธญ็จไบๅญๆพAPIๅฏน่ฑก็็ฎๅฝใ่ฟไธช็ฎๅฝไธญๅ
ๅซไบๅพๅคๅญ็ฎๅฝ๏ผๆฏไธชๅญ็ฎๅฝๅญๆพไบไธๅ็ฑปๅ็APIๅฏน่ฑกใ
่ฟไบๅญ็ฎๅฝ็ๅ็งฐ้ๅธธ็ฑไธค้จๅ็ปๆ๏ผไพๅฆ core/v1
ใapps/v1
็ญใๅ้ข็้จๅ่กจ็คบAPIๅฏน่ฑก็็ฑปๅ๏ผๅ้ข็้จๅ่กจ็คบAPIๅฏน่ฑก็็ๆฌใ
ไธ้ขๆฏไธไบๅธธ่ง็ๅญ็ฎๅฝๅๅ ถๅซไน๏ผ
-
core/v1
๏ผ่ฟไธช็ฎๅฝไธๅญๆพ็ๆฏๅบ็ก็APIๅฏน่ฑก๏ผไพๅฆ PodใServiceใReplicationController ็ญใ่ฟไบAPIๅฏน่ฑกๆฏKubernetes็ๆ ธๅฟๅ่ฝ๏ผๆไพไบๅบๆฌ็่ฐๅบฆใ็ฎก็ๅ็ๆงๅ่ฝใ -
apps/v1
๏ผ่ฟไธช็ฎๅฝไธๅญๆพ็ๆฏๆฉๅฑ็APIๅฏน่ฑก๏ผไพๅฆ DeploymentใStatefulSet ็ญ -
batch/v1
๏ผ่ฟไธช็ฎๅฝไธๅญๆพ็ๆฏๆนๅค็็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ JobใCronJob ็ญใ่ฟไบAPIๅฏน่ฑกไธป่ฆ็จไบๆง่กๆน้ไปปๅก๏ผๆฏๆๅจๆๆงๆง่กใๅคฑ่ดฅ้่ฏ็ญๅ่ฝใ -
networking.k8s.io/v1
๏ผ่ฟไธช็ฎๅฝไธๅญๆพ็ๆฏ็ฝ็ป็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ IngressใService ่ด่ฝฝๅ่กกๅจ็ญใ่ฟไบAPIๅฏน่ฑกไธป่ฆ็จไบๆไพ้็พคๅ ้จๅๅค้จ็็ฝ็ป่ฎฟ้ฎ่ฝๅใ -
extensions/v1beta1
๏ผ่ฟไธช็ฎๅฝไธๅญๆพ็ๆฏๆฉๅฑ็APIๅฏน่ฑก๏ผไพๅฆ DeploymentใIngress ็ญใ่ฟไบAPIๅฏน่ฑกๆฏๅฏนๅบ็กๅ่ฝ็ๆฉๅฑ๏ผๆไพไบๆดๅค็่ฐๅบฆใ็ฎก็ๅ็ๆงๅ่ฝใ
่ฟไบๅญ็ฎๅฝๅชๆฏ้จๅ็ฎๅฝ๏ผKubernetesไธญ่ฟๆ่ฎธๅคๅ ถไปๅญ็ฎๅฝ๏ผๆฏไธชๅญ็ฎๅฝๅญๆพ็ๆฏไธๅ็ฑปๅ็APIๅฏน่ฑกใๅฆๆไฝ ๆณไบ่งฃๆดๅคไฟกๆฏ๏ผๅฏไปฅๅจKubernetesๆบ็ ไปๅบไธญๆฅ็ใ
ๅจKubernetesๆบ็ ไธญ๏ผAPIๅฏน่ฑก็ๅฎไนไธ่ฌ้ฝไฝไบ
pkg/apis
็ฎๅฝไธใไพๅฆ๏ผDeploymentๅฏน่ฑก็ๅฎไนๅฐฑไฝไบpkg/apis/apps/v1/deployment.go
ๆไปถไธญใๅ ทไฝ็ไฝ็ฝฎๅฏ่ฝไผๆๆไธๅ๏ผไฝ้ๅธธ้ฝๅจ่ฟไธช็ฎๅฝๆๅ ถๅญ็ฎๅฝไธใๅฆๆไฝ ๆณๆฅ็ๆไธช็นๅฎ็APIๅฏน่ฑก็ๅฎไน๏ผไฝ ๅฏไปฅๅจKubernetesๆบ็ ไปๅบไธญๆ็ดขๅ ณ้ฎๅญ๏ผๆพๅฐๅฏนๅบ็ๆไปถใ
Podๅฏน่ฑก็ๅฎไนไฝไบKubernetesๆบ็ ไธญ็
pkg/apis/core/v1/pod.go
ๆไปถไธญใ่ฟไธชๆไปถไธญๅฎไนไบPodๅฏน่ฑก็ๆๆๅญๆฎต๏ผๅ ๆฌๅ็งฐใๅฝๅ็ฉบ้ดใ็ถๆใๅฎนๅจๅ่กจ็ญใๅฆๆไฝ ๆณไบ่งฃPodๅฏน่ฑก็ๆดๅค็ป่๏ผๅฏไปฅๅจ่ฟไธชๆไปถไธญๆฅ็ใ
pkg/apis
็ฎๅฝไธ็่ฟไบๅญ็ฎๅฝ้ฝๆฏ็จไบๅญๆพไธๅ็ฑปๅ็APIๅฏน่ฑก็ใ
abac
็ฎๅฝๅญๆพ็ๆฏๆๆๅ่ฎค่ฏ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ AttributePoliciesใPolicy ็ญใadmission
็ฎๅฝๅญๆพ็ๆฏๅ ฅ้จ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ AdmissionConfigurationใWebhook ็ญใadmissionregistration
็ฎๅฝๅญๆพ็ๆฏๅ ฅ้จๆณจๅ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ InitializerConfigurationใValidatingWebhookConfiguration ็ญใapidiscovery
็ฎๅฝๅญๆพ็ๆฏAPIๅ็ฐ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ APIGroupใAPIResourceList ็ญใapiserverinternal
็ฎๅฝๅญๆพ็ๆฏAPIๆๅกๅจๅ ้จ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ GroupResourcesใServerResources ็ญใauthentication
็ฎๅฝๅญๆพ็ๆฏ่บซไปฝ้ช่ฏ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ TokenReviewใUserInfo ็ญใauthorization
็ฎๅฝๅญๆพ็ๆฏๆๆ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ SelfSubjectAccessReviewใSubjectAccessReview ็ญใautoscaling
็ฎๅฝๅญๆพ็ๆฏ่ชๅจไผธ็ผฉ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ HorizontalPodAutoscalerใScale ็ญใcertificates
็ฎๅฝๅญๆพ็ๆฏ่ฏไนฆ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ CertificateSigningRequestใCertificateSigningRequestList ็ญใcoordination
็ฎๅฝๅญๆพ็ๆฏๅ่ฐ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ LeaseใLock ็ญใcore
็ฎๅฝๅญๆพ็ๆฏๅบ็ก็APIๅฏน่ฑก๏ผไพๅฆ PodใServiceใReplicationControllerdiscovery
็ฎๅฝๅญๆพ็ๆฏๅ็ฐ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ EndpointSliceใServiceAccountToken ็ญใevents
็ฎๅฝๅญๆพ็ๆฏไบไปถ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ EventใEventList ็ญใextensions
็ฎๅฝๅญๆพ็ๆฏๆฉๅฑ็APIๅฏน่ฑก๏ผไพๅฆ DeploymentใIngress ็ญใflowcontrol
็ฎๅฝๅญๆพ็ๆฏๆต้ๆงๅถ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ FlowSchemaใFlowSchemaList ็ญใimagepolicy
็ฎๅฝๅญๆพ็ๆฏ้ๅ็ญ็ฅ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ ImageReviewใImageReviewStatus ็ญใnetworking
็ฎๅฝๅญๆพ็ๆฏ็ฝ็ป็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ IngressใService ่ด่ฝฝๅ่กกๅจ็ญใnode
็ฎๅฝๅญๆพ็ๆฏ่็น็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ NodeใNodeList ็ญใOWNERS
็ฎๅฝๅญๆพ็ๆฏOWNERSๆไปถpolicy
็ฎๅฝๅญๆพ็ๆฏ็ญ็ฅ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ PodDisruptionBudgetใPodSecurityPolicy ็ญใrbac
็ฎๅฝๅญๆพ็ๆฏๅบไบ่ง่ฒ็่ฎฟ้ฎๆงๅถ๏ผRBAC๏ผ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ ClusterRoleใRoleBinding ็ญใresource
็ฎๅฝๅญๆพ็ๆฏ่ตๆบ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ ConfigMapใPersistentVolume ็ญใscheduling
็ฎๅฝๅญๆพ็ๆฏ่ฐๅบฆ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ PriorityClassใScheduling ็ญใstorage
็ฎๅฝๅญๆพ็ๆฏๅญๅจ็ธๅ ณ็APIๅฏน่ฑก๏ผไพๅฆ StorageClassใVolumeAttachment ็ญใpkg/apis/apps
็ฎๅฝๅญๆพ็ๆฏKubernetes็ๆฉๅฑAPIๅฏน่ฑกใ่ฟไบAPIๅฏน่ฑกๆฏๅฏนๅบ็กๅ่ฝ็ๆฉๅฑ๏ผๆไพไบๆดๅค็่ฐๅบฆใ็ฎก็ๅ็ๆงๅ่ฝใ่ฟไบAPIๅฏน่ฑกไธป่ฆ็จไบๆฏๆๅบ็จ็้จ็ฝฒใๆฉๅฑๅ็ฎก็ใ
ไพๅฆ๏ผ
pkg/apis/apps/v1
็ฎๅฝไธๅญๆพ็ๆฏDeploymentใStatefulSetใDaemonSet็ญAPIๅฏน่ฑกใ่ฟไบAPIๅฏน่ฑกไธป่ฆ็จไบๆฏๆๅบ็จ็้จ็ฝฒใๆฉๅฑๅ็ฎก็ใๅจ
pkg/apis/apps
็ฎๅฝไธ๏ผไฝ ไผๅ็ฐๆ่ฎธๅคๅญ็ฎๅฝ๏ผๆฏไธชๅญ็ฎๅฝๅญๆพ็ๆฏไธๅ็ๆฌ็APIๅฏน่ฑกใไพๅฆ๏ผpkg/apis/apps/v1
็ฎๅฝไธๅญๆพ็ๆฏDeploymentใStatefulSetใDaemonSet็ญAPIๅฏน่ฑก็v1็ๆฌ๏ผpkg/apis/apps/v1beta1
็ฎๅฝไธๅญๅจpkg/apis/apps
็ฎๅฝไธ๏ผไฝ ไผๅ็ฐๆ่ฎธๅคๅญ็ฎๅฝ๏ผๆฏไธชๅญ็ฎๅฝๅญๆพ็ๆฏไธๅ็ๆฌ็APIๅฏน่ฑกใไพๅฆ๏ผpkg/apis/apps/v1
็ฎๅฝไธๅญๆพ็ๆฏDeploymentใStatefulSetใDaemonSet็ญAPIๅฏน่ฑก็v1็ๆฌ๏ผpkg/apis/apps/v1beta1
็ฎๅฝไธๅญๆพ็ๆฏDeploymentใStatefulSetใDaemonSet็ญAPIๅฏน่ฑก็v1beta1็ๆฌใ่ฟไบๅญ็ฎๅฝๆฏไธบไบๆฏๆKubernetes็ๅค็ๆฌ็นๆง่่ฎพ่ฎก็ใๅจKubernetesไธญ๏ผAPIๅฏน่ฑกๅฏไปฅๆๅคไธช็ๆฌ๏ผ่ฟๆ ทๅฐฑๅฏไปฅๅจไธ็ ดๅ็ฐๆไปฃ็ ็ๆ ๅตไธ๏ผๆไพๆฐ็ๅ่ฝๅๆน่ฟใ่ฟไฝฟๅพKubernetesๆดๅ ็ตๆดป๏ผไนไฝฟๅพKubernetes็ๆดๆฐๅๅ็บงๅๅพๆดๅ ๅฎนๆใ
ๅจ
pkg/apis/apps
็ฎๅฝไธ๏ผไฝ ่ฟไผๅ็ฐๆๅพๅคๆไปถ๏ผ่ฟไบๆไปถๆฏKubernetes็ไปฃ็ ็ๆๅจไฝฟ็จ็ใKubernetes็ไปฃ็ ็ๆๅจๆฏไธ็งๅทฅๅ ท๏ผๅฏไปฅๆ นๆฎ็จๆท็่พๅ ฅ็ๆKubernetes็APIๅฏน่ฑกไปฃ็ ใ่ฟไฝฟๅพKubernetes็APIๅฏน่ฑกๅฏไปฅๆดๅ ๅฟซ้ใ็ฎๅๅฐๅผๅ๏ผไนไฝฟๅพKubernetes็APIๅฏน่ฑกๅฏไปฅๆดๅ ไธ่ดใ็ปไธๅฐ็ฎก็ใ้คไบ
pkg/apis/apps
็ฎๅฝ๏ผKubernetes่ฟๆ่ฎธๅคๅ ถไป็ฎๅฝ๏ผ่ฟไบ็ฎๅฝไนๆฏKubernetes็ไปฃ็ ็ๆๅจไฝฟ็จ็ใไพๅฆ๏ผpkg/apis/authorization
็ฎๅฝๅญๆพ็ๆฏ่ฎค่ฏๅๆๆ็ธๅ ณ็APIๅฏน่ฑก๏ผpkg/apis/batch
็ฎๅฝๅญๆพ็ๆฏๆนๅค็็ธๅ ณ็APIๅฏน่ฑก๏ผpkg/apis/coordination
็ฎๅฝๅญๆพ็ๆฏๅ่ฐ็ธๅ ณ็APIๅฏน่ฑก็ญใ
::: details about RBAC
ๅจไธ้ขๆไปฌ็ๅฐ๏ผrbac
็ฎๅฝๅญๆพ็ๆฏๅบไบ่ง่ฒ็่ฎฟ้ฎๆงๅถ๏ผRBAC๏ผ็ธๅ
ณ็APIๅฏน่ฑก๏ผไพๅฆ ClusterRoleใRoleBinding ็ญใ
้ฃไน RBAC ๆฏไปไนๅข๏ผๅฎๆฏไธๅบไบ่ง่ฒ็ๆ้ๆงๅถ๏ผๆ่ฎธไธ้ข็ไธๅฅ่ฏ่ฝๅธฎๅฉไฝ ็่งฃๅฎ๏ผ
ๆไปฌ้ฝ็ฅ้ Kubernetes ไธญๆๆ็ APIๅฏน่ฑก้ฝไฟๅญๅจ etcd ไธญ๏ผๅฏๆฏ๏ผๅฏนไบ่ฟไบ API ๅฏน่ฑก็ๆไฝไธๅฎๆฏ้่ฟ่ฎฟ้ฎ kube-apiServer ๅฎ็ฐ็ใๅ
ถไธญไธไธช้ๅธธ้่ฆ็ๅๅ ๅฐฑๆฏ๏ผ้่ฆ API Server ๆฅๅธฎๅฟๅทฆๆๆๅทฅไฝใ่ๅจ Kubernetes ็้กน็ฎไธญ๏ผ่ด่ดฃๅฎๆๆๆๅทฅไฝ็ๆบๅถๆฏ RBACใ
so๏ผdirectory structure๏ผ
root@cubmaster01:/workspces/kubernetes/pkg/apis/rbac# ls -al
total 92
drwxr-xr-x 8 root root 4096 Jan 4 06:58 .
drwxr-xr-x 27 root root 4096 Jan 4 06:58 ..
-rw-r--r-- 1 root root 698 Nov 30 03:40 doc.go
drwxr-xr-x 2 root root 4096 Nov 30 03:40 fuzzer
-rw-r--r-- 1 root root 12362 Nov 30 03:40 helpers.go
-rw-r--r-- 1 root root 9453 Nov 30 03:40 helpers_test.go
drwxr-xr-x 2 root root 4096 Nov 30 03:40 install
-rw-r--r-- 1 root root 205 Nov 30 03:40 OWNERS
-rw-r--r-- 1 root root 1811 Nov 30 03:40 register.go
-rw-r--r-- 1 root root 7897 Jan 4 06:58 types.go
drwxr-xr-x 2 root root 4096 Nov 30 03:40 v1
drwxr-xr-x 2 root root 4096 Nov 30 03:40 v1alpha1
drwxr-xr-x 2 root root 4096 Nov 30 03:40 v1beta1
drwxr-xr-x 2 root root 4096 Jan 4 06:58 validation
-rw-r--r-- 1 root root 11402 Dec 9 09:16 zz_generated.deepcopy.go
๐ ๅฏนไธ้ข็่งฃ้๏ผ
doc.go
ๆไปถๅ ๅซๅฏนๆดไธชๅ ็ๆๆกฃ็ๅผ็จใhelpers.go
ๆไปถๅ ๅซ็จไบๅฎ็ฐ RBAC ๅ่ฝ็ๅธฎๅฉ็จๅบๅฝๆฐ็ไปฃ็ ใhelpers_test.go
ๆไปถๅ ๅซ็จไบๆต่ฏhelpers.go
ไธญ็ๅฝๆฐ็ไปฃ็ ใinstall
็ฎๅฝๅ ๅซ็จไบๅฎ่ฃ RBAC API ็ไปฃ็ ใOWNERS
ๆไปถๅ ๅซๅฏน่ฟไธช็ฎๅฝ็็ปดๆค่ ็ๅ่กจใregister.go
ๆไปถๅ ๅซ็จไบๆณจๅ RBAC API ็ไปฃ็ ใtypes.go
ๆไปถๅ ๅซ็จไบๅฎไน RBAC API ๅฏน่ฑก็ไปฃ็ ใvalidation
็ฎๅฝๅ ๅซ็จไบ้ช่ฏ RBAC API ๅฏน่ฑก็ไปฃ็ ใv1
็ฎๅฝๅ ๅซ v1 ็ๆฌ็ RBAC API ๅฏน่ฑก็ๅฎไนใv1alpha1
็ฎๅฝๅ ๅซ v1alpha1 ็ๆฌ็ RBAC API ๅฏน่ฑก็ๅฎไนใv1beta1
็ฎๅฝๅ ๅซ v1beta1 ็ๆฌ็ RBAC API ๅฏน่ฑก็ๅฎไนใfuzzer
ๆไปถๅ ๅซ็จไบๆง่กๆจก็ณๆต่ฏ็ไปฃ็ ใzz_generated.deepcopy.go
ๆไปถๅ ๅซ็จไบ็ๆๆทฑๆท่ดๅฝๆฐ็ไปฃ็ ใ
ๅฏไปฅไฝฟ็จ types.go
ๆไปถไธญๅฎไน็ Role
ๅ RoleBinding
ๅฏน่ฑกๆฅๅๅปบๅ็ฎก็่ง่ฒใๆจๅฏไปฅไฝฟ็จ register.go
ไธญ็ไปฃ็ ๆฅๆณจๅ RBAC API๏ผไป่ไฝฟๅ
ถๅฏไปฅๅจ้็พคไธญไฝฟ็จใๆจๅฏไปฅไฝฟ็จ validation
็ฎๅฝไธญ็ไปฃ็ ๆฅ้ช่ฏ RBAC API ๅฏน่ฑก๏ผไปฅ็กฎไฟๅฎไปฌ็ฌฆๅ่ฆๆฑใ
่ฟไบๆไปถๅ็ฎๅฝๅ ฑๅๆๆไบ Kubernetes ไธญ็ RBAC ๅ่ฝใRBAC ๅ่ฝไฝฟๆจๅฏไปฅๅจ้็พคไธญๅๅปบๅ็ฎก็่ง่ฒ๏ผๅนถๅฐ่ง่ฒๅ้ ็ป็จๆทๅ็ป๏ผไป่ๆงๅถๅฏน่ตๆบ็่ฎฟ้ฎใ
:::
ๅจ details
ๅ
ๅฎนไธญ๏ผๆไปฌ็ๅฐไบ OWNERS
ๆไปถ๏ผ้ๅฏน Kubernetes ็้กน็ฎๅฏน็ปดๆค่
็ๅ่กจๆไปถๅๅบๅๆ๏ผ่ฟไธชๆไปถ๏ผไธ็ฎๅ๏ผ โญ
# See the OWNERS docs at https://go.k8s.io/owners
# approval on api packages bubbles to api-approvers
reviewers:
- sig-auth-authorizers-approvers
- sig-auth-authorizers-reviewers
labels:
- sig/auth
๐ ๅฏนไธ้ข็่งฃ้๏ผ
OWNERS ๆไปถ้ๅธธๅ
ๅซๆๅ
ณ็ฎๅฝ็็ปดๆคไบบๅ็ไฟกๆฏใๅจ่ฟ็งๆ
ๅตไธ๏ผOWNERS ๆไปถๅ
ๅซๆๅ
ณ pkg/apis/rbac
็ฎๅฝ็็ปดๆคไบบๅ็ไฟกๆฏใ
OWNERS ๆไปถไธญ็ reviewers
ๅญๆฎตๅ
ๅซไธไธช็จๆทๅๅ่กจ๏ผ่กจ็คบๅจ่ฏฅ็ฎๅฝไธญๆๆไปฃ็ ๆดๆนๆไบคไนๅๅฟ
้กปๆไพๆนๅ็็จๆทใ่ฟไบ็จๆท่ขซ็งฐไธบๅฎกๆ ธๅใไพๅฆ๏ผๅจๆฌไพไธญ๏ผๆๆไปฃ็ ๆดๆน้ฝๅฟ
้กปๅจ sig-auth-authorizers-approvers
ๅ sig-auth-authorizers-reviewers
ไธคไธช็จๆทไธญ็ไธไธชๆนๅไนๅๆ่ฝๆไบคใ
OWNERS ๆไปถไธญ็ labels
ๅญๆฎตๅ
ๅซไธไธชๆ ็ญพๅ่กจ๏ผ่กจ็คบไธ่ฏฅ็ฎๅฝ็ธๅ
ณ็ไธป้ขๆๅ
ณๆณจ็นใ่ฟไบๆ ็ญพๅฏไปฅๅธฎๅฉๆจๅฟซ้ไบ่งฃ่ฏฅ็ฎๅฝๆๅ
ณๆณจ็ๅ
ๅฎนใไพๅฆ๏ผๅจๆฌไพไธญ๏ผ่ฏฅ็ฎๅฝไธ sig/auth
ไธป้ขๆๅ
ณใ
OWNERS ๆไปถๆฏ็จไบๆ่ฟฐไธ็ฎๅฝ็ธๅ ณ็ไฟกๆฏ็ๆไปถ๏ผไพๅฆๅฎกๆ ธๅๅๅ ณๆณจ็นใ่ฟไบไฟกๆฏๆๅฉไบๅ่ฐๅ็ฎก็่ฏฅ็ฎๅฝไธญ็ไปฃ็ ใ
โ ๆไปฌๆๅฐไบไปฃ็ ็ๆๅจ๏ผๅ ถๅฎๅ ใๆทฑๅ ฅ่งฃๆKubernetes็ๆบ็ ใ ่ฟๆฌไนฆไธญ๏ผๆไปฌไบ่งฃๅฐไบไปฃ็ ็ๆๅจ๏ผไฝๆฏไนฆไธญๅ็้ป่พไธๆฏๅพๆธ ๆฐ๏ผๅฏผ่ดๅฏน ไปฃ็ ็ๆๅจ ็็่งฃไธๆฏๅพ้ๅฝป~
๐ญ ๆไปฅ่ฟๆฏๆจ่็ ใๆทฑๅ ฅๅๆKubernetesใ
Kubernetes็ไปฃ็ ็ๆๅจๆฏไธ็งๅทฅๅ ท๏ผ็จไบ็ๆKubernetes็APIๅฏน่ฑกไปฃ็ ใๅฎๅฏไปฅๆ นๆฎ็จๆท็่พๅ ฅ๏ผ่ชๅจ็ๆKubernetes APIๅฏน่ฑก็ Go ไปฃ็ ใKubernetes็ไปฃ็ ็ๆๅจไฝฟ็จไบไธ็งๅซๅ OpenAPI ็ๆๆฏ๏ผๅฏไปฅ้่ฟๅฎไน API ๅฏน่ฑก็ๆจกๅๆฅ็ๆไปฃ็ ใ
Kubernetes็ไปฃ็ ็ๆๅจๆ่ฎธๅคไผ็น๏ผไพๅฆ๏ผ
- ๅๅฐ้ๅคๅทฅไฝ๏ผไฝฟ็จไปฃ็ ็ๆๅจ๏ผๅฏไปฅๅๅฐๆๅไปฃ็ ็ๅทฅไฝ้ใ
- ๆ้ซไปฃ็ ่ดจ้๏ผไฝฟ็จไปฃ็ ็ๆๅจ๏ผๅฏไปฅไฟ่ฏ็ๆ็ไปฃ็ ่ดจ้ๆด้ซ๏ผๅ ไธบๅฎๆฏๆ นๆฎๆจกๆฟ็ๆ็ใ
- ไฟ่ฏไปฃ็ ไธ่ดๆง๏ผไฝฟ็จไปฃ็ ็ๆๅจ๏ผๅฏไปฅไฟ่ฏ็ๆ็ไปฃ็ ้ฃๆ ผไธ่ด๏ผๅ ไธบๅฎๆฏๆ นๆฎๆจกๆฟ็ๆ็ใ
Kubernetes็ไปฃ็ ็ๆๅจๅฏนKubernetes็ไฝ็จ้ๅธธ้่ฆ๏ผๅฎไฝฟๅพKubernetes็APIๅฏน่ฑกๅฏไปฅๆดๅ ๅฟซ้ใ็ฎๅๅฐๅผๅ๏ผไนไฝฟๅพKubernetes็APIๅฏน่ฑกๅฏไปฅๆดๅ ไธ่ดใ็ปไธๅฐ็ฎก็ใ
้่ฟไฝฟ็จไปฃ็ ็ๆๅจ๏ผKubernetes็ๅผๅไบบๅๅฏไปฅไธๆณจไบAPIๅฏน่ฑก็ไธๅก้ป่พ๏ผ่ไธๅฟ ๆ ๅฟๅบๅฑๅฎ็ฐ็ป่ใ่ฟๅคงๅคง้ไฝไบๅผๅ้พๅบฆ๏ผไนๆ้ซไบๅผๅๆ็ใ
ๆญคๅค๏ผไฝฟ็จไปฃ็ ็ๆๅจ่ฟๅฏไปฅไฟ่ฏKubernetes็APIๅฏน่ฑกไปฃ็ ่ดจ้ๆด้ซ๏ผๅ ไธบๅฎๆฏๆ นๆฎๆจกๆฟ็ๆ็ใ่ฟ่ฝๅค้ฟๅ ไบบไธบ็ๅฟฝๅฏผ่ด็ไปฃ็ ้่ฏฏ๏ผไฝฟๅพKubernetes็APIๅฏน่ฑกๆดๅ ๅฏ้ ใ
ๆป็ๆฅ่ฏด๏ผKubernetes็ไปฃ็ ็ๆๅจๆฏไธ็ง้ๅธธๆ็จ็ๅทฅๅ ท๏ผๅฎไธบKubernetes็APIๅฏน่ฑก็ๅผๅๅ็ฎก็ๅธฆๆฅไบๅพๅคไพฟๅฉใ
Kubernetes
ๆบ็ ไธญ็ไปฃ็ ็ๆๅจไพๅญ๏ผไปฅๅๅฎไปฌๆๅจ็ๅฐๅ็ฎๅฝ๏ผ
- Deploymentไปฃ็ ็ๆๅจ๏ผ
pkg/apis/apps/v1/codegen
- Serviceไปฃ็ ็ๆๅจ๏ผ
pkg/apis/core/v1/codegen
- Podไปฃ็ ็ๆๅจ๏ผ
pkg/apis/core/v1/codegen
- ReplicationControllerไปฃ็ ็ๆๅจ๏ผ
pkg/apis/core/v1/codegen
- Jobไปฃ็ ็ๆๅจ๏ผ
pkg/apis/batch/v1/codegen
- CronJobไปฃ็ ็ๆๅจ๏ผ
pkg/apis/batch/v1beta1/codegen
::: danger ๆ้ ๆดๅคๅ ณไบไปฃ็ ็ๆๅจ็็ฅ่ฏ๏ผๆจ่้ ่ฏป๏ผ
่ฟไธช็ฎๅฝๅ็กฎๆฅ่ฏดๆฏๅญๆพๆ ธๅฟ็ปไปถ็๏ผไฝๆฏๆฏไธดๆถๅญๅจ็๏ผๆไปฌๅฏไปฅๅ่ README.md ๆไปถ
ๆญค็ฎๅฝๆฏๅทฒๆๅๅฐ่ชๅทฑ็ๅญๅจๅบ็ๅ ็ๆๅญๅบใ่ฟ้็ๅ ๅฎนๅฐๅฎๆๅๅธๅฐๅ่ช็้กถ็บง k8s.io ๅญๅจๅบใ
็ฎๅๅจๆญคๅคๆๅญ็ๅญๅจๅบ๏ผ
k8s.io/api
k8s.io/apiextensions-apiserver
k8s.io/apimachinery
k8s.io/apiserver
k8s.io/cli-runtime
k8s.io/client-go
k8s.io/cloud-provider
k8s.io/cluster-bootstrap
k8s.io/code-generator
k8s.io/component-base
k8s.io/component-helpers
k8s.io/controller-manager
k8s.io/cri-api
k8s.io/csi-translation-lib
k8s.io/kms
k8s.io/kube-aggregator
k8s.io/kube-controller-manager
k8s.io/kube-proxy
k8s.io/kube-scheduler
k8s.io/kubectl
k8s.io/kubelet
k8s.io/legacy-cloud-providers
k8s.io/metrics
k8s.io/mount-utils
k8s.io/noderesourcetopology-api
k8s.io/pod-security-admission
k8s.io/sample-apiserver
k8s.io/sample-cli-plugin
k8s.io/sample-controller
staging/
็ฎๅฝไธญ็ไปฃ็ ๆฏๆๅจ็๏ผๅณไปฃ็ ็ๅฏไธๅฏๆฌใๆจๅฏไปฅ็ดๆฅไฟฎๆนๆญค็ฑปไปฃ็ ใ
Kubernetes ไปฃ็ ้่ฟ็ฎๅฝไธญ็็ฌฆๅท้พๆฅไฝฟ็จๆญค็ฎๅฝไธญ็ๅญๅจๅบ vendor/k8s.io
ๅฐๆญคๆๅญๅบๅใไพๅฆ๏ผๅฝ Kubernetes ไปฃ็ ไปk8s.io/client-go
ๅญๅจๅบๅฏผๅ
ฅไธไธชๅ
ๆถ๏ผ่ฏฅๅฏผๅ
ฅ่ขซ่งฃๆไธบstaging/src/k8s.io/client-go
็ธๅฏนไบ้กน็ฎๆ น็ฎๅฝ๏ผ
// pkg/example/some_code.go
package example
import (
"k8s.io/client-go/dynamic" // resolves to staging/src/k8s.io/client-go/dynamic
)
ไธๆฆๅฎๆๅๅค้จๅญๅจๅบ็่ฝฌๆข๏ผ่ฟไบๅญๅจๅบๅฎ้
ไธๅฐ็ฑk8s.io/<package-name>
.
src/k8s.io/็ฎๅฝๆฏKubernetes้กน็ฎ็ๆ น็ฎๅฝ๏ผๅ ๅซไบKubernetes็ณป็ป็ๆๆๆบไปฃ็ ใ่ฟๆฏsrc/k8s.io/็ฎๅฝ็้ซๅฑ็ปๆ๏ผ
root@cubmaster01:/workspces/kubernetes/staging/src/k8s.io# tree -L 1
.
โโโ api
โโโ apiextensions-apiserver
โโโ apimachinery
โโโ apiserver
โโโ client-go
โโโ cli-runtime
โโโ cloud-provider
โโโ cluster-bootstrap
โโโ code-generator
โโโ component-base
โโโ component-helpers
โโโ controller-manager
โโโ cri-api
โโโ csi-translation-lib
โโโ dynamic-resource-allocation
โโโ kms
โโโ kube-aggregator
โโโ kube-controller-manager
โโโ kubectl
โโโ kubelet
โโโ kube-proxy
โโโ kube-scheduler
โโโ legacy-cloud-providers
โโโ metrics
โโโ mount-utils
โโโ noderesourcetopology-api
โโโ pod-security-admission
โโโ sample-apiserver
โโโ sample-cli-plugin
โโโ sample-controller
็ฎๅฝๅ่ฝ๏ผ
api/
็ฎๅฝๅ ๅซKubernetes API็ๅฎไนใapiextensions-apiserver/
็ฎๅฝๅ ๅซ็จไบๆฉๅฑKubernetes API็ไปฃ็ ใapimachinery/
็ฎๅฝๅ ๅซ็จไบๆๅปบKubernetes API็ๅทฅๅ ทใapiserver/
็ฎๅฝๅ ๅซKubernetes APIๆๅกๅจ็ๆบไปฃ็ ใclient-go/
็ฎๅฝๅ ๅซ็จไบ่ฎฟ้ฎKubernetes API็ๅฎขๆท็ซฏๅบใcli-runtime/
็ฎๅฝๅ ๅซ็จไบๆฉๅฑkubectl็ๅบใcloud-provider/
็ฎๅฝๅ ๅซ็จไบๆฏๆไบๅนณๅฐ็ไปฃ็ ใcluster-bootstrap/
็ฎๅฝๅ ๅซ็จไบๅผๅฏผๆฐ้็พค็ๅทฅๅ ทใcode-generator/
็ฎๅฝๅ ๅซ็จไบ็ๆKubernetesไปฃ็ ็ๅทฅๅ ทใcomponent-base/
็ฎๅฝๅ ๅซKubernetes็ปไปถ็ๅบ็กๅบใcomponent-helpers/
็ฎๅฝๅ ๅซ็จไบๅธฎๅฉๆๅปบKubernetes็ปไปถ็ๅบใcontroller-manager/
็ฎๅฝๅ ๅซKubernetesๆงๅถๅจ็ฎก็ๅจ็ไปฃ็ ใcsi-translation-lib/
็ฎๅฝๅ ๅซ็จไบๅจKubernetesๅๅฎนๅจๅญๅจๆฅๅฃ(CSI)ไน้ด่ฟ่ก่ฝฌๆข็ๅบใcri-api/
็ฎๅฝๅ ๅซ็จไบ่ฟ่กๅฎนๅจ็ไปฃ็ ใdynamic-resource-allocation/
็ฎๅฝๅ ๅซ็จไบๅจๆๅ้ ่ตๆบ็ไปฃ็ ใkms/
็ฎๅฝๅ ๅซ็จไบ็ฎก็ๅ ๅฏๅฏ้ฅ็ไปฃ็ ใkube-aggregator/
็ฎๅฝๅ ๅซ็จไบๆไพ่ๅAPIๆๅกๅจ็ไปฃ็ ใkube-controller-manager/
็ฎๅฝๅ ๅซKubernetesๆงๅถๅจ็ฎก็ๅจ็ไปฃ็ ใkubectl/
็ฎๅฝๅ ๅซkubectlๅฝไปค่กๅทฅๅ ท็ๆบไปฃ็ ใkubelet/
็ฎๅฝๅ ๅซkubelet็ๆบไปฃ็ ใkube-proxy/
็ฎๅฝๅ ๅซKubernetesไปฃ็็ไปฃ็ ใkube-scheduler/
็ฎๅฝๅ ๅซKubernetes่ฐๅบฆ็จๅบ็ไปฃ็ ใlegacy-cloud-providers/
็ฎๅฝๅ ๅซๅทฒๅบๅผ็ไบๆไพๅไปฃ็ ใmetrics/
็ฎๅฝๅ ๅซ็จไบๆถ้Kubernetesๅบฆ้ๆๆ ็ไปฃ็ ใmount-utils/
็ฎๅฝๅ ๅซ็จไบๆ่ฝฝๆไปถ็ณป็ป็ๅทฅๅ ทใnoderesourcetopology-api/
็ฎๅฝๅ ๅซ็จไบๆ่ฟฐ่็น่ตๆบๆๆ็ปๆ็APIใpod-security-admission/
็ฎๅฝๅ ๅซ็จไบๆงๅถpodๅฎๅ จๆง็ไปฃ็ ใsample-apiserver/
็ฎๅฝๅ ๅซKubernetes็คบไพAPIๆๅกๅจ็ไปฃ็ ใsample-cli-plugin/
็ฎๅฝๅ ๅซ็จไบๆฉๅฑkubectl็็คบไพๆไปถ็ไปฃ็ ใsample-controller/
็ฎๅฝๅ ๅซKubernetes็คบไพๆงๅถๅจ็ไปฃ็ ใ
root@cubmaster01:/workspces/kubernetes/staging/src/k8s.io# ls api
admission authorization coordination flowcontrol node roundtrip_test.go
admissionregistration autoscaling core go.mod OWNERS scheduling
apidiscovery batch discovery go.sum policy SECURITY_CONTACTS
apiserverinternal certificates doc.go imagepolicy rbac storage
apps code-of-conduct.md events LICENSE README.md testdata
authentication CONTRIBUTING.md extensions networking resource
ๅ่ฝ๏ผ
admission/
็ฎๅฝๅ ๅซไปฃ็ ๏ผ็จไบๆงๅถๅฏน่ตๆบ็่ฎฟ้ฎใadmissionregistration/
็ฎๅฝๅ ๅซไปฃ็ ๏ผ็จไบๆณจๅ่ตๆบ่ฎฟ้ฎๆงๅถ็ปไปถใapidiscovery/
็ฎๅฝๅ ๅซไปฃ็ ๏ผ็จไบๆ่ฟฐKubernetes API็ๅ็ฐๆบๅถใapiserverinternal/
็ฎๅฝๅ ๅซไปฃ็ ๏ผ็จไบๅฎ็ฐKubernetes APIๆๅกๅจ็ๅ ้จๅ่ฝใapps/
็ฎๅฝๅ ๅซไปฃ็ ๏ผ็จไบ็ฎก็ๅบ็จ็จๅบ่ตๆบใauthentication/
็ฎๅฝๅ ๅซไปฃ็ ๏ผ็จไบๆงๅถ่บซไปฝ้ช่ฏใauthorization/
็ฎๅฝๅ ๅซไปฃ็ ๏ผ็จไบๆงๅถๆๆใautoscaling/
็ฎๅฝๅ ๅซไปฃ็ ๏ผ็จไบๆงๅถ่ตๆบ็่ชๅจๆฉๅฑใbatch/
็ฎๅฝๅ ๅซไปฃ็ ๏ผ็จไบ็ฎก็ๆนๅค็่ตๆบใcertificates/
็ฎๅฝๅ ๅซไปฃ็ ๏ผ็จไบ็ฎก็่ฏไนฆ่ตๆบใcoordination/
็ฎๅฝๅ ๅซไปฃ็ ๏ผ็จไบ็ฎก็ๅๅธๅผๅ่ฐ่ตๆบใcore/
็ฎๅฝๅ ๅซไปฃ็ ๏ผ็จไบ็ฎก็ๆ ธๅฟ่ตๆบใrbac/
็ฎๅฝๅ ๅซไปฃ็ ๏ผ็จไบ็ฎก็่ง่ฒๅบๆฌ่ฎฟ้ฎๆงๅถ(RBAC)่ตๆบใscheduling/
็ฎๅฝๅ ๅซไปฃ็ ๏ผ็จไบ็ฎก็่ฐๅบฆ่ตๆบใstorage/
็ฎๅฝๅ ๅซไปฃ็ ๏ผ็จไบ็ฎก็ๅญๅจ่ตๆบใ
้คไบ่ฟไบ็ฎๅฝไนๅค๏ผ่ฟๆไธไบๆไปถ๏ผๅฎไปฌไนๆฏ้่ฆ็้จๅ๏ผ
doc.go
ๆฏๆๆกฃ็ๅ ฅๅฃๆไปถใgo.mod
ๅgo.sum
ๆฏGo็ไพ่ต็ฎก็ๆไปถใLICENSE
ๆไปถๅ ๅซKubernetesไฝฟ็จ็่ฎธๅฏ่ฏใOWNERS
ๆไปถๅ ๅซ่ด่ดฃ็ปดๆค็ฎๅฝ็ไบบๅๅ่กจใREADME.md
ๆไปถๅ ๅซๆๅ ณ็ฎๅฝ็ไฟกๆฏใSECURITY_CONTACTS
ๆไปถๅ ๅซๆๅ ณๅฎๅ จ้ฎ้ข็่็ณปไบบๅ่กจใtestdata/
็ฎๅฝๅ ๅซๆต่ฏๆฐๆฎใcode-of-conduct.md
ๆไปถๅ ๅซๆๅ ณKubernetes็คพๅบ่กไธบๅๅ็ไฟกๆฏใCONTRIBUTING.md
ๆไปถๅ ๅซๆๅ ณๅฆไฝไธบKubernetes่ดก็ฎไปฃ็ ็ไฟกๆฏใroundtrip_test.go
ๆไปถๅ ๅซ็จไบๆต่ฏ็ไปฃ็ ใ
ๆไปฌๅฏไปฅ่ฟไธๆญฅๅ่งๅฏ
apps
็ฎๅฝ๏ผ่ฟไธชๅ็งฐๅพ็ผ็๏ผpkg/apis/apps/ ็ฎๅฝๅ staging/src/k8s.io/api/apps/ ๅฎไปฌ็็ฎๅฝ็ปๆๅพๆฅ่ฟ๏ผ่ฏท้ฎๅฎไปฌๆไปไนไธไธๆ ท๏ผๆๆณไบ่งฃๅฎไปฌ็ๅฏนๆฏ่ๅ ๆทฑๅฏนๅฎไปฌ็็่งฃ
pkg/apis/ๅstaging/src/k8s.io/api/็ฎๅฝ้ฝๆฏKubernetesๆบ็ ็ไธ้จๅใๅฎไปฌไน้ด็ไธป่ฆๅบๅซๆฏ๏ผpkg/apis/็ฎๅฝไธ็ไปฃ็ ๆดๅ ๆฝ่ฑก๏ผ้ๅธธๆฏ็ฑstaging/src/k8s.io/api/็ฎๅฝไธ็ไปฃ็ ๅฎ็ฐ็ใ
ๅจKubernetesไธญ๏ผpkg/apis/็ฎๅฝไธ็ไปฃ็ ๅฎไนไบAPI่ตๆบ็ๆฝ่ฑกๆฅๅฃใ่ฟไบๆฅๅฃๆ่ฟฐไบ่ตๆบ็็ฑปๅใๅญๆฎตๅๆไฝ๏ผไฝๆฒกๆๅฎ็ฐๅ ทไฝ็้ป่พใ็ธๅ๏ผstaging/src/k8s.io/api/็ฎๅฝไธ็ไปฃ็ ๅฎ็ฐไบ่ฟไบๆฅๅฃใ่ฟไบๅฎ็ฐๆไพไบ่ตๆบ็ๅ ทไฝๅ่ฝ๏ผๅนถๅฐๅ ถไธKubernetes็ณป็ป็ๅ ถไป้จๅ้ๆๅจไธ่ตทใ
ไพๅฆ๏ผpkg/apis/apps/็ฎๅฝไธๅฎไนไบไธ็ปๆฅๅฃ๏ผ็จไบ่กจ็คบๅบ็จ็จๅบ่ตๆบใ staging/src/k8s.io/api/apps/็ฎๅฝไธ็ไปฃ็ ๅฎ็ฐไบ่ฟไบๆฅๅฃ๏ผๅนถๆไพไบๅบ็จ็จๅบ่ตๆบ็ๅ ทไฝๅ่ฝใ
ไธบไบ่ทๆธ ๆฅ็ไบ่งฃ๏ผๆๆชๅไบๅฎไปฌ็็ฎๅฝ็ปๆ๏ผ
ๆป็ป๏ผ
- pkg/apis/apps/็ฎๅฝๅstaging/src/k8s.io/api/apps/็ฎๅฝ้ฝๆฏKubernetesๆบ็ ็ไธ้จๅใๅฎไปฌ้ฝๆฏ็จไบ็ฎก็ๅบ็จ็จๅบ่ตๆบ็ไปฃ็ ใ
- pkg/apis/apps/็ฎๅฝไธญ็ไปฃ็ ๅฎไนไบๆฝ่ฑก็APIๆฅๅฃ๏ผ็จไบๆ่ฟฐๅบ็จ็จๅบ่ตๆบ็็ฑปๅใๅญๆฎตๅๆไฝใๅฎๅนถๆฒกๆๆไพ่ตๆบ็ๅ ทไฝๅ่ฝใ
- staging/src/k8s.io/api/apps/็ฎๅฝไธญ็ไปฃ็ ๅฎ็ฐไบpkg/apis/apps/็ฎๅฝไธญ็ๆฅๅฃใๅฎๆไพไบๅบ็จ็จๅบ่ตๆบ็ๅ ทไฝๅ่ฝ๏ผๅนถๅฐๅ ถไธKubernetes็ณป็ป็ๅ ถไป้จๅ้ๆๅจไธ่ตทใ
- ๆป็ๆฅ่ฏด๏ผpkg/apis/็ฎๅฝไธญ็ไปฃ็ ๆฏKubernetesไธญAPI่ตๆบ็ๆฝ่ฑกๆฅๅฃ๏ผ่staging/src/k8s.io/api/็ฎๅฝไธญ็ไปฃ็ ๅๆฏ่ฟไบๆฅๅฃ็ๅ ทไฝๅฎ็ฐใ
cmd ็ฎๆฏ ๅ ฅๅฃ๏ผไนๆฏๅฝไปค่ก็ๅฎไนๅฐๆนใ
root@cubmaster01:~/go/src/k8s.io/kubernetes# tree -L 1 cmd
cmd
โโโ clicheck
โโโ cloud-controller-manager
โโโ dependencycheck
โโโ dependencyverifier
โโโ gendocs
โโโ genkubedocs
โโโ genman
โโโ genswaggertypedocs
โโโ genutils
โโโ genyaml
โโโ importverifier
โโโ kubeadm
โโโ kube-apiserver
โโโ kube-controller-manager
โโโ kubectl
โโโ kubectl-convert
โโโ kubelet
โโโ kubemark
โโโ kube-proxy
โโโ kube-scheduler
โโโ linkcheck
โโโ OWNERS
โโโ preferredimports
โโโ prune-junit-xml
โโโ yamlfmt
::: tip
kube-apiserver
ไธญๆ apiserver.go
ๆไปถ๏ผๅฐฑๆฏ apiserver
ๅฏๅจๅ
ฅๅฃ
:::
cmd ๆๅพๅค็ๅญ็ฎๅฝ๏ผไธๅ็ๅญ็ฎๅฝ้ฝๅฏนๅบ็ๆฅๅฃ๏ผๆฏๅฆไธ้ข็ API Server
ๆไปฌ็่ณๅฏไปฅ็ดๆฅๅจ้้ข go build
๏ผ
โฏ cd cmd/kube-apiserver;ls
apiserver.go app OWNERS
โฏ go build apiserver.go
ไธ่ฟไธ่ฌไฝฟ็จ ๅ่ฝๅผบๅคง ็ Makefile ๏ผ่ไธMakefileๆฏๆไบคๅ็ผ่ฏใ
Kubernetes ๆฏๅพๅค็ปไปถ็ ไบ่ฟๅถ ็ธไบ้ ๅ ้จ็ฝฒ่ตทๆฅ็ใ
ไปฅ kube-apiserver cmd ็ฎๅฝไธบไพ๏ผ
๐ ๅฏนไธ้ข็่งฃ้๏ผ
options
๏ผ ไธ่ฌ้้ข็ options ๆฏ่งฃๆ ๅ ฅๅ๏ผๅนถไธ่ฟ่กๅ ฅๅๆ ก้ช- ้้ข็ๆ ธๅฟ้ฝๆฏ่ฐๅฐ
pkg/*
ไธ้ข็๏ผๆฏๅฆ่ฏด apiใapisๅฏน่ฑก
root@cubmaster01:~/go/src/k8s.io/kubernetes# tree -L 1 build
build
โโโ build-image
โโโ common.sh
โโโ copy-output.sh
โโโ dependencies.yaml
โโโ lib
โโโ make-build-image.sh
โโโ make-clean.sh
โโโ nsswitch.conf
โโโ OWNERS
โโโ package-tarballs.sh
โโโ pause
โโโ README.md
โโโ release-images.sh
โโโ release-in-a-container.sh
โโโ release.sh
โโโ root
โโโ run.sh
โโโ server-image
โโโ shell.sh
โโโ tools.go
โโโ util.sh
root@cubmaster01:~/go/src/k8s.io/kubernetes# tree -L 1 vendor/
vendor/
โโโ bitbucket.org
โโโ cloud.google.com
โโโ github.com
โโโ go.etcd.io
โโโ golang.org
โโโ gonum.org
โโโ google.golang.org
โโโ go.opencensus.io
โโโ go.opentelemetry.io
โโโ gopkg.in
โโโ go.starlark.net
โโโ go.uber.org
โโโ k8s.io
โโโ modules.txt
โโโ OWNERS
โโโ sigs.k8s.io
root@cubmaster01:~/go/src/k8s.io/kubernetes# tree -L 1 hack/
hack/
โโโ benchmark-go.sh
โโโ boilerplate
โโโ build-cross.sh
โโโ build-go.sh
โโโ cherry_pick_pull.sh
โโโ conformance
โโโ dev-build-and-push.sh
โโโ dev-build-and-up.sh
โโโ dev-push-conformance.sh
โโโ e2e-internal
โโโ e2e-node-test.sh
โโโ generate-docs.sh
โโโ gen-swagger-doc
โโโ get-build.sh
โโโ ginkgo-e2e.sh
โโโ grab-profiles.sh
โโโ install-etcd.sh
โโโ jenkins
โโโ lib
โโโ lint-dependencies.sh
โโโ list-feature-tests.sh
โโโ local-up-cluster.sh
โโโ logcheck.conf
โโโ make-rules
โโโ module-graph.sh
โโโ OWNERS
โโโ pin-dependency.sh
โโโ print-workspace-status.sh
โโโ README.md
โโโ run-in-gopath.sh
โโโ run-prometheus-on-etcd-scrapes.sh
โโโ serve-prom-scrapes.sh
โโโ testdata
โโโ test-go.sh
โโโ test-integration.sh
โโโ tools
โโโ unwanted-dependencies.json
โโโ update-all.sh
โโโ update-codegen.sh
โโโ update-conformance-yaml.sh
โโโ update-generated-api-compatibility-data.sh
โโโ update-generated-device-plugin-dockerized.sh
โโโ update-generated-device-plugin.sh
โโโ update-generated-docs.sh
โโโ update-generated-kms-dockerized.sh
โโโ update-generated-kms.sh
โโโ update-generated-kubelet-plugin-registration-dockerized.sh
โโโ update-generated-kubelet-plugin-registration.sh
โโโ update-generated-pod-resources-dockerized.sh
โโโ update-generated-pod-resources.sh
โโโ update-generated-protobuf-dockerized.sh
โโโ update-generated-protobuf.sh
โโโ update-generated-runtime-dockerized.sh
โโโ update-generated-runtime.sh
โโโ update-generated-stable-metrics.sh
โโโ update-generated-swagger-docs.sh
โโโ update-gofmt.sh
โโโ update-import-aliases.sh
โโโ update-internal-modules.sh
โโโ update-kustomize.sh
โโโ update-mocks.sh
โโโ update-netparse-cve.sh
โโโ update-openapi-spec.sh
โโโ update-translations.sh
โโโ update-vendor-licenses.sh
โโโ update-vendor.sh
โโโ update-yamlfmt.sh
โโโ verify-all.sh
โโโ verify-api-groups.sh
โโโ verify-boilerplate.sh
โโโ verify-cli-conventions.sh
โโโ verify-codegen.sh
โโโ verify-conformance-requirements.sh
โโโ verify-conformance-yaml.sh
โโโ verify-description.sh
โโโ verify-e2e-test-ownership.sh
โโโ verify-external-dependencies-version.sh
โโโ verify-flags
โโโ verify-flags-underscore.py
โโโ verify-generated-device-plugin.sh
โโโ verify-generated-docs.sh
โโโ verify-generated-files-remake.sh
โโโ verify-generated-files.sh
โโโ verify-generated-kms.sh
โโโ verify-generated-kubelet-plugin-registration.sh
โโโ verify-generated-pod-resources.sh
โโโ verify-generated-protobuf.sh
โโโ verify-generated-runtime.sh
โโโ verify-generated-stable-metrics.sh
โโโ verify-generated-swagger-docs.sh
โโโ verify-gofmt.sh
โโโ verify-golangci-lint.sh
โโโ verify-govet-levee.sh
โโโ verify-govet.sh
โโโ verify-import-aliases.sh
โโโ verify-import-boss.sh
โโโ verify-imports.sh
โโโ verify-internal-modules.sh
โโโ verify-linkcheck.sh
โโโ verify-mocks.sh
โโโ verify-netparse-cve.sh
โโโ verify-non-mutating-validation.sh
โโโ verify-no-vendor-cycles.sh
โโโ verify-openapi-spec.sh
โโโ verify-pkg-names.sh
โโโ verify-prerelease-lifecycle-tags.sh
โโโ verify-prometheus-imports.sh
โโโ verify-publishing-bot.py
โโโ verify-readonly-packages.sh
โโโ verify-shellcheck.sh
โโโ verify-spelling.sh
โโโ verify-staging-meta-files.sh
โโโ verify-test-code.sh
โโโ verify-test-featuregates.sh
โโโ verify-test-images.sh
โโโ verify-typecheck-providerless.sh
โโโ verify-typecheck.sh
โโโ verify-vendor-licenses.sh
โโโ verify-vendor.sh
โโโ verify-yamlfmt.sh
plugin
็ฎๅฝไนๅ็็ๆฌๅ
ๆฌ scheduler
้จๅ็ไปฃ็ ๏ผๅฝๅ็ๆฌ๏ผๅบ่ฏฅๆฏๅจ1.10ไนๅ๏ผๅทฒ็ปๅฐscheduler้จๅไปฃ็ ็งปๅฐๅๅ
ถไป็ปไปถไธ่ด็pkg็ฎๅฝ๏ผๆไปฅ็ฎๅ plugin
ไธป่ฆๅ
ๅซ็ๆฏ่ฎค่ฏ
ไธ้ดๆ
้จๅ็ไปฃ็ ใ
root@cubmaster01:~/go/src/k8s.io/kubernetes# tree plugin/ -L 4
plugin/
โโโ OWNERS
โโโ pkg
โโโ admission
โ โโโ admit
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โโโ alwayspullimages
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โโโ antiaffinity
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โ โโโ doc.go
โ โโโ certificates
โ โ โโโ approval
โ โ โโโ OWNERS
โ โ โโโ signing
โ โ โโโ subjectrestriction
โ โ โโโ util.go
โ โโโ defaulttolerationseconds
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โโโ deny
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โโโ eventratelimit
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โ โโโ apis
โ โ โโโ cache.go
โ โ โโโ cache_test.go
โ โ โโโ config.go
โ โ โโโ doc.go
โ โ โโโ limitenforcer.go
โ โโโ extendedresourcetoleration
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โโโ gc
โ โ โโโ gc_admission.go
โ โ โโโ gc_admission_test.go
โ โโโ imagepolicy
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โ โโโ certs_test.go
โ โ โโโ config.go
โ โ โโโ config_test.go
โ โ โโโ doc.go
โ โ โโโ gencerts.sh
โ โ โโโ OWNERS
โ โโโ limitranger
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โ โโโ interfaces.go
โ โโโ namespace
โ โ โโโ autoprovision
โ โ โโโ exists
โ โโโ network
โ โ โโโ defaultingressclass
โ โ โโโ denyserviceexternalips
โ โโโ noderestriction
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โ โโโ OWNERS
โ โโโ nodetaint
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โโโ OWNERS
โ โโโ podnodeselector
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โโโ podtolerationrestriction
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โ โโโ apis
โ โ โโโ config.go
โ โ โโโ doc.go
โ โโโ priority
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โโโ resourcequota
โ โ โโโ admission_test.go
โ โโโ runtimeclass
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โ โโโ OWNERS
โ โโโ security
โ โ โโโ doc.go
โ โ โโโ podsecurity
โ โ โโโ podsecuritypolicy
โ โโโ securitycontext
โ โ โโโ scdeny
โ โโโ serviceaccount
โ โ โโโ admission.go
โ โ โโโ admission_test.go
โ โ โโโ doc.go
โ โ โโโ OWNERS
โ โโโ storage
โ โโโ persistentvolume
โ โโโ storageclass
โ โโโ storageobjectinuseprotection
โโโ auth
โโโ authenticator
โ โโโ OWNERS
โ โโโ token
โโโ authorizer
โ โโโ doc.go
โ โโโ node
โ โโโ OWNERS
โ โโโ rbac
โโโ doc.go
โโโ OWNERS
e2e ๆต่ฏไปฃ็
Kubernetes ๆฏไธไธชๅนฟๆณไฝฟ็จ็ๅฎนๅจ็ผๆๅนณๅฐ๏ผไธ้ขๆฏ Kubernetes ็็ฎๅฝๅๆไปถ๏ผๅ ๆฌไบๅนณๅฐ็ๆ ธๅฟ็ปไปถๅ่ฏไนฆ็ญ็ธๅ ณๆไปถใ
โโโ audit-policy.yml
โโโ controller-manager.conf
โโโ kubeadm.yaml
โโโ kubelet.conf
โโโ manifests
โ โโโ etcd.yaml
โ โโโ kube-apiserver.yaml
โ โโโ kube-controller-manager.yaml
โ โโโ kube-scheduler.yaml
โโโ pki
โ โโโ apiserver.crt
โ โโโ apiserver-etcd-client.crt
โ โโโ apiserver-etcd-client.key
โ โโโ apiserver.key
โ โโโ apiserver-kubelet-client.crt
โ โโโ apiserver-kubelet-client.key
โ โโโ ca.crt
โ โโโ ca.key
โ โโโ etcd
โ โ โโโ ca.crt
โ โ โโโ ca.key
โ โ โโโ healthcheck-client.crt
โ โ โโโ healthcheck-client.key
โ โ โโโ peer.crt
โ โ โโโ peer.key
โ โ โโโ server.crt
โ โ โโโ server.key
โ โโโ front-proxy-ca.crt
โ โโโ front-proxy-ca.key
โ โโโ front-proxy-client.crt
โ โโโ front-proxy-client.key
โ โโโ sa.key
โ โโโ sa.pub
โโโ scheduler.conf
audit-policy.yml
ๆฏ Kubernetes ็ๅฎกๆ ธ็ญ็ฅๆไปถ๏ผๅฎ่งๅฎไบๅชไบไบไปถ้่ฆ่ขซ่ฎฐๅฝ๏ผไปฅๅ่ฎฐๅฝ็ๅ
ๅฎนใ
controller-manager.conf
ๆฏ Kubernetes ็ๆงๅถๅจ็ฎก็ๅจ็้
็ฝฎๆไปถใ
kubeadm.yaml
ๆฏ Kubernetes ็ๅๅงๅ้
็ฝฎๆไปถ๏ผๅ
ๅซไบๅๅงๅ้็พคๆ้่ฆ็ไฟกๆฏใ
kubelet.conf
ๆฏ Kubernetes ็ kubelet ็ปไปถ็้
็ฝฎๆไปถใ
manifests
็ฎๅฝๅ
ๅซ Kubernetes ็ๆ ธๅฟ็ปไปถ็้
็ฝฎๆไปถ๏ผๅฎไปฌๆฏ๏ผ
etcd.yaml
: etcd ๆฏ Kubernetes ้็พค็ๆฐๆฎๅบ๏ผๅญๅจไบ้็พค็็ถๆไฟกๆฏใkube-apiserver.yaml
: kube-apiserver ๆฏ Kubernetes ็ API ๆๅกๅจ๏ผ่ด่ดฃๅค็ API ่ฏทๆฑใkube-controller-manager.yaml
: kube-controller-manager ๆฏ Kubernetes ็ๆงๅถๅจ็ฎก็ๅจ๏ผ่ด่ดฃ็ฎก็้็พค็ๅ็งๆงๅถๅจใkube-scheduler.yaml
: kube-scheduler ๆฏ Kubernetes ็่ฐๅบฆๅจ๏ผ่ด่ดฃๅฐ Pod ๅ้ ๅฐๅ้็่็นไธ่ฟ่กใ
pki
็ฎๅฝๅ
ๅซ Kubernetes ็่ฏไนฆๅๅฏ้ฅๆไปถ๏ผๅฎไปฌๆฏ๏ผ
apiserver.crt
: kube-apiserver ็่ฏไนฆใapiserver-etcd-client.crt
ๅapiserver-etcd-client.key
: kube-apiserver ๅ etcd ไน้ด้ไฟก็่ฏไนฆๅๅฏ้ฅใapiserver.key
: kube-apiserver ็็ง้ฅใapiserver-kubelet-client.crt
ๅapiserver-kubelet-client.key
: kube-apiserver ๅ kubelet ไน้ด้ไฟก็่ฏไนฆๅๅฏ้ฅใca.crt
ๅca.key
: Kubernetes ็ๆ น่ฏไนฆๅๅฏ้ฅใetcd
็ฎๅฝ๏ผetcd ็่ฏไนฆๅๅฏ้ฅๆไปถใfront-proxy-ca.crt
ๅfront-proxy-ca.key
: ๅ็ฝฎไปฃ็็่ฏไนฆๅๅฏ้ฅใfront-proxy-client.crt
ๅfront-proxy-client.key
: ๅ็ฝฎไปฃ็ๅ kube-apiserver ไน้ด้ไฟก็่ฏไนฆๅๅฏ้ฅใsa.key
ๅsa.pub
: Kubernetes ็ Service Account ็่ฏไนฆๅๅฏ้ฅใ
scheduler.conf
ๆฏ Kubernetes ็่ฐๅบฆๅจ็้
็ฝฎๆไปถใ
่ฟ้ๅฏไปฅๅจ ่กฅๅ ้จๅ sealer ็ๅฎ็ฐๅฎ็ฐ๏ผ
::: details ๅฑๅผๅฆไธ๏ผ SaveAllๅฝๆฐ็จไบๅฐๆๆ้ ็ฝฎไฟกๆฏไฟๅญๅฐๆไปถไธญใ
func (c *ClusterFile) SaveAll(opts SaveOptions) error {
var (
clusterfileBytes [][]byte
config []byte
plugin []byte
)
fileName := common.GetDefaultClusterfile()
err := os.MkdirAll(filepath.Dir(fileName), os.ModePerm)
if err != nil {
return fmt.Errorf("failed to mkdir %s: %v", fileName, err)
}
cluster, err := yaml.Marshal(c.cluster)
if err != nil {
return err
}
clusterfileBytes = append(clusterfileBytes, cluster)
if len(c.configs) != 0 {
for _, cg := range c.configs {
config, err = yaml.Marshal(cg)
if err != nil {
return err
}
clusterfileBytes = append(clusterfileBytes, config)
}
}
if len(c.plugins) != 0 {
for _, p := range c.plugins {
plugin, err = yaml.Marshal(p)
if err != nil {
return err
}
clusterfileBytes = append(clusterfileBytes, plugin)
}
}
if len(c.kubeadmConfig.InitConfiguration.TypeMeta.Kind) != 0 {
initConfiguration, err := yaml.Marshal(c.kubeadmConfig.InitConfiguration)
if err != nil {
return err
}
clusterfileBytes = append(clusterfileBytes, initConfiguration)
}
if len(c.kubeadmConfig.JoinConfiguration.TypeMeta.Kind) != 0 {
joinConfiguration, err := yaml.Marshal(c.kubeadmConfig.JoinConfiguration)
if err != nil {
return err
}
clusterfileBytes = append(clusterfileBytes, joinConfiguration)
}
if len(c.kubeadmConfig.ClusterConfiguration.TypeMeta.Kind) != 0 {
clusterConfiguration, err := yaml.Marshal(c.kubeadmConfig.ClusterConfiguration)
if err != nil {
return err
}
clusterfileBytes = append(clusterfileBytes, clusterConfiguration)
}
if len(c.kubeadmConfig.KubeletConfiguration.TypeMeta.Kind) != 0 {
kubeletConfiguration, err := yaml.Marshal(c.kubeadmConfig.KubeletConfiguration)
if err != nil {
return err
}
clusterfileBytes = append(clusterfileBytes, kubeletConfiguration)
}
if len(c.kubeadmConfig.KubeProxyConfiguration.TypeMeta.Kind) != 0 {
kubeProxyConfiguration, err := yaml.Marshal(c.kubeadmConfig.KubeProxyConfiguration)
if err != nil {
return err
}
clusterfileBytes = append(clusterfileBytes, kubeProxyConfiguration)
}
content := bytes.Join(clusterfileBytes, []byte("---\n"))
err = utilsos.NewCommonWriter(fileName).WriteFile(content)
if err != nil {
return fmt.Errorf("failed to save clusterfile to disk:%v", err)
}
if opts.CommitToCluster {
return saveToCluster(content, opts.ConfPath)
}
return nil
}
ๆๆๆ็ๆฏ๏ผ้จๅ็ Kubernetes ็ไฟๅญไธญ๏ผconfig ๅ plug ๆฏไปฅไธ็ปดๅ็็ๅฝขๅผๅญๅจ็๏ผ่clusterfileBytes ็จๆฅๆถ้ ๆๆ็ ๅ ๅฎน๏ผไฝฟ็จ็ๆฏไบ็ปดๆฐ็ป็ๆนๅผๅญๅจ็๏ผKubeadmConfig ๆฏ้ไพฟๅญๅจ็ใ่ทๅๅฐ config ๅ plug ไนๅชๆฏ ๅคๆญๆฏๅฆไธบ 0
:::
-
โด๏ธ็ๆๅฃฐๆ ยฉ ๏ผๆฌไนฆๆๆๅ ๅฎน้ตๅพชCC-BY-SA 3.0ๅ่ฎฎ๏ผ็ฝฒๅ-็ธๅๆนๅผๅ ฑไบซ๏ผยฉ