ããŒãã 翻蚳ã: ãã®èšäºã®èè ã¯ããã§ã³ã®å°ããªäŒç€Ÿãpipetail ã®ãšã³ãžãã¢ã§ãã 圌ãã¯ãKubernetes ã¯ã©ã¹ã¿ãŒã®éçšã«é¢é£ãã [æã«ã¯ãããµãããã®ã§ãããããã§ã] éåžžã«å·®ãè¿«ã£ãåé¡ãšèª€è§£ã®çŽ æŽããããªã¹ãããŸãšããããšã«æåããŸããã
é·å¹Žã«ããã£ãŠ Kubernetes ã䜿çšããŠãããããç§ãã¡ã¯å€æ°ã®ã¯ã©ã¹ã¿ãŒ (GCPãAWSãAzure äžã®ãããŒãžãã¯ã©ã¹ã¿ãŒãšã¢ã³ãããŒãžãã¯ã©ã¹ã¿ãŒã®äž¡æ¹) ãæäœããŠããŸããã æéãçµã€ã«ã€ããŠãããã€ãã®ééããåžžã«ç¹°ãè¿ãããŠããããšã«æ°ã¥ãå§ããŸããã ããããããã¯æ¥ãã¹ãããšã§ã¯ãããŸãããã»ãšãã©ã®ããšã¯ç§ãã¡èªèº«ã§è¡ã£ãã®ã§ãã
ãã®èšäºã«ã¯ãæãäžè¬çãªãšã©ãŒãå«ãŸããŠãããããããä¿®æ£ããæ¹æ³ã«ã€ããŠã説æãããŠããŸãã
1. ãªãœãŒã¹: ãªã¯ãšã¹ããšå¶é
ãã®ã¢ã€ãã ã¯ééããªãæã泚ç®ãéãããªã¹ãã®æåã®å Žæã«å€ããŸãã
éåžžãCPU ãªã¯ãšã¹ã ãŸã£ããæå®ãããŠããªãããå€ãéåžžã«äœããã®ã©ã¡ããã§ã (åããŒãã«ã§ããã ãå€ãã®ããããé
眮ãããã)ã ãããã£ãŠãããŒãã¯éè² è·ã«ãªããŸãã é«è² è·æã«ã¯ãããŒãã®åŠçèœåãæ倧éã«æŽ»çšãããç¹å®ã®ã¯ãŒã¯ããŒãã¯ãèŠæ±ããããã®ã ããåãåããŸãã CPU ã¹ãããã«ã ããã«ãããã¢ããªã±ãŒã·ã§ã³ã®é
延ãã¿ã€ã ã¢ãŠãããã®ä»ã®äžå¿«ãªçµæãå¢å ããŸãã (ããã«ã€ããŠè©³ããã¯ãæè¿ã®ç¿»èš³ãã芧ãã ãã:
æ倧éã®åªå ïŒéåžžã« ã㌠æšå¥šïŒïŒ
resources: {}
éåžžã«äœã CPU ãªã¯ãšã¹ã (éåžžã«äœã) ã㌠æšå¥šïŒïŒ
resources:
Requests:
cpu: "1m"
äžæ¹ãCPU å¶éãååšãããšãããŒã ããã»ããµãå®å šã«ããŒããããŠããªãå Žåã§ãããããã«ããã¯ãã㯠ãµã€ã¯ã«ã®äžåœãªã¹ããããçºçããå¯èœæ§ããããŸãã ç¹°ãè¿ããŸãããããã«ããé 延ãå¢å ããå¯èœæ§ããããŸãã ãã©ã¡ãŒã¿ãå·¡ãè«äºã¯ç¶ã CPU CFS ã¯ã©ãŒã¿ Linux ã«ãŒãã«ã§ã¯ãèšå®ãããå¶éã«å¿ã㊠CPU ã¹ããããªã³ã°ãè¡ãããããã« CFS ã¯ã©ãŒã¿ãç¡å¹ã«ãªããŸã...æ²ããããšã«ãCPU å¶éã¯ã解決ã§ãã以äžã®åé¡ãåŒãèµ·ããå¯èœæ§ããããŸãã 詳现ã«ã€ããŠã¯ã以äžã®ãªã³ã¯ãåç §ããŠãã ããã
éå°ãªéžæ (ãªãŒããŒã³ããã) ã¡ã¢ãªã®åé¡ã¯ããã倧ããªåé¡ã«ã€ãªããå¯èœæ§ããããŸãã CPU ã®å¶éã«éãããšã¯ãã㯠ãµã€ã¯ã«ãã¹ããããããã¡ã¢ãªã®å¶éã«éãããšãããã匷å¶çµäºãããŸãã 芳å¯ããããšããããŸãã OOMkill? ã¯ãããŸãã«ãããç§ãã¡ã話ããŠããããšã§ãã
ãã®ãããªããšãèµ·ããå¯èœæ§ãæå°éã«æãããã§ãã? (以äžã®äŸã®ããã«) ã¡ã¢ãªèŠæ±ãå¶éå€ã«èšå®ããããšã§ãã¡ã¢ãªãéå°ã«å²ãåœãŠããä¿èšŒããã QoS (ãµãŒãã¹å質) ã䜿çšããŸãã ããã«ã€ããŠè©³ããã¯ã
ç Žè£æ§ (OOMkillãããå¯èœæ§ãé«ããªããŸã):
resources:
requests:
memory: "128Mi"
cpu: "500m"
limits:
memory: "256Mi"
cpu: 2
ä¿èšŒããã:
resources:
requests:
memory: "128Mi"
cpu: 2
limits:
memory: "128Mi"
cpu: 2
ãªãœãŒã¹ãèšå®ãããšãã«äœã圹ç«ã€å¯èœæ§ããããŸãã?
ãšãšãââã« ã¡ããªã¯ã¹ãµãŒã㌠ããã (ããã³ãããå ã®ã³ã³ãããŒ) ã«ããçŸåšã® CPU ãªãœãŒã¹æ¶è²»éãšã¡ã¢ãªäœ¿çšéã確èªã§ããŸãã ããããããã§ã«äœ¿çšããŠããããšã§ãããã 次ã®ã³ãã³ããå®è¡ããã ãã§ãã
kubectl top pods
kubectl top pods --containers
kubectl top nodes
ãã ããçŸåšã®äœ¿çšç¶æ³ã®ã¿ã衚瀺ãããŸãã ããã«ãããããããã®èŠæš¡ãææ¡ã§ããŸãããæçµçã«ã¯æ¬¡ã®ããšãå¿ èŠã«ãªããŸãã æéã®çµéã«äŒŽãã¡ããªã¯ã¹ã®å€åã®å±¥æŽ (ãCPU ã®ããŒã¯è² è·ã¯ã©ããããã§ããã?ãããæšæ¥ã®æã®è² è·ã¯ã©ããããã§ããã?ããªã©ã®è³ªåã«çãããã)ã ãã®ããã«äœ¿çšã§ããŸã ããã¡ããŠã¹, ããŒã¿ããã° ããã³ãã®ä»ã®ããŒã«ã ã¡ããªã¯ã¹ãµãŒããŒããã¡ããªã¯ã¹ãååŸããŠä¿åããã ãã§ããŠãŒã¶ãŒã¯ã¡ããªã¯ã¹ãã¯ãšãªããŠãããã«å¿ããŠããããããããšãã§ããŸãã
ã³ã³ãã¥ãŒãã£ã³ã°èœåãå¹ççã«äœ¿çšããããšã¯ç°¡åãªäœæ¥ã§ã¯ãããŸããã ãããªã¹ããã£ãšãã¬ã€ããŠãããããªãã®ã§ãã å¹³åæ¶è²»éãäœã (ããšãã°ãçŽ 10%) ã³ã³ãã¥ãŒãã£ã³ã°èœåã«å€é¡ã®è²»çšãæ¯æã£ãŠããå Žåã¯ãAWS Fargate ãŸã㯠Virtual Kubelet ãããŒã¹ã«ãã補åãæ€èšããããšããå§ãããŸãã ãããã¯ãµãŒããŒã¬ã¹/åŸéå¶èª²éã¢ãã«ã«åºã¥ããŠæ§ç¯ãããŠããããã®ãããªç¶æ³ã§ã¯ã³ã¹ããå®ããªãå¯èœæ§ããããŸãã
2. Liveness ãããŒããš Readiness ãããŒã
ããã©ã«ãã§ã¯ãKubernetes ã§ã¯ liveness ãã§ãã¯ãš readiness ãã§ãã¯ãæå¹ã«ãªã£ãŠããŸããã ãããŠæã é»æºãå ¥ãå¿ããããšããããŸã...
ããããèŽåœçãªãšã©ãŒãçºçããå Žåã«ãµãŒãã¹ã®åèµ·åãéå§ããã«ã¯ãä»ã«ã©ã®ããã«ããã°ããã§ãããã? ãŸããããŒã ãã©ã³ãµãŒã¯ããããããã©ãã£ãã¯ãåãå ¥ããæºåãã§ããŠããããšãã©ã®ããã«ããŠç¥ãã®ã§ãããã? ãããšãããå€ãã®ãã©ãã£ãã¯ãåŠçã§ããã®ã§ãããã?
ãããã®ãã¹ãã¯äºãã«æ··åãããããšããããããŸãã
- æŽ»æ° â ãçåæ§ããã§ãã¯ã倱æããå Žåã«ããããåèµ·åããŸãã
- æºå â æºåç¶æ³ãã§ãã¯ã倱æããå Žåããããã Kubernetes ãµãŒãã¹ããåæããŸã (ããã¯æ¬¡ã®ã³ãã³ãã䜿çšããŠç¢ºèªã§ããŸã)
kubectl get endpoints
) ãšãªãã次ã®ãã§ãã¯ãæ£åžžã«å®äºãããŸã§ãã©ãã£ãã¯ã¯å°çããŸããã
ãããã®ãã§ãã¯ã¯äž¡æ¹ãšã ãããã®ã©ã€ããµã€ã¯ã«å šäœã«ããã£ãŠå®è¡ãããŸãã ããã¯éåžžã«éèŠã§ãã
ãããã誀解ã¯ãreadiness ãããŒãã¯èµ·åæã«ã®ã¿å®è¡ããããããã®æºåãã§ããŠããããšããã©ã³ãµãŒãèªèã§ãããšãããã®ã§ã (Ready
) ã«ãªãããã©ãã£ãã¯ã®åŠçãéå§ã§ããããã«ãªããŸãã ãã ããããã¯äœ¿çšäžã®ãªãã·ã§ã³ã® XNUMX ã€ã«ãããŸããã
ãã XNUMX ã€ã¯ããããäžã®ãã©ãã£ãã¯ãéå°ã§ããããšãå€æããå¯èœæ§ã§ãã éè² è·ã«ãªã (ãŸãã¯ãããããªãœãŒã¹ã倧éã«æ¶è²»ããèšç®ãå®è¡ããŸã)ã ãã®å Žåãæºåç¶æ³ãã§ãã¯ã圹ã«ç«ã¡ãŸãã ãããã®è² è·ã軜æžãããããããå·åŽãããŸããã ä»åŸãæºåç¶æ³ãã§ãã¯ãæ£åžžã«å®äºãããšã ãããã®è² è·ãåã³å¢å ãããŸãã ãã®å Žå (æºåãã¹ãã倱æããå Žå)ã掻æ§ãã¹ãã®å€±æã¯éåžžã«éå¹æã«ãªããŸãã å¥å šã§äžçæžåœã«åäœããŠããããããåèµ·åããå¿ èŠã¯ãããŸããã
ãããã£ãŠãå Žåã«ãã£ãŠã¯ã誀ã£ãŠèšå®ããããã©ã¡ãŒã¿ãŒã䜿çšããŠãã§ãã¯ãæå¹ã«ãããããããŸã£ãããã§ãã¯ãè¡ããªãæ¹ãè¯ãå ŽåããããŸãã äžã§è¿°ã¹ãããã«ããã 掻æ§ãã§ãã¯ã¯æºåãã§ãã¯ãã³ããŒããŸããããã§ã¯å€§å€ãªããšã«ãªããŸãã å¯èœãªãªãã·ã§ã³ã¯æ¬¡ã®ãšããã§ã
å
±éã®äŸåé¢ä¿ã倱æããå Žåãã©ã¡ãã®ã¿ã€ãã®ãã§ãã¯ã倱æãã¹ãã§ã¯ãããŸããã倱æããªããšããã¹ãŠã®ãããã®é£éç (éªåŽ©ã®ãããª) 倱æãçºçããŸãã èšãæãããšã
3. åHTTPãµãŒãã¹ã®ããŒããã©ã³ãµãŒ
ãããããã¯ã©ã¹ã¿ãŒå ã«å€éšã«è»¢éããã HTTP ãµãŒãã¹ããããšæããŸãã
次ã®ããã«ãµãŒãã¹ãéããšã type: LoadBalancer
ããã®ã³ã³ãããŒã©ãŒ (ãµãŒãã¹ ãããã€ããŒã«ãã£ãŠç°ãªããŸã) ã¯ãå€éšããŒããã©ã³ãµãŒ (å¿
ããã L7 ã§å®è¡ãããããã§ã¯ãªããããã L4 ã§å®è¡ãããå ŽåããããŸã) ãæäŸããã³ããŽã·ãšãŒãããŸããããã¯ãã³ã¹ã (å€éšéç IPv4 ã¢ãã¬ã¹ãã³ã³ãã¥ãŒãã£ã³ã°èœåãç§åäœã®è«æ±) ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã ïŒãã®ãããªãªãœãŒã¹ãå€æ°äœæããå¿
èŠãããããã§ãã
ãã®å ŽåãXNUMX ã€ã®å€éšããŒã ãã©ã³ãµãŒã䜿çšããŠãµãŒãã¹ãéãæ¹ãã¯ããã«è«ççã§ãã type: NodePort
ã ãããã¯ãããã«è¯ãã®ã¯ã次ã®ãããªãã®ãå±éããããšã§ã nginx-ingress-controller ïŒãŸã㯠ãã¬ãã£ã¯ïŒã誰ãå¯äžã®äººã«ãªããŸããïŒ ããŒãããŒã å€éšããŒã ãã©ã³ãµãŒã«é¢é£ä»ãããããšã³ããã€ã³ãã次ã䜿çšããŠã¯ã©ã¹ã¿ãŒå
ã®ãã©ãã£ãã¯ãã«ãŒãã£ã³ã°ããŸãã é²å
¥-Kubernetes ãªãœãŒã¹ã
çžäºã«å¯Ÿè©±ããä»ã®ã¯ã©ã¹ã¿ãŒå (ãã€ã¯ã) ãµãŒãã¹ã¯ã次ã®ãããªãµãŒãã¹ã䜿çšããŠãéä¿¡ãã§ããŸãã ã¯ã©ã¹ã¿ãŒIP DNS ãä»ããçµã¿èŸŒã¿ã®ãµãŒãã¹æ€åºã¡ã«ããºã ã ãããªã㯠DNS/IP ã¯äœ¿çšããªãã§ãã ãããããã¯é 延ã«åœ±é¿ãäžããã¯ã©ãŠã ãµãŒãã¹ã®ã³ã¹ããå¢å ãããå¯èœæ§ããããŸãã
4. ã¯ã©ã¹ã¿ãŒã®æ©èœãèæ ®ããã«ã¯ã©ã¹ã¿ãŒãèªåã¹ã±ãŒã«ãã
ã¯ã©ã¹ã¿ãŒã«ããŒããè¿œå ããããã¯ã©ã¹ã¿ãŒããããŒããåé€ãããããå Žåããããã®ããŒãã® CPU 䜿çšçãªã©ã®åºæ¬çãªã¡ããªã¯ã¹ã«äŸåãã¹ãã§ã¯ãããŸããã ãããã®èšç»ã§ã¯ãå€ãã®ããšãèæ ®ããå¿ èŠããããŸã å¶éããã/ããŒãã®ã¢ãã£ããã£ããã€ã³ããšèš±å®¹ããªãœãŒã¹ ãªã¯ãšã¹ããQoS ãªã©ã ãããã®åŸ®åŠãªéããèæ ®ããã«å€éšãªãŒãã¹ã±ãŒã©ãŒã䜿çšãããšãåé¡ãçºçããå¯èœæ§ããããŸãã
ç¹å®ã®ããããã¹ã±ãžã¥ãŒã«ããå¿
èŠãããããå©çšå¯èœãªãã¹ãŠã® CPU ãã¯ãŒãèŠæ±ãŸãã¯éã¢ã»ã³ãã«ããããããã ç¶æ
ã«é¥ã£ãŠããŸã Pending
ã å€éšãªãŒãã¹ã±ãŒã©ãŒã¯çŸåšã®å¹³å CPU è² è· (èŠæ±ããããã®ã§ã¯ãªã) ã確èªããæ¡åŒµãéå§ããŸããã ïŒèŠæ Œå€ïŒ - å¥ã®ããŒããè¿œå ããŸããã ãã®çµæããã®ãããã¯ã¹ã±ãžã¥ãŒã«ãããŸããã
ãã®å Žåãéã¹ã±ãŒãªã³ã° (ã¹ã±ãŒã«ã€ã³) â ã¯ã©ã¹ã¿ãŒããããŒããåé€ããããšã¯åžžã«å®è£
ãå°é£ã§ãã ã¹ããŒããã« ããã (æ°žç¶ã¹ãã¬ãŒãžãæ¥ç¶ãããŠãã) ããããšæ³åããŠãã ããã æ°žç¶ããªã¥ãŒã éåžžã¯æå±ãã ç¹å®ã®ã¢ãã€ã©ããªãã£ãŒãŸãŒã³ ãªãŒãžã§ã³å
ã§ã¯è€è£œãããŸããã ãããã£ãŠãå€éšãªãŒãã¹ã±ãŒã©ãŒããã®ããããå«ãããŒããåé€ãããšãã¹ã±ãžã¥ãŒã©ãŒã¯å¥ã®ããŒãã§ãã®ããããã¹ã±ãžã¥ãŒã«ã§ããªããªããŸããããã¯ãæ°žç¶ã¹ãã¬ãŒãžãé
眮ãããŠããå¯çšæ§ãŸãŒã³ã§ã®ã¿å®è¡ã§ããããã§ãã ããããã¹ã¿ãã¯ç¶æ
ã«ãªã Pending
.
Kubernetes ã³ãã¥ããã£ã§éåžžã«äººæ°ã®ãã
5. IAM/RBAC æ©èœã®ç¡èŠ
æ°žç¶çãªã·ãŒã¯ã¬ãããæ〠IAM ãŠãŒã¶ãŒã®äœ¿çšã«ã¯æ³šæããŠãã ããã ãã·ã³ãšã¢ããªã±ãŒã·ã§ã³ã ããŒã«ãšãµãŒãã¹ ã¢ã«ãŠã³ãã䜿çšããŠäžæçãªã¢ã¯ã»ã¹ãæŽçãã (ãµãŒãã¹ã¢ã«ãŠã³ã).
Cloud IAM ã«ã¢ã¯ã»ã¹ã§ããã«ãããããããã¢ã¯ã»ã¹ ã㌠(ããã³ã·ãŒã¯ã¬ãã) ãã¢ããªã±ãŒã·ã§ã³æ§æã«ããŒãã³ãŒãã£ã³ã°ãããŠããã ãã§ãªããã·ãŒã¯ã¬ããã®ããŒããŒã·ã§ã³ãç¡èŠãããŠãããšããäºå®ã«ããééããŸãã å¿ èŠã«å¿ããŠããŠãŒã¶ãŒã®ä»£ããã« IAM ããŒã«ãšãµãŒãã¹ ã¢ã«ãŠã³ãã䜿çšããŸãã
kube2iam ã®ããšã¯å¿ããŠããµãŒãã¹ ã¢ã«ãŠã³ãã® IAM ããŒã«ã«çŽæ¥é²ã¿ãŸã (ã
apiVersion: v1
kind: ServiceAccount
metadata:
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/my-app-role
name: my-serviceaccount
namespace: default
泚éã XNUMX ã€ãããŸãã ãããªã«é£ãããªãã§ãããïŒ
ãŸãããµãŒãã¹ ã¢ã«ãŠã³ããšã€ã³ã¹ã¿ã³ã¹ ãããã¡ã€ã«ã®æš©éãä»äžããªãã§ãã ããã admin
О cluster-admin
圌ãããããå¿
èŠãšããªããªãã ããã¯ãç¹ã« RBAC K8 ã§ã¯å®è£
ãå°ãé£ãããªããŸãããåªåãã䟡å€ã¯ééããªããããŸãã
6. ãããã®èªåã¢ã³ãã¢ãã£ããã£ã«äŸåããªã
ããŒãäžã«ãããããã€ã¡ã³ãã® XNUMX ã€ã®ã¬ããªã«ããããšæ³åããŠãã ããã ããŒããèœã¡ãããã«äŒŽã£ãŠãã¹ãŠã®ã¬ããªã«ãèœã¡ãŸãã äžå¿«ãªç¶æ³ã§ãããïŒ ãããããªããã¹ãŠã®ã¬ããªã«ãåãããŒãäžã«ãã£ãã®ã§ãããã? Kubernetes ã¯é«å¯çšæ§ (HA) ãæäŸãããã®ã§ã¯ãªãã§ãããã?!
æ®å¿µãªãããKubernetes ã¹ã±ãžã¥ãŒã©ã¯ãç¬èªã®å€æã§ãåé¢ååšã®ã«ãŒã«ã«æºæ ããŠããŸããã (ã¢ã³ãã¢ãã£ããã£) ãããçšã ãããã¯æ瀺çã«æå®ããå¿ èŠããããŸãã
// ПпÑÑеМП ÐŽÐ»Ñ ÐºÑаÑкПÑÑО
labels:
app: zk
// ПпÑÑеМП ÐŽÐ»Ñ ÐºÑаÑкПÑÑО
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- zk
topologyKey: "kubernetes.io/hostname"
ããã ãã§ãã ããã§ããããã¯å¥ã®ããŒãã§ã¹ã±ãžã¥ãŒã«ãããŸã (ãã®æ¡ä»¶ã¯ã¹ã±ãžã¥ãŒã«äžã«ã®ã¿ãã§ãã¯ãããæäœäžã«ã¯ãã§ãã¯ãããŸãã)ã requiredDuringSchedulingIgnoredDuringExecution
).
ããã§ç§ãã¡ã話ããŠããã®ã¯ã podAntiAffinity
ç°ãªãããŒãäž: topologyKey: "kubernetes.io/hostname"
, - ç°ãªãã¢ãã€ã©ããªãã£ãŒãŸãŒã³ã«ã€ããŠã§ã¯ãããŸããã æ¬æ Œç㪠HA ãå®è£
ããã«ã¯ããã®ãããã¯ãããã«æ·±ãæãäžããå¿
èŠããããŸãã
7. PodDisruptionBudget ã®ç¡èŠ
Kubernetes ã¯ã©ã¹ã¿ãŒäžã«å®çšŒåè² è·ããããšæ³åããŠãã ããã å®æçã«ãããŒããšã¯ã©ã¹ã¿ãŒèªäœãæŽæ° (ãŸãã¯å»æ¢) ããå¿ èŠããããŸãã PodDisruptionBudget (PDB) ã¯ãã¯ã©ã¹ã¿ãŒç®¡çè ãšãŠãŒã¶ãŒéã®ãµãŒãã¹ä¿èšŒå¥çŽã®ãããªãã®ã§ãã
PDB ã䜿çšãããšãããŒãäžè¶³ã«ãããµãŒãã¹ã®äžæãåé¿ã§ããŸãã
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: zk-pdb
spec:
minAvailable: 2
selector:
matchLabels:
app: zookeeper
ãã®äŸã§ã¯ãã¯ã©ã¹ã¿ãŒã®ãŠãŒã¶ãŒãšããŠã管çè ã«æ¬¡ã®ããã«è¿°ã¹ãŸãããç§ã¯ Zookeeper ãµãŒãã¹ãæã£ãŠããŸããäœãããã«ããŠãããã®ãµãŒãã¹ã®å°ãªããšã 2 ã€ã®ã¬ããªã«ãåžžã«äœ¿çšã§ããããã«ãããã®ã§ããã
ããã«ã€ããŠè©³ããèªãããšãã§ããŸã
8. å ±éã¯ã©ã¹ã¿ãŒå ã®è€æ°ã®ãŠãŒã¶ãŒãŸãã¯ç°å¢
Kubernetes åå空é (åå空é) 匷åãªçµ¶çžãæäŸããªã.
ãããã誀解ã¯ãéæ¬çªããŒãã XNUMX ã€ã®åå空éã«ãããã€ããæ¬çªããŒããå¥ã®åå空éã«ãããã€ãããšã ãäºãã«ãããªã圱é¿ãäžããŸãã...ãã ãããªãœãŒã¹ã®èŠæ±/å¶éãã¯ã©ãŒã¿ã®èšå®ãããã³ priorityClasses ã®èšå®ã䜿çšããŠãäžå®ã¬ãã«ã®åé¢ãéæã§ããŸãã ããŒã¿ ãã¬ãŒã³å ã®äžéšã®ãç©ççãåé¢ã¯ãã¢ãã£ããã£ã蚱容ç¯å²ããã€ã³ã (ãŸãã¯ããŒãã»ã¬ã¯ã¿ãŒ) ã«ãã£ãŠæäŸãããŸããããã®ãããªåé¢ã¯å®å šã«åé¢ãããŸãã é£ãã åã蟌ãã
åãã¯ã©ã¹ã¿ãŒå ã§äž¡æ¹ã®ã¿ã€ãã®ã¯ãŒã¯ããŒããçµã¿åãããå¿ èŠãããå Žåã¯ãè€éãã«å¯ŸåŠããå¿ èŠããããŸãã ãã®ãããªå¿ èŠããªããäœè£ãããå Žåã¯ã ããäžã€ã®ã¯ã©ã¹ã¿ãŒ (ããšãã°ããããªã㯠ã¯ã©ãŠãå ã§) ã§ããã°ãããããæ¹ãè¯ãã§ãããã ããã«ãããããé«ãã¬ãã«ã®æç±æ§ãå®çŸãããŸãã
9. externalTrafficPolicy: ã¯ã©ã¹ã¿ãŒ
ã¯ã©ã¹ã¿ãŒå
ã®ãã¹ãŠã®ãã©ãã£ãã¯ããããã©ã«ãã®ããªã·ãŒãèšå®ãããŠãã NodePort ãªã©ã®ãµãŒãã¹ãçµç±ããŠããããšãããèŠãããŸãã externalTrafficPolicy: Cluster
ã ã€ãŸãã ããŒãããŒã ã¯ã¯ã©ã¹ã¿ãŒå
ã®ãã¹ãŠã®ããŒãã§éããŠããããããã®ããããã䜿çšããŠç®çã®ãµãŒãã¹ (ãããã®ã»ãã) ãšå¯Ÿè©±ã§ããŸãã
åæã«ãäžèšã® NodePort ãµãŒãã¹ã«é¢é£ä»ããããå®éã®ãããã¯ãéåžžãç¹å®ã®ãµãŒããŒã§ã®ã¿å©çšå¯èœã§ãã ãããã®ããŒãã®ãµãã»ããã ã€ãŸããå¿
èŠãªãããããªãããŒãã«æ¥ç¶ãããšããã©ãã£ãã¯ãå¥ã®ããŒãã«è»¢éãããŸãã ããããè¿œå ãã ã¬ã€ãã³ã·ã®å¢å (ããŒããç°ãªãã¢ãã€ã©ããªã㣠ãŸãŒã³/ããŒã¿ ã»ã³ã¿ãŒã«é
眮ãããŠããå Žåãã¬ã€ãã³ã·ã¯éåžžã«é«ããªãå¯èœæ§ããããŸããããã«ãäžããã©ãã£ãã¯ã®ã³ã¹ããå¢å ããŸã)ã
äžæ¹ãç¹å®ã® Kubernetes ãµãŒãã¹ã«ããªã·ãŒãèšå®ãããŠããå Žåã externalTrafficPolicy: Local
ãããããšãå¿
èŠãªããããå®éã«å®è¡ãããŠããããŒãã§ã®ã¿ NodePort ãéããŸãã ç¶æ
ã確èªããå€éšããŒããã©ã³ãµã䜿çšããå Žå (å¥åº·èšºæ) ãšã³ããã€ã³ã (ã©ã®ããã«æ©èœããã) AWS ELBïŒã 圌 å¿
èŠãªããŒãã«ã®ã¿ãã©ãã£ãã¯ãéä¿¡ããŸããããã¯é
延ãã³ã³ãã¥ãŒãã£ã³ã°ã®ããŒãºãäžãæéã«æçãªå¹æããããããŸãïŒãããŠåžžèçã«ã¯åæ§ã§ãïŒã
ãã§ã«æ¬¡ã®ãããªãã®ã䜿çšããŠããå¯èœæ§ãé«ãã§ã ãã¬ãã£ã¯ ãŸã㯠nginx-ingress-controller NodePort ãšã³ããã€ã³ã (ãŸã㯠NodePort ã䜿çšãã LoadBalancer) ãšã㊠HTTP åä¿¡ãã©ãã£ãã¯ãã«ãŒãã£ã³ã°ãããã®ãªãã·ã§ã³ãèšå®ãããšããã®ãããªãªã¯ãšã¹ãã®åŸ ã¡æéãå€§å¹ ã«ççž®ã§ããŸãã
Ð
10. ã¯ã©ã¹ã¿ãŒã«çžããããã³ã³ãããŒã« ãã¬ãŒã³ãä¹±çšããªãã§ãã ããã
以åã¯ããµãŒããŒãé©åãªååã§åŒã³åºãã®ãæ
£äŸã§ããã
å žåçãªã¹ããŒãªãŒ (å®éã®åºæ¥äºã«åºã¥ã): ãã¹ãŠã¯æŠå¿µå®èšŒããå§ãŸã£ãã®ã§ãã¯ã©ã¹ã¿ãŒã«ã¯èªãããååãä»ããããŸãã ãã¹ãâŠäœå¹Žãçµã¡ãŸãããããŸã æ¬çªç°å¢ã§äœ¿çšãããŠããã誰ããããã«è§Šããã®ãæããŠããŸãã
ã¯ã©ã¹ã¿ãŒããããã«å€ãã£ãŠãäœã楜ããããšã¯ãªãã®ã§ãç·Žç¿äžã¯å®æçã«ã¯ã©ã¹ã¿ãŒãåé€ããããšããå§ãããŸãã çœå®³ããã®å埩 (ããã¯åœ¹ã«ç«ã¡ãŸã
äžæ¹ã§ããããæäœããããšã«å€¢äžã«ãªãã¹ãã§ã¯ãããŸããã æéãšãšãã« å¶åŸ¡å±€ãé ããªãå¯èœæ§ããããŸãã æãå¯èœæ§ãé«ãã®ã¯ãå€æ°ã®ãªããžã§ã¯ããå転ããã«äœæãããŠããããšãåå ã§ã (Helm ãããã©ã«ãèšå®ã§äœ¿çšããå Žåã«ããããç¶æ³ã§ããããããconfigmaps/secret å ã®ç¶æ ãæŽæ°ãããªãçç±ã§ãããã®çµæãæ°åã®ãªããžã§ã¯ããã³ã³ãããŒã«å±€)ããŸã㯠kube-api ãªããžã§ã¯ãã®ç¶ç¶çãªç·šé (èªåã¹ã±ãŒãªã³ã°ãCI/CDãã¢ãã¿ãªã³ã°ãã€ãã³ã ãã°ãã³ã³ãããŒã©ãŒãªã©) ã䜿çšããŸãã
ããã«ããããŒãžã Kubernetes ãããã€ããŒãšã® SLA/SLO å¥çŽã確èªããä¿èšŒã«æ³šæããããšããå§ãããŸãã ãã³ããŒãä¿èšŒããŠããã å¶åŸ¡å±€ã®å¯çšæ§ (ãŸãã¯ãã®ãµãã³ã³ããŒãã³ã) ãã ããéä¿¡ãããªã¯ãšã¹ãã® p99 é
延ã¯å«ãŸããŸããã ã€ãŸãã次ã®ããã«å
¥åã§ããŸãã kubectl get nodes
ã10ååŸã«ã®ã¿åçãåŸãããŸãããããã¯ãµãŒãã¹å¥çŽã®æ¡ä»¶ã«éåãããã®ã§ã¯ãããŸããã
11. ããŸã: ææ°ã¿ã°ã®äœ¿çš
ããããããã¯ãã§ã«å€å
žã§ãã æè¿ã§ã¯ãå€ãã®äººãèŠãçµéšããåŠãã§ãã®ã¿ã°ã®äœ¿çšããããããããã®ææ³ã«ééããããšã¯å°ãªããªããŸããã :latest
ãããŠããŒãžã§ã³ã®åºå®ãéå§ããŸããã äžæ³ïŒ
ECR
ãµããªãŒ
ãã¹ãŠãäžå€ã«ããŠæ©èœããããšãæåŸ
ããªãã§ãã ãããKubernetes ã¯äžèœè¬ã§ã¯ãããŸããã æªãã¢ããª
ããŸããŸãªããŒã ã®å€±æäœéšãç¥ãããšãã§ããŸãã
ãã®èšäºã«èšèŒãããŠãããšã©ãŒã®ãªã¹ãã«è¿œå ãããå Žåã¯ãTwitter (
翻蚳è ããã®è¿œäŒž
ç§ãã¡ã®ããã°ããèªã¿ãã ãã:
- «
Kubernetes ã¯ã©ã¹ã¿ãŒã®èšèš: ã¯ã©ã¹ã¿ãŒã¯ããã€å¿ èŠã§ãã? "; - «
Kubernetes ã®ã»ãã¥ãªãã£ã® ABC: èªèšŒãèªå¯ãç£æ» "; - «
Kubernetes ã®èªåã¹ã±ãŒãªã³ã°ãšãªãœãŒã¹ç®¡ç ãïŒã¬ãã¥ãŒãšãããªã¬ããŒãïŒ; - «
Kubernetes ã® ConfigMap: ç¥ã£ãŠãã䟡å€ã®ãããã¥ã¢ã³ã¹ 'ã
åºæïŒ habr.com