ãã©ãããã©ãŒã
æãããªè§£æ±ºçã¯ãRed Hat Enterprise Linux CoreOS (Red Hat Enterprise Linux ã®ããªã¢ã³ã) ãš CRI-O ãæšæºãšããŠäœ¿çšããããšã§ããããã®çç±ã¯æ¬¡ã®ãšããã§ã...
ã»ãŒãªã³ã°ã®ãããã¯ã¯ãKubernetes ãšã³ã³ãããŒã®åäœã説æãããšãã«é¡äŒŒç¹ãèŠã€ããã®ã«éåžžã«é©ãããããã¯ãªã®ã§ãäŸã䜿çšããŠãCoreOS ãš CRI-O ã解決ããããžãã¹äžã®åé¡ã«ã€ããŠè©±ããŠã¿ãŸãããã
ããã§ããã«ãã«ã 20 ã®ç°ãªãè¹ã¢ãã« (Kubernetes ããŒãžã§ã³) ãšããŸã£ããç°ãªãæµ·æµãšé¢šãæ〠XNUMX ã€ã®ç°ãªãææ (ã¯ã©ãŠã ãããã€ããŒ) ã«å¯ŸããŠãã®äœæ¥ãå®è¡ããªããã°ãªããªãã£ãå Žåãæ³åããŠãã ããã ãŸããèªè¡ãè¡ãããææã«é¢ä¿ãªããè¹é·ïŒã¯ã©ã¹ã¿ãŒã®éçšã管çãããªãã¬ãŒã¿ãŒïŒã®èŠ³ç¹ããã¯ããã¹ãŠã®è¹ïŒOpenShiftã¯ã©ã¹ã¿ãŒïŒãåãåäœãããããšãæ±ããããŸããã æµ·æŽã®äŸããç¶ãããšãè¹é·ã¯èªåã®è¹ã§ã©ã®ãããªçš®é¡ã®è€è£ ããã㯠(CRI-O) ã䜿çšãããŠãããããŸã£ããæ°ã«ããŸããã圌ãã«ãšã£ãŠéèŠãªããšã¯ããããã®ãããã¯ã匷åã§ä¿¡é Œæ§ããããšããããšã§ãã
OpenShift 4 ã¯ãã¯ã©ãŠã ãã©ãããã©ãŒã ãšããŠãéåžžã«äŒŒãããžãã¹äžã®èª²é¡ã«çŽé¢ããŠããŸãã ã¯ã©ã¹ã¿ãŒã®äœææãããããã®ããŒãã§é害ãçºçããå ŽåããŸãã¯ã¯ã©ã¹ã¿ãŒã®ã¹ã±ãŒãªã³ã°æã«ãæ°ããããŒããäœæããå¿ èŠããããŸãã æ°ããããŒããäœæããŠåæåãããšãã¯ãCRI-O ãªã©ã®éèŠãªãã¹ã ã³ã³ããŒãã³ããããã«å¿ããŠæ§æããå¿ èŠããããŸãã ä»ã®å¶äœãšåæ§ã«ãæåã«ãåææããäŸçµŠããå¿ èŠããããŸãã è¹è¶ã®å Žåãåææã¯éå±ãšæšæã§ãã ãã ããOpenShift 4 ã¯ã©ã¹ã¿ãŒã«ã³ã³ãããŒããããã€ããããã®ãã¹ããäœæããå Žåã¯ãèšå®ãã¡ã€ã«ãš API ãæäŸãããµãŒããŒãå ¥åãšããŠäœ¿çšããå¿ èŠããããŸãã OpenShift ã¯ãã©ã€ããµã€ã¯ã«å šäœãéããŠå¿ èŠãªã¬ãã«ã®èªååãæäŸããå¿ èŠãªè£œåãµããŒãããšã³ããŠãŒã¶ãŒã«æäŸããŠããã©ãããã©ãŒã ãžã®æè³ãååããŸãã
OpenShift 4 ã¯ããã¹ãŠã®äž»èŠãªã¯ã©ãŠã ã³ã³ãã¥ãŒãã£ã³ã° ãããã€ããŒãä»®æ³åãã©ãããã©ãŒã ãããã«ã¯ã㢠ã¡ã¿ã« ã·ã¹ãã ã«å¯ŸããŠããã©ãããã©ãŒã (ããŒãžã§ã³ 4.X) ã®ã©ã€ããµã€ã¯ã«å šäœãéããŠã·ã¹ãã ãç°¡åã«æŽæ°ã§ããæ©èœãæäŸããããã«äœæãããŸããã ãããè¡ãã«ã¯ã亀æå¯èœãªèŠçŽ ã«åºã¥ããŠããŒããäœæããå¿ èŠããããŸãã ã¯ã©ã¹ã¿ãŒãæ°ããããŒãžã§ã³ã® Kubernetes ãå¿ èŠãšããå Žåãã¯ã©ã¹ã¿ãŒã¯ CoreOS äžã®å¯Ÿå¿ããããŒãžã§ã³ã® CRI-O ãåãåããŸãã CRI-O ããŒãžã§ã³ã¯ Kubernetes ã«çŽæ¥é¢é£ä»ããããŠããããããã¹ãããã©ãã«ã·ã¥ãŒãã£ã³ã°ããŸãã¯ãµããŒãã®ç®çã§ã®å€æŽãå€§å¹ ã«ç°¡çŽ åãããŸãã ããã«ããã®ã¢ãããŒãã«ããããšã³ããŠãŒã¶ãŒãš Red Hat ã®ã³ã¹ããåæžãããŸãã
ããã¯ãKubernetes ã¯ã©ã¹ã¿ãŒã«é¢ããæ ¹æ¬çã«æ°ããèãæ¹ã§ãããéåžžã«äŸ¿å©ã§é
åçãªæ°æ©èœãèšç»ããããã®åºç€ãç¯ããŸãã CRI-O (Container Runtime Interface - Open Container Initiativeãç¥ç§° CRI-OCI) ã¯ãOpenShift ãšé£æºããããã«å¿
èŠãªããŒãã倧éã«äœæããå Žåã«æãæåããéžæè¢ã§ããããšãå€æããŸããã CRI-O ã¯ã以åã«äœ¿çšãããŠãã Docker ãšã³ãžã³ã眮ãæããOpenShift ãŠãŒã¶ãŒã«æäŸããŸã
ãªãŒãã³ã³ã³ããã®äžç
äžçã¯é·ãéããªãŒãã³ã³ã³ããã«åãã£ãŠé²ãã§ããŸããã Kubernetes ã§ããããšäžäœã¬ãã«ã§ããããšã
ãã¹ãŠã¯ Open Containers Initiative ã®åµèšããå§ãŸããŸãã
ãã®åŸãKubernetes ã³ãã¥ããã£ã¯ããšåŒã°ãããã©ã°ã€ã³å¯èœãªã€ã³ã¿ãŒãã§ã€ã¹ã®åäžæšæºãéçºããŸããã
Red Hat ãš Google ã®ãšã³ãžãã¢ã¯ãCRI ãããã³ã«çµç±ã§ Kubelet ãªã¯ãšã¹ããåãå
¥ããããšãã§ããã³ã³ãã ãšã³ãžã³ã«å¯Ÿããåžå Žã®ããŒãºãèªèããåè¿°ã® OCI ä»æ§ãšäºææ§ã®ããã³ã³ãããå°å
¥ããŸããã ããã§
å³ã 1ã
CRI-O ãš CoreOS ã«ããã€ãããŒã·ã§ã³
OpenShift 4 ãã©ãããã©ãŒã ã®ãªãªãŒã¹ã«ãããå€æŽãããŸããã
ã¡ãã£ãšåŸ ã£ãŠãããã¯ã©ãã§ããïŒ
ããã§ããOpenShift 4 ã®ç»å Žã«ãããåã
ã®ãã¹ãã«æ¥ç¶ããŠã³ã³ãã ãšã³ãžã³ãã€ã³ã¹ããŒã«ããããã¹ãã¬ãŒãžãæ§æããããæ€çŽ¢ãµãŒããŒãæ§æãããããããã¯ãŒã¯ãæ§æãããããå¿
èŠããªããªããŸããã OpenShift 4 ãã©ãããã©ãŒã ã¯ã
Kubernetes ã§ã¯åžžã«ããŠãŒã¶ãŒãæãŸããç¶æ
ãå®çŸ©ãã
OpenShift 4 ã¯ããã©ãããã©ãŒã 㧠Operator ã䜿çšããããšã«ããããã®æ°ãããã©ãã€ã (ã»ããç¶æ
ãšå®éã®ç¶æ
ã®æŠå¿µã䜿çš) ã RHEL CoreOS ããã³ CRI-O ã®ç®¡çã«ãããããŸãã ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ãšã³ã³ãã ãšã³ãžã³ã®ããŒãžã§ã³ãæ§æããã³ç®¡çããã¿ã¹ã¯ã¯ããããã
ã³ã³ããã®å®è¡
ãŠãŒã¶ãŒã¯ãTech Preview ã¹ããŒã¿ã¹ã®ããŒãžã§ã³ 3.7 以éãããã³äžè¬å©çšå¯èœã¹ããŒã¿ã¹ (çŸåšãµããŒããããŠãã) ã®ããŒãžã§ã³ 3.9 以éãOpenShift ãã©ãããã©ãŒã 㧠CRI-O ãšã³ãžã³ã䜿çšããæ©äŒããããŸããã ããã«ãRed Hat ã¯
ç±³ã 2. Kubernetes ã¯ã©ã¹ã¿ãŒå ã§ã³ã³ãããŒãã©ã®ããã«åäœããã
CRI-O ã¯ãæ°ããããŒãã®åæåæãš OpenShift ãã©ãããã©ãŒã ã®æ°ããããŒãžã§ã³ã®ãªãªãŒã¹æã«ãããã¬ãã«å šäœãåæããããšã«ãããæ°ããã³ã³ãã㌠ãã¹ãã®äœæãç°¡çŽ åããŸãã ãã©ãããã©ãŒã å šäœã®æ¹èšã«ããããã©ã³ã¶ã¯ã·ã§ã³ã®æŽæ°/ããŒã«ããã¯ãå¯èœã«ãªããã³ã³ãã ããŒã« ã³ã¢ãã³ã³ãã ãšã³ãžã³ãããŒã (Kubelet)ãããã³ Kubernetes ãã¹ã¿ãŒ ããŒãéã®äŸåé¢ä¿ã«ããããããããã¯ãé²æ¢ãããŸãã ãã¹ãŠã®ãã©ãããã©ãŒã ã³ã³ããŒãã³ããå¶åŸ¡ãšããŒãžã§ã³ç®¡çã§éäžç®¡çããããšã«ãããç¶æ A ããç¶æ B ãžã®æ確ãªãã¹ãåžžã«ååšããŸããããã«ãããæŽæ°ããã»ã¹ãç°¡çŽ åãããã»ãã¥ãªãã£ãåäžããããã©ãŒãã³ã¹ ã¬ããŒããæ¹åãããæŽæ°ãšæ°ããããŒãžã§ã³ã®ã€ã³ã¹ããŒã«ã®ã³ã¹ããåæžãããŸãã ã
亀æèŠçŽ ã®åšåãå®èšŒ
åè¿°ããããã«ãMachine Config Operator ã䜿çšã㊠OpenShift 4 ã®ã³ã³ãããŒãã¹ããšã³ã³ãããŒãšã³ãžã³ã管çãããšãKubernetes ãã©ãããã©ãŒã ã§ã¯ä»¥åã¯äžå¯èœã ã£ãæ°ããã¬ãã«ã®èªååãå®çŸããŸãã æ°ããæ©èœããã¢ã³ã¹ãã¬ãŒã·ã§ã³ããããã«ãcrio.conf ãã¡ã€ã«ã«å€æŽãå ããæ¹æ³ã瀺ããŸãã çšèªã«ããæ··ä¹±ãé¿ããããã«ãçµæã«çŠç¹ãåœãŠãããã«ããŠãã ããã
ãŸããããããã³ã³ãã ã©ã³ã¿ã€ã æ§æãContainer Runtime Config ãäœæããŸãããã ããã¯ãCRI-O ã®æ§æãè¡šã Kubernetes ãªãœãŒã¹ãšèããŠãã ããã å®éã«ã¯ããã㯠MachineConfig ãšåŒã°ãããã®ã®ç¹æ®ããŒãžã§ã³ã§ãããOpenShift ã¯ã©ã¹ã¿ãŒã®äžéšãšã㊠RHEL CoreOS ãã·ã³ã«ãããã€ãããæ§æã§ãã
ContainerRuntimeConfig ãšåŒã°ãããã®ã«ã¹ã¿ã ãªãœãŒã¹ã¯ãã¯ã©ã¹ã¿ãŒç®¡çè ã CRI-O ãæ§æããããããããã«äœæãããŸããã ãã®ããŒã«ã¯éåžžã«åŒ·åã§ãããããMachineConfigPool èšå®ã«å¿ããŠç¹å®ã®ããŒãã«ã®ã¿é©çšã§ããŸãã åãç®çãæãããã·ã³ã®ã°ã«ãŒããšããŠèããŠãã ããã
/etc/crio/crio.conf ãã¡ã€ã«å ã§å€æŽããæåŸã® XNUMX è¡ã«æ³šç®ããŠãã ããã ããã XNUMX ã€ã®è¡ã¯ crio.conf ãã¡ã€ã«å ã®è¡ãšéåžžã«ãã䌌ãŠããã次ã®ãšããã§ãã
vi ContainerRuntimeConfig.yaml
çµè«ïŒ
apiVersion: machineconfiguration.openshift.io/v1
kind: ContainerRuntimeConfig
metadata:
name: set-log-and-pid
spec:
machineConfigPoolSelector:
matchLabels:
debug-crio: config-log-and-pid
containerRuntimeConfig:
pidsLimit: 2048
logLevel: debug
次ã«ããã®ãã¡ã€ã«ã Kubernetes ã¯ã©ã¹ã¿ãŒã«ããã·ã¥ããå®éã«äœæãããããšã確èªããŠã¿ãŸãããã æäœã¯ä»ã® Kubernetes ãªãœãŒã¹ã®å ŽåãšãŸã£ããåãã§ããããšã«æ³šæããŠãã ããã
oc create -f ContainerRuntimeConfig.yaml
oc get ContainerRuntimeConfig
çµè«ïŒ
NAME AGE
set-log-and-pid 22h
ContainerRuntimeConfig ãäœæããããMachineConfigPool ã® XNUMX ã€ãå€æŽããŠããã®æ§æãã¯ã©ã¹ã¿ãŒå ã®ç¹å®ã®ãã·ã³ ã°ã«ãŒãã«é©çšããããšã Kubernetes ã«éç¥ããå¿ èŠããããŸãã ãã®å Žåããã¹ã¿ãŒ ããŒãã® MachineConfigPool ãå€æŽããŸãã
oc edit MachineConfigPool/master
çµè« (æ確ã«ããããã«ãäž»èŠãªæ¬è³ªã¯æ®ããŠãããŸã):
...
metadata:
creationTimestamp: 2019-04-10T23:42:28Z
generation: 1
labels:
debug-crio: config-log-and-pid
operator.machineconfiguration.openshift.io/required-for-upgrade: ""
...
ãã®æç¹ã§ãMCO ã¯ã¯ã©ã¹ã¿ãŒçšã®æ°ãã crio.conf ãã¡ã€ã«ã®äœæãéå§ããŸãã ãã®å Žåãå®å šã«å®æããæ§æãã¡ã€ã«ã¯ãKubernetes API ã䜿çšããŠè¡šç€ºã§ããŸãã ContainerRuntimeConfig 㯠MachineConfig ã®ç¹æ®ãªããŒãžã§ã³ã«ãããªããããMachineConfigs å ã®é¢é£ããè¡ã確èªããããšã§çµæã確èªã§ããããšã«æ³šæããŠãã ããã
oc get MachineConfigs | grep rendered
çµè«ïŒ
rendered-master-c923f24f01a0e38c77a05acfd631910b 4.0.22-201904011459-dirty 2.2.0 16h
rendered-master-f722b027a98ac5b8e0b41d71e992f626 4.0.22-201904011459-dirty 2.2.0 4m
rendered-worker-9777325797fe7e74c3f2dd11d359bc62 4.0.22-201904011459-dirty 2.2.0 16h
çµæãšããŠåŸããããã¹ã¿ãŒ ããŒãã®æ§æãã¡ã€ã«ã¯ãå ã®æ§æãããæ°ããããŒãžã§ã³ã§ããããšã«æ³šæããŠãã ããã ããã衚瀺ããã«ã¯ã次ã®ã³ãã³ããå®è¡ããŸãã ã€ãã§ã«èšã£ãŠãããŸãããããã¯ãããã Kubernetes ã®æŽå²ã®äžã§æé«ã®ã¯ã³ã©ã€ããŒã® XNUMX ã€ã§ãã
python3 -c "import sys, urllib.parse; print(urllib.parse.unquote(sys.argv[1]))" $(oc get MachineConfig/rendered-master-f722b027a98ac5b8e0b41d71e992f626 -o YAML | grep -B4 crio.conf | grep source | tail -n 1 | cut -d, -f2) | grep pid
çµè«ïŒ
pids_limit = 2048
次ã«ãæ§æããã¹ãŠã®ãã¹ã¿ãŒ ããŒãã«é©çšãããŠããããšã確èªããŸãããã ãŸããã¯ã©ã¹ã¿ãŒå ã®ããŒãã®ãªã¹ããååŸããŸãã
oc get node | grep master
Output:
ip-10-0-135-153.us-east-2.compute.internal Ready master 23h v1.12.4+509916ce1
ip-10-0-154-0.us-east-2.compute.internal Ready master 23h v1.12.4+509916ce1
ip-10-0-166-79.us-east-2.compute.internal Ready master 23h v1.12.4+509916ce1
次ã«ãã€ã³ã¹ããŒã«ããããã¡ã€ã«ãèŠãŠã¿ãŸãããã ContainerRuntimeConfig ãªãœãŒã¹ã§æå®ãã pid ããã³ debug ãã£ã¬ã¯ãã£ãã®æ°ããå€ã§ãã¡ã€ã«ãæŽæ°ãããããšãããããŸãã ãšã¬ã¬ã³ã¹ãã®ãã®:
oc debug node/ip-10-0-135-153.us-east-2.compute.internal â cat /host/etc/crio/crio.conf | egrep 'debug||pidâ
çµè«ïŒ
...
pids_limit = 2048
...
log_level = "debug"
...
ã¯ã©ã¹ã¿ãŒã«å¯Ÿãããããã®å€æŽã¯ãã¹ãŠãSSH ãå®è¡ããããšãªãè¡ãããŸããã ãã¹ãŠã®äœæ¥ã¯ãKuberentes ãã¹ã¿ãŒ ããŒãã«ã¢ã¯ã»ã¹ããããšã§å®è¡ãããŸããã ã€ãŸãããããã®æ°ãããã©ã¡ãŒã¿ã¯ãã¹ã¿ãŒ ããŒãã§ã®ã¿æ§æãããŸããã ã¯ãŒã«ãŒ ããŒãã¯å€æŽãããŸããã§ãããããã¯ã亀æå¯èœãªèŠçŽ ãæã€ã³ã³ãã㌠ãã¹ãããã³ã³ã³ãã㌠ãšã³ãžã³ã«é¢é£ããŠãæå®ãããå®éã®ç¶æ ã䜿çšãã Kubernetes æ¹æ³è«ã®å©ç¹ã瀺ããŠããŸãã
äžèšã®äŸã¯ã4 ã€ã®æ¬çªããŒããåããå°èŠæš¡ãª OpenShift Container Platform 3000 ã¯ã©ã¹ã¿ãŒããŸã㯠4 ããŒããåãã巚倧ãªæ¬çªã¯ã©ã¹ã¿ãŒã«å€æŽãå ããæ©èœã瀺ããŠããŸãã ãããã®å Žåããäœæ¥éã¯åãã§éåžžã«å°ãªããContainerRuntimeConfig ãã¡ã€ã«ãæ§æããMachineConfigPool å ã® XNUMX ã€ã®ã©ãã«ãå€æŽããã ãã§ãã ãŸããããã¯ãã©ã€ããµã€ã¯ã«å šäœãéã㊠Kubernetes ãå®è¡ãã OpenShift Container Platform XNUMX.X ã®ã©ã®ããŒãžã§ã³ã§ãè¡ãããšãã§ããŸãã
å€ãã®å Žåããã¯ãããžãŒäŒæ¥ã¯ããŸãã«æ¥éã«é²åãããããåºç€ãšãªãã³ã³ããŒãã³ãã«ç¹å®ã®ãã¯ãããžãŒãéžæããçç±ã説æã§ããªããªããŸãã ã³ã³ãã ãšã³ãžã³ã¯æŽå²çã«ããŠãŒã¶ãŒãçŽæ¥æäœããã³ã³ããŒãã³ãã§ããã ã³ã³ããã®äººæ°ã¯ã³ã³ãã ãšã³ãžã³ã®åºçŸãšãšãã«èªç¶ã«å§ãŸã£ãããããŠãŒã¶ãŒã¯ã³ã³ããã«èå³ã瀺ãããšããããããŸãã ããããRed Hat ã CRI-O ãéžæãããã 4 ã€ã®çç±ã§ãã ã³ã³ããã¯çŸåšãªãŒã±ã¹ãã¬ãŒã·ã§ã³ã«éç¹ã眮ããŠé²åããŠãããOpenShift XNUMX ã䜿çšããå Žå㯠CRI-O ãæé«ã®ãšã¯ã¹ããªãšã³ã¹ãæäŸããããšãããããŸããã
åºæïŒ habr.com