
ä»å€ Kubernetes ã®æ¬¡ã®ãªãªãŒã¹ - ã ç§ãã¡ã®ããã°ã§å¹ãããŠããäŒçµ±ã«åŸã£ãŠããã®çŽ æŽããããªãŒãã³ãœãŒã¹è£œåã®æ°ããŒãžã§ã³ã«ãããéèŠãªå€æŽç¹ã«ã€ããŠè©±ããŸãã
ãã®è³æã®äœæã«äœ¿çšãããæ å ±ã¯ã以äžããååŸãããŠããŸãã , ããã³é¢é£ããåé¡ããã« ãªã¯ãšã¹ããKubernetes Enhancement Proposals (KEP)ã
SIG ã¯ã©ã¹ã¿ãŒã®ã©ã€ããµã€ã¯ã«ããã®éèŠãªç޹ä»ããå§ããŸãããã åçãã§ã€ã«ãªãŒããŒã¯ã©ã¹ã¿ãŒ Kubernetes (ããæ£ç¢ºã«èšãã°ãã»ã«ããã¹ãå HA ãããã€ã¡ã³ã) ã¯çŸåšã (åäžããŒãã¯ã©ã¹ã¿ãŒã®ã³ã³ããã¹ãã§) 䜿ãæ
£ããã³ãã³ãã䜿çšãã kubeadm (init О joinïŒã ã€ãŸããããã«ã€ããŠã¯æ¬¡ã®ããã«ãªããŸãã
- ã¯ã©ã¹ã¿ãŒã«ãã£ãŠäœ¿çšãããèšŒææžã¯ã·ãŒã¯ã¬ããã«è»¢éãããŸãã
- K8s ã¯ã©ã¹ã¿ãŒå ã§ etcd ã¯ã©ã¹ã¿ãŒã䜿çšã§ããããã«ãã (ã€ãŸãã以åã«ååšããŠããå€éšäŸåé¢ä¿ãåãé€ã) ;
- ãã©ãŒã«ã ãã¬ã©ã³ãæ§æãæäŸããå€éšããŒã ãã©ã³ãµãŒã®æšå¥šèšå®ãææžåããŸã (å°æ¥çã«ã¯ãã®äŸåé¢ä¿ãæé€ããäºå®ã§ãããçŸæ®µéã§ã¯ããã§ã¯ãããŸãã)ã

kubeadm ã§äœæããã Kubernetes HA ã¯ã©ã¹ã¿ãŒã®ã¢ãŒããã¯ãã£
å®è£ ã®è©³çްã«ã€ããŠã¯ã以äžãåç §ããŠãã ããã ã ãã®æ©èœã¯æ¬åœã«åŸ æãããŠããŸãããã¢ã«ãã¡ç㯠K8s 1.9 ã®æç¹ã§æåŸ ãããŠããŸããããä»ã«ãªã£ãŠããããç»å ŽããŸããã
API
ããŒã apply äžè¬ç㫠宣èšåãªããžã§ã¯ã管ç ã® kubectl ã¢ããµãŒããŒã§ã éçºè
èªèº«ãèªåãã¡ã®æ±ºå®ã次ã®ããã«ç°¡åã«èª¬æããŠããŸãã kubectl apply - ãã㯠Kubernetes ã§æ§æãæäœããåºæ¬çãªéšåã§ãããããã°ãå€ãä¿®æ£ãé£ãããããããã®æ©èœãéåžžã®ç¶æ
ã«æ»ããŠã³ã³ãããŒã« ãã¬ãŒã³ã«è»¢éããå¿
èŠããããŸãã çŸåšååšããåé¡ã®åçŽãã€æç¢ºãªäŸ:

å®è£
ã®è©³çްã«ã€ããŠã¯ã ã çŸåšã®æºåã¯ã¢ã«ãã¡çã§ã (ããŒã¿çãžã®ææ Œã¯æ¬¡ã® Kubernetes ãªãªãŒã¹ã§äºå®ãããŠããŸã)ã
ã¢ã«ãã¡çã§å©çšå¯èœã«ãªããŸãã OpenAPI v3 ã¹ããŒã ã䜿çšããŠã CustomResources ã® OpenAPI ããã¥ã¡ã³ãã®äœæãšå
¬é (CR) K8s ãŠãŒã¶ãŒå®çŸ©ãªãœãŒã¹ (CustomResourceDefinitionãCRD) ã (ãµãŒããŒåŽã§) æ€èšŒããããã«äœ¿çšãããŸãã CRD çšã® OpenAPI ãå
¬éãããšãã¯ã©ã€ã¢ã³ã (äŸ: kubectlïŒããªãã®åŽã§æ€èšŒãå®è¡ããŸãïŒå
ã§ïŒ kubectl create О kubectl apply) ã¹ããŒã ã«åŸã£ãŠææžãçºè¡ããŸã (kubectl explainïŒã 詳现 - ã§ .
æ¢åã®ãã° æä»ã O_APPEND ïŒã§ã¯ãªã O_TRUNC) ç¶æ³ã«ãã£ãŠã¯ãã°ã®æå€±ãåé¿ããããŒããŒã·ã§ã³ã®ããã«å€éšãŠãŒãã£ãªãã£ã䜿çšããŠãã°ãåãè©°ããéã«äŸ¿å©ã§ãã
ãŸããKubernetes API ã®ã³ã³ããã¹ãã§ã¯ã次ã®ããšã«æ³šæããŠãã ããã PodSandbox О PodSandboxStatus ãã£ãŒã«ã runtime_handler ïœã«é¢ããæ
å ±ãèšé²ãã RuntimeClass ãããå
(詳现ã«ã€ããŠã¯æ¬æãåç
§ããŠãã ãã) ããã®ã¯ã©ã¹ã¯ã¢ã«ãã¡çãšããŠç»å ŽããŸãã)ãããã³ã¢ãããã·ã§ã³ Webhook ã§ ã©ã®ããŒãžã§ã³ã決å®ããæ©èœ AdmissionReview 圌ãã¯ãµããŒãããŸãã æåŸã«ãã¢ãããã·ã§ã³ Webhook ã«ãŒã«ã远å ãããŸããã åå空éãšã¯ã©ã¹ã¿ãŒ ãã¬ãŒã ã¯ãŒã¯ã«ãã䜿çšã®ç¯å²ã
ä¿ç®¡
ããªãªãŒã¹ä»¥æ¥ããŒã¿çã®ç¶æ ã§ãã , å®å®ç (GA): ãã®æ©èœã²ãŒãã¯ç¡å¹ã§ã¯ãªããªããKubernetes 1.17 ã§åé€ãããäºå®ã§ãã
ãšããç°å¢å€æ°ã䜿çšããŸã (ãããåãªã©) ãšããŠããŠã³ãããããã£ã¬ã¯ããªã®åå ãæ°ããåéã®åœ¢ã§éçºãããŸãã subPathExprãããã¯ç®çã®ãã£ã¬ã¯ããªåãæ±ºå®ããããã«äœ¿çšãããããã«ãªããŸããã ãã®æ©èœã¯æåã« Kubernetes 1.11 ã§ç»å ŽããŸãããã1.14 ã§ã¯ã¢ã«ãã¡çã®ãŸãŸã§ããã
以åã® Kubernetes ãªãªãŒã¹ãšåæ§ã«ãçŸåšéçºäžã® CSI (Container Storage Interface) ã«å¯ŸããŠå€ãã®éèŠãªå€æŽãå°å ¥ãããŠããŸãã
CSI
å©çšå¯èœã«ãªããŸããïŒã¢ã«ãã¡çã®äžéšãšããŠïŒ CSI ããªã¥ãŒã ã®ãµã€ãºå€æŽã ããã䜿çšããã«ã¯ããšåŒã°ããæ©èœã²ãŒããæå¹ã«ããå¿
èŠããããŸãã ExpandCSIVolumesãããã³ç¹å®ã® CSI ãã©ã€ããŒã§ã®ãã®æäœã®ãµããŒãã®ååšã
ã¢ã«ãã¡çã® CSI ã®ãã XNUMX ã€ã®æ©èœ - ããã仿§å
ã® CSI ããªã¥ãŒã ãçŽæ¥ (ã€ãŸããPV/PVC ã䜿çšããã«) åç
§ããŸãã ãã æä»çãªãªã¢ãŒã ããŒã¿ ã¹ãã¬ãŒãžãšããŠã® CSI ã®äœ¿çšã«é¢ããå¶éãåé€ããŸããã圌ãã«äžçãžã®æãéã ã 䜿çšããå ŽåïŒ) ãæå¹ã«ããå¿
èŠããããŸã CSIInlineVolume ç¹åŸŽçãªã²ãŒãã
CSI ã«é¢é£ãã Kubernetes ã®ãå éšãã§ã鲿©ããããŸãããããšã³ã ãŠãŒã¶ãŒ (ã·ã¹ãã 管çè ) ã«ã¯ããŸãèŠããŸãã... çŸåšãéçºè ã¯åã¹ãã¬ãŒãž ãã©ã°ã€ã³ã® 8 ã€ã®ããŒãžã§ã³ããµããŒãããå¿ èŠããããŸããå€ãæ¹æ³ããKXNUMXs ã³ãŒãããŒã¹å (ããªãŒå )ãããã³ XNUMX çªç® - æ°ãã CSI ã®äžéšãšã㊠(詳现ã«ã€ããŠã¯ãããšãã°ã )ã ããã«ãããåœç¶ã®äžéœåãçããŸãããCSI èªäœãå®å®ããã«ã€ããŠå¯ŸåŠããå¿ èŠããããŸãã å éš (ããªãŒå ) ãã©ã°ã€ã³ã® API ãåçŽã«éæšå¥šã«ããããšã¯ã§ããŸããã .
ããããã¹ãŠããã¢ã«ãã¡çãå°éãããšããäºå®ã«ã€ãªãããŸããã å éšãã©ã°ã€ã³ã³ãŒããCSI ãã©ã°ã€ã³ã®ããªãŒå ãšããŠå®è£ ãããŸããããã«ãããéçºè ã®å¿é ã¯ãã©ã°ã€ã³ã® 1.15 ã€ã®ããŒãžã§ã³ããµããŒãããããšã§è»œæžãããå€ã API ãšã®äºææ§ã¯ç¶æãããéåžžã®ã·ããªãªã§ã¯å€ã API ã§ãããšå®£èšã§ããŸãã Kubernetes ã®æ¬¡ã®ãªãªãŒã¹ (8) ãŸã§ã«ããã¹ãŠã®ã¯ã©ãŠã ãããã€ã㌠ãã©ã°ã€ã³ãç§»è¡ãããå®è£ ã¯ããŒã¿ ã¹ããŒã¿ã¹ãååŸããKXNUMXs ã€ã³ã¹ããŒã«ã§ããã©ã«ãã§ã¢ã¯ãã£ãåãããããšãäºæ³ãããŸãã 詳现ã«ã€ããŠã¯ããåç §ããŠãã ããã ã ãã®ç§»è¡ã«ãããæ¬¡ã®ãããªçµæãåŸãããŸããã ç¹å®ã®ã¯ã©ãŠããããã€ã㌠(AWSãAzureãGCEãCinder) ã«ãã£ãŠå®çŸ©ãããããªã¥ãŒã å¶éããã
ããã«ãCSI ã«ããããã㯠ããã€ã¹ã®ãµããŒã (CSIBlockVolume) ããŒã¿çãžã
ããŒã/Kubelet
ã¢ã«ãã¡çãçºè¡šãããŸãã Kubelet ã§ãã®ããã«èšèšãããŠããŸã äž»èŠãªãªãœãŒã¹ã®ã¡ããªã¯ã¹ãè¿ãã äžè¬çã«èšãã°ã以å Kubelet ã cAdvisor ããã³ã³ããã®äœ¿çšç¶æ³ã«é¢ããçµ±èšãåãåã£ãŠããå ŽåãçŸåšã§ã¯ãã®ããŒã¿ã¯ CRI (Container Runtime Interface) ãä»ããŠã³ã³ãã ã©ã³ã¿ã€ã ç°å¢ããååŸãããŸãããå€ãããŒãžã§ã³ã® Docker ãšé£æºããããã®äºææ§ãç¶æãããŸãã 以åã¯ãKubelet ã§åéãããçµ±èšã¯ REST API çµç±ã§éä¿¡ãããŠããŸããããçŸåšã¯ãšã³ããã€ã³ããæ¬¡ã®å Žæã«ãããŸãã /metrics/resource/v1alpha1ã éçºè
ã®é·ææŠç¥ Kubelet ã«ãã£ãŠæäŸãããã¡ããªã¯ã¹ã®ã»ãããæå°éã«æããããšã§ãã ã¡ãªã¿ã«ããããã®ææšèªäœã¯ ãã³ã¢ã¡ããªã¯ã¹ãã§ã¯ãªãããªãœãŒã¹ã¡ããªã¯ã¹ãã§ããããCPUãã¡ã¢ãªãªã©ã®ç¬¬äžçŽã®ãªãœãŒã¹ããšããŠèª¬æãããŸãã
éåžžã«è峿·±ããã¥ã¢ã³ã¹: Prometheus 圢åŒã䜿çšããããŸããŸãªã±ãŒã¹ãšæ¯èŒããŠãgRPC ãšã³ããã€ã³ãã®ããã©ãŒãã³ã¹äžã®æãããªå©ç¹ã«ãããããã (以äžã®ããããã®ãã³ãããŒã¯ã®çµæãåç §ããŠãã ãã)ãã³ãã¥ããã£ã«ããããã®ç£èŠã·ã¹ãã ã®æç¢ºãªãªãŒããŒã·ããã«ãããèè ã㯠Prometheus ã®ããã¹ã圢åŒã奜ã¿ãŸããã
ãgRPC ã¯äž»èŠãªç£èŠãã€ãã©ã€ã³ãšäºææ§ããããŸããã ãšã³ããã€ã³ãã¯ãã¡ããªã¯ã¹ã Metrics Server ã«é ä¿¡ããå ŽåããŸã㯠Metrics Server ãšçŽæ¥çµ±åããã³ã³ããŒãã³ããç£èŠããå Žåã«ã®ã¿åœ¹ç«ã¡ãŸãã Metrics Server ã§ãã£ãã·ã¥ã䜿çšããå Žåã® Prometheus ããã¹ã圢åŒã®ããã©ãŒãã³ã¹ ååã§ã ã³ãã¥ããã£ã§ Prometheus ãåºãæ¡çšãããŠãããããç§ãã¡ã¯ gRPC ããã Prometheus ãåªå ããŸãã OpenMetrics 圢åŒãããå®å®ãããšããããããŒã¹ã®åœ¢åŒã§ gRPC ã®ããã©ãŒãã³ã¹ã«ã¢ãããŒãã§ããããã«ãªããŸããã

ã¡ããªã¯ã¹çšã®æ°ãã Kubelet ãšã³ããã€ã³ãã§ gRPC ãš Prometheus 圢åŒã䜿çšããå Žåã®æ¯èŒããã©ãŒãã³ã¹ ãã¹ãã® XNUMX ã€ã ãã®ä»ã®ã°ã©ãããã®ä»ã®è©³çްã«ã€ããŠã¯ã次ã®ãµã€ããåç
§ããŠãã ããã .
ãã®ä»ã®å€æŽç¹ã¯æ¬¡ã®ãšããã§ãã
- Kubelet ã®çŸåš (XNUMX å) åèµ·åããã³å逿äœã®åã«ãã³ã³ãããŒã¯äžæãªç¶æ ã«ãããŸãã
- 䜿çšããŠããå Žå ä»åºŠã¯åæåã³ã³ããã«ç§»åããŸã éåžžã®ã³ã³ãããšåãæ å ±ã§ãã
- ã¯ãã¬ãã
usageNanoCoresCRIçµ±èšãããã€ããŒãããããŒããšã³ã³ããã«ã€ããŠã¯ Windows ãããã¯ãŒã¯çµ±èšã - ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ãšã¢ãŒããã¯ãã£ã®æ
å ±ãã©ãã«ã«èšé²ãããããã«ãªããŸãã
kubernetes.io/osОkubernetes.io/archããŒã ãªããžã§ã¯ã (ããŒã¿çãã GA ã«è»¢é)ã - ãããå
ã®ã³ã³ãããŒã«ç¹å®ã®ã·ã¹ãã ãŠãŒã¶ãŒ ã°ã«ãŒããæå®ããæ©èœ (
RunAsGroupã ã«ç»å Ž ) ããŒã¿çã®å (ããã©ã«ãã§æå¹)ã - cAdvisor ã§äœ¿çšããã du ãš findã Go ã®å®è£ ã
CLI
cli-runtime ãš kubectl ã®å Žå ãšã®çµ±åã®ããã® -k ãã©ã° (ã¡ãªã¿ã«ããã®éçºã¯çŸåšå¥ã®ãªããžããªã§å®è¡ãããŠããŸã)ãã€ãŸãç¹å¥ãª kustomization ãã£ã¬ã¯ããªãã远å ã® YAML ãã¡ã€ã«ãåŠçããŸã (äœ¿çšæ¹æ³ã®è©³çްã«ã€ããŠã¯ãã ):

ç°¡åãªãã¡ã€ã«ã®äœ¿çšäŸ (kusTOMize ã®ããè€éãªã¢ããªã±ãŒã·ã§ã³ã¯ã )
ããã«ïŒ
- æ°ããããŒã
kubectl create cronjobããã®ååèªäœãç©èªã£ãŠããŸãã - Ð
kubectl logsä»ã§ãã ãã©ã°-f(--followã¹ããªãŒãã³ã° ãã°ã®å ŽåïŒããã³-l(--selectorã©ãã«ã¯ãšãªã®å Žå)ã - ãã¥ãŒãã¯ã« ã¯ã€ã«ãã«ãŒãã§éžæãããã¡ã€ã«ãã³ããŒããŸãã
- ããŒã ã«
kubectl waitãã©ã°--allæå®ãããªãœãŒã¹ ã¿ã€ãã®åå空éå ã®ãã¹ãŠã®ãªãœãŒã¹ãéžæããŸãã
ä»äºº
æ¬¡ã®æ©èœã¯å®å®ç (GA) ã¹ããŒã¿ã¹ãååŸããŠããŸãã
- ããããã®æºåç¶æ ã§èæ ®ããã远å ã®æ¡ä»¶ãå®çŸ©ããããã«ããã仿§ã§äœ¿çšãããŸãã
- 倧ããªããŒãžã®ãµããŒã (æ©èœã²ãŒããšåŒã°ãã) );
- ;
- PriorityClass API .
Kubernetes 1.14 ã§å°å ¥ããããã®ä»ã®å€æŽ:
- ããã©ã«ãã® RBAC ããªã·ãŒã§ã¯ API ã¢ã¯ã»ã¹ãèš±å¯ãããªããªããŸãã
discoveryОaccess-reviewèªèšŒã®ãªããŠãŒã¶ãŒ (æªèªèšŒ). - å ¬åŒ CoreDNS ãµããŒã ããã ãã« Linuxãã®ãããkubeadm ã䜿çšã㊠(CoreDNS) ãã¯ã©ã¹ã¿ãŒã«ãããã€ããå ŽåãããŒã㯠Linux ïŒãã®å¶éã«ã¯ããŒãã»ã¬ã¯ã¿ãŒã䜿çšãããŸããïŒ
- ããã©ã«ãã® CoreDNS æ§æã¯æ¬¡ã®ãšããã§ã ãããã·ã®ä»£ããã«ã ãŸããCoreDNSã§ã¯ readinessProbeãé©å㪠(ãµãŒãã¹ã®æºåãã§ããŠããªã) ãããã§ã®ããŒã ãã©ã³ã·ã³ã°ãé²ããŸãã
- kubeadm ã§ã¯ããã§ãŒãºã«ã€ããŠ
initãŸãã¯upload-certs, æ°ããã³ã³ãããŒã«ãã¬ãŒã³ã kubeadm-certs ã·ãŒã¯ã¬ããã«æ¥ç¶ããããã«å¿ èŠãªèšŒææžãããŒãããŸã (ãã©ã°ã䜿çšããŸã)--experimental-upload-certs). - ã®ããã« Windows-ã€ã³ã¹ããŒã«çšã®ã¢ã«ãã¡çãç»å ŽããŸããã gMSA (ã°ã«ãŒã管çãµãŒãã¹ ã¢ã«ãŠã³ã) - ã³ã³ãããŒã§ã䜿çšã§ãã Active Directory ã®ç¹å¥ãªã¢ã«ãŠã³ãã
- G.C.Eã®å Žå etcd ãš kube-apiserver éã® mTLS æå·åã
- 䜿çš/äŸåãœãããŠã§ã¢ã®æŽæ°: Go 1.12.1ãCSI 1.1ãCoreDNS 1.3.1ãkubeadm ã§ã® Docker 18.09 ã®ãµããŒãããµããŒãããã Docker API ã®æå°ããŒãžã§ã³ã¯ 1.26 ã«ãªããŸããã
PS
ç§ãã¡ã®ããã°ããèªã¿ãã ãã:
- «";
- «";
- «";
- «'ã
åºæïŒ habr.com
