ããŒãã 翻蚳ã: ãã®èšäºã¯ããããªã㯠ãã¡ã€ã³ã§å
¬éãããŠãããããžã§ã¯ãè³æã®äžéšã§ãã
TL;DR: ããã¯ãKubernetes ã§ã®ãããã€ã¡ã³ãã®ãããã°ã«åœ¹ç«ã€å³ã§ãã
ã¯ã©ã¹ã¿ãŒå
ã®ãšã©ãŒãèŠã€ããŠä¿®æ£ããããã®ãããŒãã£ãŒãã åæïŒè±èªïŒã¯ä»¥äžããå
¥æã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ã Kubernetes ã«ãããã€ããå Žåãéåžžã次㮠XNUMX ã€ã®ã³ã³ããŒãã³ããå®çŸ©ããå¿ èŠããããŸãã
- å±é - ããã¯ãããããšåŒã°ãããã¢ããªã±ãŒã·ã§ã³ã®ã³ããŒãäœæããããã®äžçš®ã®ã¬ã·ãã§ãã
- ã«ã¹ã¿ããŒãµãŒãã¹ â ãããéã§ãã©ãã£ãã¯ãåæ£ããå éšããŒã ãã©ã³ãµãŒã
- é²å ¥ â ãã©ãã£ãã¯ãå€éšã®äžçãããµãŒãã¹ã«ã©ã®ããã«å°éãããã®èª¬æã
以äžã«ç°¡åãªå³ã瀺ããŸãã
1) Kubernetes ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã¯å éšãšå€éšã® XNUMX ã€ã®ããŒã ãã©ã³ãµãŒå±€ãä»ããŠå€éšãããã©ãã£ãã¯ãåä¿¡ããŸãã
2) å
éšãã©ã³ãµãŒã¯ãµãŒãã¹ãšåŒã°ããå€éšãã©ã³ãµãŒã¯ã€ã³ã°ã¬ã¹ãšåŒã°ããŸãã
3) ãããã€ã¡ã³ãã«ããããããäœæãããããããç£èŠãããŸã (æåã§ã¯äœæãããŸãã)ã
åçŽãªã¢ããªã±ãŒã·ã§ã³ãç¬èªã«ãããã€ããããšããŸãã ããã«ã¡ã¯äžçã ãã® YAML æ§æã¯æ¬¡ã®ããã«ãªããŸãã
apiVersion: apps/v1
kind: Deployment # <<<
metadata:
name: my-deployment
labels:
track: canary
spec:
selector:
matchLabels:
any-name: my-app
template:
metadata:
labels:
any-name: my-app
spec:
containers:
- name: cont1
image: learnk8s/app:1.0.0
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service # <<<
metadata:
name: my-service
spec:
ports:
- port: 80
targetPort: 8080
selector:
name: app
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress # <<<
metadata:
name: my-ingress
spec:
rules:
- http:
paths:
- backend:
serviceName: app
servicePort: 80
path: /
å®çŸ©ã¯éåžžã«é·ããããã³ã³ããŒãã³ããçžäºã«ã©ã®ããã«é¢é£ããŠãããã«ã€ããŠæ··ä¹±ããããã§ãã
ããšãã°ã次ã®ããã«
- ãã€ããŒã 80 ã䜿çšããã〠8080 ã䜿çšããå¿ èŠããããŸãã?
- 競åããªãããã«ãµãŒãã¹ããšã«æ°ããããŒããäœæããå¿ èŠããããŸãã?
- ã¬ãŒãã«åã¯éèŠã§ãã? ã©ãã§ãåãã§ããã¹ãã§ãããã?
ãããã°ã«çŠç¹ãåœãŠãåã«ãXNUMX ã€ã®ã³ã³ããŒãã³ããçžäºã«ã©ã®ããã«é¢ä¿ããŠããããæãåºããŠãã ããã å°å ¥ãšãµãŒãã¹ããå§ããŸãããã
å°å ¥ãšãµãŒãã¹ã®é¢ä¿
é©ããããããããŸãããããããã€ã¡ã³ããšãµãŒãã¹ã¯ãŸã£ããé¢é£ããŠããŸããã 代ããã«ããµãŒãã¹ã¯ãããã€ã¡ã³ãããã€ãã¹ããŠãããããçŽæ¥ãã€ã³ãããŸãã
ãããã£ãŠãããããšãµãŒãã¹ãäºãã«ã©ã®ããã«é¢ä¿ããŠãããã«èå³ããããŸãã èŠããŠããã¹ã XNUMX ã€ã®ããš:
- ã»ã¬ã¯ã¿ãŒ (
selector
) ãµãŒãã¹ã®å Žåã¯ãå°ãªããšã XNUMX ã€ã®ããã ã©ãã«ãšäžèŽããå¿ èŠããããŸãã -
targetPort
äžèŽããŠããå¿ èŠããããŸãcontainerPort
ãããå ã®ã³ã³ããã -
port
ãµãŒãã¹ã¯äœã§ãæ§ããŸããã ç°ãªããµãŒãã¹ã¯ç°ãªã IP ã¢ãã¬ã¹ãæã£ãŠãããããåãããŒãã䜿çšã§ããŸãã
次ã®å³ã¯ãäžèšã®ãã¹ãŠãã°ã©ã圢åŒã§è¡šãããã®ã§ãã
1) ãµãŒãã¹ããã©ãã£ãã¯ãç¹å®ã®ãããã«è»¢éãããšæ³åããŠãã ããã
2) ããããäœæãããšãã¯ã次ã®ããã«æå®ããå¿
èŠããããŸãã containerPort
ãããå
ã®åã³ã³ãããŒã«å¯ŸããŠ:
3) ãµãŒãã¹ãäœæãããšãã¯ã次ã®ããšãæå®ããå¿
èŠããããŸãã port
О targetPort
. ããããã³ã³ãããžã®æ¥ç¶ã«ã¯ã©ãã䜿çšãããã®ã§ãããã?
4) çµç± targetPort
ã äžèŽããå¿
èŠããããŸã containerPort
.
5) ã³ã³ããå
ã§ããŒã 3000 ãéããŠãããšããŸãã targetPort
åãã¯ãã§ãã
YAML ãã¡ã€ã«ã§ã¯ãã©ãã«ãš ports
/ targetPort
äžèŽããŠããå¿
èŠããããŸãïŒ
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
labels:
track: canary
spec:
selector:
matchLabels:
any-name: my-app
template:
metadata:
labels: # <<<
any-name: my-app # <<<
spec:
containers:
- name: cont1
image: learnk8s/app:1.0.0
ports:
- containerPort: 8080 # <<<
---
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
ports:
- port: 80
targetPort: 8080 # <<<
selector: # <<<
any-name: my-app # <<<
ã©ãã«ã¯ã©ãã§ãã track: canary
ãå±éãã»ã¯ã·ã§ã³ã®äžéšã«ããã®ã¯? åãããã¹ãã§ããããïŒ
ãã®ã©ãã«ã¯ãããã€ã¡ã³ãåºæã§ããããµãŒãã¹ããã©ãã£ãã¯ãã«ãŒãã£ã³ã°ããããã«äœ¿çšããããã®ã§ã¯ãããŸããã ã€ãŸããåé€ããããå¥ã®å€ãå²ãåœãŠããããããšãã§ããŸãã
ã»ã¬ã¯ã¿ãŒã¯ã©ãã§ãããã matchLabels
?
åžžã«ãããã®ã©ãã«ãšäžèŽããå¿ èŠããããŸãããã¯ããããã€ã¡ã³ãã«ãã£ãŠãããã远跡ããããã«äœ¿çšãããããã§ãã
æ£ããç·šéãè¡ããããšä»®å®ããŸãããã ãããã確èªããã«ã¯ã©ãããã°ããã§ãã?
次ã®ã³ãã³ãã䜿çšããŠãããã®ã©ãã«ã確èªã§ããŸãã
kubectl get pods --show-labels
ãŸãã¯ãããããè€æ°ã®ã¢ããªã±ãŒã·ã§ã³ã«å±ããŠããå Žåã¯ã次ã®ããã«ãªããŸãã
kubectl get pods --selector any-name=my-app --show-labels
ã©ã any-name=my-app
ã©ãã«ã§ã any-name: my-app
.
äœãå°é£ã¯æ®ã£ãŠããŸããïŒ
ãããã«æ¥ç¶ã§ããïŒ ãããè¡ãã«ã¯ã次ã®ã³ãã³ãã䜿çšããå¿
èŠããããŸã port-forward
kubectlã§ã ãµãŒãã¹ã«æ¥ç¶ããŠæ¥ç¶ã確èªã§ããŸãã
kubectl port-forward service/<service name> 3000:80
ããã«ïŒ
-
service/<service name>
- ãµãŒãã¹å; ç§ãã¡ã®å Žåã¯ããã§ãmy-service
; - 3000 ã¯ã³ã³ãã¥ãŒã¿äžã§éãå¿ èŠãããããŒãã§ãã
- 80 - ãã£ãŒã«ãã§æå®ãããããŒã
port
ãµãŒãã¹ã
æ¥ç¶ã確ç«ãããŠããã°ãèšå®ã¯æ£ããã§ãã
æ¥ç¶ã倱æããå Žåã¯ãã©ãã«ã«åé¡ãããããããŒããäžèŽããŠããŸããã
ãµãŒãã¹ãšIngressã®é¢ä¿
ã¢ããªã±ãŒã·ã§ã³ãžã®ã¢ã¯ã»ã¹ãæäŸãã次ã®ã¹ãããã«ã¯ãIngress ã®ã»ããã¢ãããå«ãŸããŸãã Ingress ã¯ããµãŒãã¹ãèŠã€ããŠãããããèŠã€ããŠããã«ãã©ãã£ãã¯ãèªå°ããæ¹æ³ãç¥ãå¿ èŠããããŸãã Ingress ã¯ãååãšéããŠããããŒãã«ãã£ãŠå¿ èŠãªãµãŒãã¹ãèŠã€ããŸãã
Ingress ãš Service ã®èª¬æã§ã¯ã次㮠XNUMX ã€ã®ãã©ã¡ãŒã¿ãäžèŽããå¿ èŠããããŸãã
-
servicePort
Ingress ã®ãã©ã¡ãŒã¿ã¯äžèŽããå¿ èŠããããŸãport
ãµãŒãã¹äžã -
serviceName
Ingress ã§ã¯ãã£ãŒã«ããšäžèŽããå¿ èŠããããŸãname
ãµãŒãã¹äžã
次ã®å³ã¯ãããŒãæ¥ç¶ããŸãšãããã®ã§ãã
1) ãã§ã«ãåç¥ã®ãšããããµãŒãã¹ã¯ç¹å®ã®æèŠãèããŸãã port
:
2) Ingress ã«ã¯æ¬¡ã®ãã©ã¡ãŒã¿ããããŸãã servicePort
:
3) ãã®ãã©ã¡ãŒã¿ (servicePort
) ã¯åžžã«äžèŽããå¿
èŠããããŸã port
ãµãŒãã¹å®çŸ©å
:
4) ãµãŒãã¹ã§ããŒã 80 ãæå®ãããŠããå Žåã¯ã次ã®ããšãå¿
èŠã§ãã servicePort
ã 80 ã«çããã£ã:
å®éã«ã¯ã次ã®è¡ã«æ³šæããå¿
èŠããããŸãã
apiVersion: v1
kind: Service
metadata:
name: my-service # <<<
spec:
ports:
- port: 80 # <<<
targetPort: 8080
selector:
any-name: my-app
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- http:
paths:
- backend:
serviceName: my-service # <<<
servicePort: 80 # <<<
path: /
Ingress ãå®è¡äžãã©ããã確èªããã«ã¯ã©ãããã°ããã§ãã?
ã¡ãœããã䜿çšã§ããŸã kubectl port-forward
ãã ãããµãŒãã¹ã®ä»£ããã« Ingress ã³ã³ãããŒã©ãŒã«æ¥ç¶ããå¿
èŠããããŸãã
ãŸããIngress ã³ã³ãããŒã©ãŒã䜿çšããŠãããã®ååã確èªããå¿ èŠããããŸãã
kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS
kube-system coredns-5644d7b6d9-jn7cq 1/1 Running
kube-system etcd-minikube 1/1 Running
kube-system kube-apiserver-minikube 1/1 Running
kube-system kube-controller-manager-minikube 1/1 Running
kube-system kube-proxy-zvf2h 1/1 Running
kube-system kube-scheduler-minikube 1/1 Running
kube-system nginx-ingress-controller-6fc5bcc 1/1 Running
Ingress ããããèŠã€ã㊠(å¥ã®åå空éã«ããå¯èœæ§ããããŸã)ãã³ãã³ããå®è¡ããŸãã describe
ããŒãçªå·ã確èªããã«ã¯:
kubectl describe pod nginx-ingress-controller-6fc5bcc
--namespace kube-system
| grep Ports
Ports: 80/TCP, 443/TCP, 18080/TCP
æåŸã«ããããã«æ¥ç¶ããŸãã
kubectl port-forward nginx-ingress-controller-6fc5bcc 3000:80 --namespace kube-system
ããã§ãã³ã³ãã¥ãŒã¿ãŒã®ããŒã 3000 ã«ãªã¯ãšã¹ããéä¿¡ãããã³ã«ãIngress ã³ã³ãããŒã©ãŒã䜿çšããŠãããã®ããŒã 80 ã«è»¢éãããããã«ãªããŸãã ã«è¡ãããšã§
ããŒãã®æŠèŠ
ã©ã®ããŒããšã©ãã«ãäžèŽããå¿ èŠãããããããäžåºŠæãåºããŠãã ããã
- ãµãŒãã¹å®çŸ©å ã®ã»ã¬ã¯ã¿ãŒã¯ãããã®ã©ãã«ãšäžèŽããå¿ èŠããããŸãã
-
targetPort
å®çŸ©ã§ã¯ãµãŒãã¹ã¯äžèŽããå¿ èŠããããŸãcontainerPort
ãããå ã®ã³ã³ããã -
port
å®çŸ©ã§ã¯ããµãŒãã¹ã¯äœã§ãããŸããŸããã ç°ãªããµãŒãã¹ã¯ç°ãªã IP ã¢ãã¬ã¹ãæã£ãŠãããããåãããŒãã䜿çšã§ããŸãã -
servicePort
ã€ã³ã°ã¬ã¹ã¯äžèŽããå¿ èŠããããŸãport
ãµãŒãã¹ã®å®çŸ©ã«ãããŠã - ãµãŒãã¹åã¯ãã£ãŒã«ããšäžèŽããå¿
èŠããããŸã
serviceName
ã€ã³ã°ã¬ã¹ã§ã
æ®å¿µãªãããYAML æ§æãé©åã«æ§ç¯ããæ¹æ³ãç¥ãã ãã§ã¯ååã§ã¯ãããŸããã
ç©äºãããŸããããªãå Žåã¯ã©ããªããŸãã?
ããããèµ·åããªãããã¯ã©ãã·ã¥ããå¯èœæ§ããããŸãã
Kubernetes ã§ã¢ããªã±ãŒã·ã§ã³ã®åé¡ã蚺æãã 3 ã€ã®ã¹ããã
ãããã€ã¡ã³ãã®ãããã°ãéå§ããåã«ãKubernetes ãã©ã®ããã«æ©èœããããããç解ããå¿ èŠããããŸãã
K8s ã«ããŠã³ããŒããããåã¢ããªã±ãŒã·ã§ã³ã«ã¯ XNUMX ã€ã®ã³ã³ããŒãã³ãããããããäžçªäžããå§ããŠç¹å®ã®é åºã§ãããã°ããå¿ èŠããããŸãã
- ãŸãããããåäœããŠããããšã確èªããŠãã...
- ãµãŒãã¹ããããã«ãã©ãã£ãã¯ãäŸçµŠããŠãããã©ããã確èªããŠãã...
- Ingress ãæ£ããèšå®ãããŠãããã©ããã確èªããŸãã
èŠèŠçè¡šçŸ:
1) åé¡ãæ ¹æ¬ããæ¢ãå§ããå¿
èŠããããŸãã ãŸããããã«ã¹ããŒã¿ã¹ãããããšã確èªããŸã Ready
О Running
:
2) ãããã®æºåãã§ããŠããå Žå (Ready
)ããµãŒãã¹ããããéã§ãã©ãã£ãã¯ãåæ£ãããã©ããã確èªããå¿
èŠããããŸãã
3) æåŸã«ããµãŒãã¹ãš Ingress ã®éã®æ¥ç¶ãåæããå¿
èŠããããŸãã
1. ãããã®èšºæ
ã»ãšãã©ã®å Žåãåé¡ã¯ãããã«é¢é£ããŠããŸãã ãããã次ã®ããã«ãªã¹ããããŠããããšã確èªããŠãã ãã Ready
О Running
ã ããã¯ã次ã®ã³ãã³ãã䜿çšããŠç¢ºèªã§ããŸãã
kubectl get pods
NAME READY STATUS RESTARTS AGE
app1 0/1 ImagePullBackOff 0 47h
app2 0/1 Error 0 47h
app3-76f9fcd46b-xbv4k 1/1 Running 1 47h
äžèšã®ã³ãã³ãåºåã§ã¯ãæåŸã®ãããã¯æ¬¡ã®ããã«ãªã¹ããããŠããŸãã Running
О Ready
ãã ããä»ã® XNUMX ã€ã¯åœãŠã¯ãŸããŸããã
äœãééã£ãŠããã®ããã©ã®ããã«ç解ããã°ããã§ãããã?
ãããã®èšºæã«åœ¹ç«ã€ã³ãã³ãã XNUMX ã€ãããŸãã
-
kubectl logs <ÐžÐŒÑ pod'а>
ãããå ã®ã³ã³ãããããã°ãæœåºã§ããŸãã -
kubectl describe pod <ÐžÐŒÑ pod'а>
ãããã«é¢é£ä»ããããã€ãã³ãã®ãªã¹ãã衚瀺ã§ããŸãã -
kubectl get pod <ÐžÐŒÑ pod'а>
Kubernetes ã«ä¿åãããŠãããããã® YAML æ§æãååŸã§ããŸãã -
kubectl exec -ti <ÐžÐŒÑ pod'а> bash
ããã ã³ã³ããã® XNUMX ã€ã§å¯Ÿè©±åã³ãã³ã ã·ã§ã«ãèµ·åã§ããŸãã
ã©ããéžã¶ã¹ãã§ãã?
å®éã®ãšãããæ®éçãªã³ãã³ãã¯ååšããŸããã ããããçµã¿åãããŠäœ¿çšââããå¿ èŠããããŸãã
å žåçãªãããã®åé¡
ããã ãšã©ãŒã«ã¯ãèµ·åãšã©ãŒãšå®è¡æãšã©ãŒã® XNUMX ã€ã®äž»ãªã¿ã€ãããããŸãã
èµ·åãšã©ãŒ:
-
ImagePullBackoff
-
ImageInspectError
-
ErrImagePull
-
ErrImageNeverPull
-
RegistryUnavailable
-
InvalidImageName
å®è¡æãšã©ãŒ:
-
CrashLoopBackOff
-
RunContainerError
-
KillContainerError
-
VerifyNonRootError
-
RunInitContainerError
-
CreatePodSandboxError
-
ConfigPodSandboxError
-
KillPodSandboxError
-
SetupNetworkError
-
TeardownNetworkError
äžéšã®ãšã©ãŒã¯ä»ã®ãšã©ãŒãããäžè¬çã§ãã ããã§ã¯ãæãäžè¬çãªãšã©ãŒãšãã®ä¿®æ£æ¹æ³ãããã€ã玹ä»ããŸãã
ç»åãã«ããã¯ãªã
ãã®ãšã©ãŒã¯ãKubernetes ãããã ã³ã³ãããŒã® XNUMX ã€ã®ã€ã¡ãŒãžãååŸã§ããªãå Žåã«çºçããŸãã ãã®æãäžè¬çãªçç±ã¯æ¬¡ã® XNUMX ã€ã§ãã
- ç»åã®ååãééã£ãŠããŸããããšãã°ãç»åãééããããç»åãååšããŸããã
- ååšããªãã¿ã°ãç»åã«æå®ãããŸããã
- ã€ã¡ãŒãžã¯ãã©ã€ããŒã ã¬ãžã¹ããªã«ä¿åãããŠãããKubernetes ã«ã¯ããã«ã¢ã¯ã»ã¹ããæš©éããããŸããã
æåã® XNUMX ã€ã®çç±ã¯ç°¡åã«æé€ã§ããŸããã€ã¡ãŒãžåãšã¿ã°ãä¿®æ£ããã ãã§ãã åŸè
ã®å ŽåãSecret ã«éããããã¬ãžã¹ããªã®èªèšŒæ
å ±ãå
¥åãããããã«ãã®ã¬ãžã¹ããªãžã®ãªã³ã¯ãè¿œå ããå¿
èŠããããŸãã Kubernetes ããã¥ã¡ã³ãå
ã¯ã©ãã·ã¥ ã«ãŒã ããã¯ãªã
Kubenetes ããšã©ãŒãã¹ããŒãã CrashLoopBackOff
ã³ã³ãããèµ·åã§ããªãå Žåã ããã¯éåžžã次ã®å Žåã«çºçããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã«ã¯èµ·åã劚ãããã°ããããŸãã
- ã³ã³ãã
æ£ããæ§æãããŠããªã ; - Liveness ãã¹ããäœåºŠã倱æããŸããã
倱æã®çç±ã調ã¹ãã«ã¯ãã³ã³ãããããã°ã«ã¢ã¯ã»ã¹ããå¿ èŠããããŸãã ã³ã³ãããŒã®åèµ·åãéãããããã«ãã°ã«ã¢ã¯ã»ã¹ããããšãé£ããå Žåã¯ã次ã®ã³ãã³ãã䜿çšã§ããŸãã
kubectl logs <pod-name> --previous
ã³ã³ããã®åã®ç¶æ ããã®ãšã©ãŒ ã¡ãã»ãŒãžã衚瀺ãããŸãã
RunContainerError
ãã®ãšã©ãŒã¯ãã³ã³ãããŒã®èµ·åã«å€±æããå Žåã«çºçããŸãã ã¢ããªã±ãŒã·ã§ã³ãèµ·åãããçŽåã®ç¬éã«çžåœããŸãã ããã¯éåžžã次ã®ãããªèª€ã£ãèšå®ãåå ã§çºçããŸãã
- ConfigMap ã Secrets ãªã©ã®ååšããªãããªã¥ãŒã ãããŠã³ãããããšããŸããã
- èªã¿åãå°çšããªã¥ãŒã ãèªã¿åã/æžã蟌ã¿ãšããŠããŠã³ãããããšããŸãã
ããŒã ã¯ãã®ãããªãšã©ãŒãåæããã®ã«é©ããŠããŸã kubectl describe pod <pod-name>
.
ãããã¯ä¿çç¶æ ã§ã
ãããã¯äœæããããšããã®ç¶æ
ã®ãŸãŸã«ãªããŸãã Pending
.
ãªããããèµ·ãã£ãŠããã®ã§ããïŒ
èããããçç±ã¯æ¬¡ã®ãšããã§ã (ã¹ã±ãžã¥ãŒã©ãŒãæ£åžžã«åäœããŠãããšæ³å®ããŠããŸã)ã
- ã¯ã©ã¹ã¿ãŒã«ã¯ãããããå®è¡ããããã®ååãªãªãœãŒã¹ (åŠçèœåãã¡ã¢ãªãªã©) ããããŸããã
- ãªããžã§ã¯ãã¯é©åãªåå空éã«ã€ã³ã¹ããŒã«ãããŸã
ResourceQuota
ããããäœæãããšãåå空éãã¯ã©ãŒã¿ãè¶ ããŠããŸããŸãã - ãããã¯ä¿çäžã«ãã€ã³ããããŠããŸã
PersistentVolumeClaim
.
ãã®å Žåãã³ãã³ãã䜿çšããããšããå§ãããŸã kubectl describe
ãããŠã»ã¯ã·ã§ã³ã確èªããŠãã ãã Events
:
kubectl describe pod <pod name>
é¢é£ãããšã©ãŒã®å Žå ResourceQuotas
ãã³ãã³ãã䜿çšããŠã¯ã©ã¹ã¿ãŒã®ãã°ã衚瀺ããããšããå§ãããŸãã
kubectl get events --sort-by=.metadata.creationTimestamp
ãããã®æºåãã§ããŠããŸãã
ãããã次ã®ããã«ãªã¹ããããŠããå Žå Running
ç¶æ
ã§ã¯ãããŸãããã Ready
ãæºåãæŽã£ãŠãããã©ããã確èªããããšãæå³ããŸã (ã¬ãã£ãã¹ãããŒã) 倱æããŸãã
ãããçºçãããšããããã¯ãµãŒãã¹ã«æ¥ç¶ãããããã«ãã©ãã£ãã¯ãæµããªããªããŸãã æºåãã¹ãã®å€±æã¯ãã¢ããªã±ãŒã·ã§ã³ã®åé¡ãåå ã§çºçããŸãã ãã®å Žåããšã©ãŒãèŠã€ããã«ã¯ãã»ã¯ã·ã§ã³ãåæããå¿
èŠããããŸãã Events
ã³ãã³ãåºå㧠kubectl describe
.
2. ãµãŒãã¹èšºæ
ãããã次ã®ããã«ãªã¹ããããŠããå Žå Running
О Ready
, ããã§ãã¢ããªã±ãŒã·ã§ã³ããã®å¿çããªãå Žåã¯ããµãŒãã¹ã®èšå®ã確èªããå¿
èŠããããŸãã
ãµãŒãã¹ã¯ãã©ãã«ã«å¿ããŠãããã«ãã©ãã£ãã¯ãã«ãŒãã£ã³ã°ãã責任ããããŸãã ãããã£ãŠãæåã«è¡ãå¿ èŠãããã®ã¯ããµãŒãã¹ã§åäœãããããã®æ°ã確èªããããšã§ãã ãããè¡ãã«ã¯ããµãŒãã¹å ã®ãšã³ããã€ã³ãã確èªããŸãã
kubectl describe service <service-name> | grep Endpoints
ãšã³ããã€ã³ãã¯æ¬¡ã®åœ¢åŒã®å€ã®ãã¢ã§ãã <IP-аЎÑеÑ:пПÑÑ>
ã§ãããå°ãªããšã XNUMX ã€ã®ãã®ãããªãã¢ãåºåã«ååšããå¿
èŠããããŸã (ã€ãŸããå°ãªããšã XNUMX ã€ã®ãããããµãŒãã¹ã§åäœããŸã)ã
If ã»ã¯ã·ã§ã³ Endpoins
空ã®å Žåã¯ã次㮠XNUMX ã€ã®ãªãã·ã§ã³ãå¯èœã§ãã
- æ£ããã©ãã«ãæã€ãããããããŸãã (ãã³ã: åå空éãæ£ããéžæãããŠãããã©ããã確èªããŠãã ãã)ã
- ã»ã¬ã¯ã¿å ã®ãµãŒãã¹ã©ãã«ã«èª€ãããããŸãã
ãšã³ããã€ã³ãã®ãªã¹ãã衚瀺ãããŠãã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ã§ããªãå Žåãããããåå ã¯æ¬¡ã®ãã°ã§ãã targetPort
ãµãŒãã¹ã®èª¬æã«èšèŒãããŠããŸãã
ãµãŒãã¹ã®æ©èœã確èªããã«ã¯ã©ãããã°ããã§ãã?
ãµãŒãã¹ã®çš®é¡ã«é¢ä¿ãªãã次ã®ã³ãã³ãã䜿çšã§ããŸãã kubectl port-forward
ããã«æ¥ç¶ããã«ã¯:
kubectl port-forward service/<service-name> 3000:80
ããã«ïŒ
-
<service-name>
- ãµãŒãã¹å; - 3000 ã¯ã³ã³ãã¥ãŒã¿äžã§éãããŒãã§ãã
- 80 - ãµãŒãã¹åŽã®ããŒãã
3. ã€ã³ã°ã¬ã¹èšºæ
ãããŸã§èªãã æ¹ã¯æ¬¡ã®ããšãè¡ã£ãŠãã ããã
- ãããã¯æ¬¡ã®ããã«ãªã¹ããããŸã
Running
ОReady
; - ãµãŒãã¹ã¯ãã©ãã£ãã¯ããããéã§æ£åžžã«åæ£ããŸãã
ãã ããäŸç¶ãšããŠã¢ããªã«ã¢ã¯ã»ã¹ã§ããŸããã
ããã¯ãIngress ã³ã³ãããŒã©ãŒãæ£ããæ§æãããŠããªãå¯èœæ§ãé«ãããšãæå³ããŸãã Ingress ã³ã³ãããŒã©ãŒã¯ã¯ã©ã¹ã¿ãŒå ã®ãµãŒãããŒã㣠ã³ã³ããŒãã³ãã§ããããããã®ã¿ã€ãã«å¿ããŠç°ãªããããã°æ¹æ³ããããŸãã
ãã ããç¹å¥ãªããŒã«ã䜿çšã㊠Ingress ãæ§æããåã«ãéåžžã«ç°¡åãªæäœãè¡ãããšãã§ããŸãã ã€ã³ã°ã¬ã¹ã§ã®äœ¿çš serviceName
О servicePort
ãµãŒãã¹ã«æ¥ç¶ããŸãã æ£ããæ§æãããŠãããã©ããã確èªããå¿
èŠããããŸãã ããã¯ã次ã®ã³ãã³ãã䜿çšããŠå®è¡ã§ããŸãã
kubectl describe ingress <ingress-name>
If å Backend
空ã®å Žåãæ§æãšã©ãŒã®å¯èœæ§ãé«ããªããŸãã ããã¯ãšã³ããé
眮ãããŠããã«ããããããã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ã§ããªãå Žåãåé¡ã¯æ¬¡ã®ããšã«é¢é£ããŠããå¯èœæ§ããããŸãã
- å ¬å ±ã®ã€ã³ã¿ãŒãããããã®ã€ã³ã°ã¬ã¹ ã¢ã¯ã»ã·ããªãã£èšå®ã
- ãããªãã¯ã€ã³ã¿ãŒãããããã¯ã©ã¹ã¿ãŒã®ã¢ã¯ã»ã·ããªãã£èšå®ãå€æŽããŸãã
Ingress ãããã«çŽæ¥æ¥ç¶ããããšã§ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®åé¡ãç¹å®ã§ããŸãã ãããè¡ãã«ã¯ããŸã Ingress Controller ããããèŠã€ããŸã (å¥ã®åå空éã«ããå ŽåããããŸã)ã
kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS
kube-system coredns-5644d7b6d9-jn7cq 1/1 Running
kube-system etcd-minikube 1/1 Running
kube-system kube-apiserver-minikube 1/1 Running
kube-system kube-controller-manager-minikube 1/1 Running
kube-system kube-proxy-zvf2h 1/1 Running
kube-system kube-scheduler-minikube 1/1 Running
kube-system nginx-ingress-controller-6fc5bcc 1/1 Running
ã³ãã³ãã䜿çšãã describe
ããŒããèšå®ããã«ã¯:
kubectl describe pod nginx-ingress-controller-6fc5bcc
--namespace kube-system
| grep Ports
æåŸã«ããããã«æ¥ç¶ããŸãã
kubectl port-forward nginx-ingress-controller-6fc5bcc 3000:80 --namespace kube-system
ããã§ãã³ã³ãã¥ãŒã¿ãŒäžã®ããŒã 3000 ãžã®ãã¹ãŠã®ãªã¯ãšã¹ãããããã®ããŒã 80 ã«ãªãã€ã¬ã¯ããããŸãã
ä»ã¯æ©èœããŸããïŒ
- ãã¯ããã®å Žåãåé¡ã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ã«ãããŸãã ãã©ãã£ãã¯ãã¯ã©ã¹ã¿ãŒã«ã©ã®ããã«ã«ãŒãã£ã³ã°ãããããæ£ç¢ºã«èª¿ã¹ãå¿ èŠããããŸãã
- ããã§ãªãå Žåã¯ãIngress ã³ã³ãããŒã©ãŒã«åé¡ããããŸãã
Ingress ã³ã³ãããŒã©ãŒãåäœãããããšãã§ããªãå Žåã¯ããããã°ããå¿ èŠããããŸãã
Ingress ã³ã³ãããŒã©ãŒã«ã¯ããŸããŸãªçš®é¡ããããŸãã æã人æ°ã®ãããã®ã¯ãNginxãHAProxyãTraefik ãªã©ã§ãã (æ¢åã®ãœãªã¥ãŒã·ã§ã³ã®è©³çŽ°ã«ã€ããŠã¯ãã
Ingress Nginx ã³ã³ãããŒã©ãŒã®ãããã°
Ingress-nginx ãããžã§ã¯ãã«ã¯å
¬åŒã® kubectl ingress-nginx
次ã®çšéã«äœ¿çšã§ããŸãã
- ãã°ãããã¯ãšã³ãã蚌ææžãªã©ã®åæã
- Ingress ãžã®æ¥ç¶ã
- çŸåšã®æ§æãæ€èšäžã§ãã
次㮠XNUMX ã€ã®ã³ãã³ãã¯ããã«åœ¹ç«ã¡ãŸãã
-
kubectl ingress-nginx lint
â å°åænginx.conf
; -
kubectl ingress-nginx backend
â ããã¯ãšã³ããæ¢çŽ¢ããŸãïŒãšåæ§ïŒkubectl describe ingress <ingress-name>
); -
kubectl ingress-nginx logs
â ãã°ããã§ãã¯ããŸãã
å Žåã«ãã£ãŠã¯ããã©ã°ã䜿çšã㊠Ingress ã³ã³ãããŒã©ãŒã®æ£ããåå空éãæå®ããå¿
èŠãããããšã«æ³šæããŠãã ããã --namespace <name>
.
ãµããªãŒ
ã©ãããå§ããã°ãããåãããªãå ŽåãKubernetes ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã¯å°é£ã«ãªãå¯èœæ§ããããŸãã åé¡ã«ã¯åžžã«ããã ã¢ããã§åãçµãå¿ èŠããããŸãããããããå§ããŠããµãŒãã¹ãš Ingress ã«é²ã¿ãŸãã ãã®èšäºã§èª¬æãããããã°ææ³ã¯ã次ã®ãããªä»ã®ãªããžã§ã¯ãã«ãé©çšã§ããŸãã
- ã¢ã€ãã« ãžã§ããš Cron ãžã§ãã
- StatefulSet ãš DaemonSetã
æè¬ã®æãè¡šããŸã
翻蚳è ããã®è¿œäŒž
ç§ãã¡ã®ããã°ããèªã¿ãã ãã:
- «
Kubernetes ãããã§ãããã°ããããã® kubectl-debug ãã©ã°ã€ã³ "; - «
Kubernetes ã®éçšã«ããã 6 ã€ã®èå³æ·±ãã·ã¹ãã ãã° [ããã³ãã®è§£æ±ºç] "; - «
Kubernetes äžã§å®è¡ãããã¢ããªã±ãŒã·ã§ã³ã®éçºè åãã®ããŒã« "; - «
SRE ã®æ¥åžžç掻ããåŸã 6 ã€ã®å®è·µçãªã¹ããŒãªãŒ 'ã
åºæïŒ habr.com