เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹. เปเบ›.: เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบชเปˆเบงเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบ‚เบญเบ‡โ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เป„เบ”เป‰โ€‹เบˆเบฑเบ”โ€‹เบžเบตเบกโ€‹เบกเบฒโ€‹เปƒเบ™โ€‹เป‚เบ”โ€‹เป€เบกเบ™โ€‹เบชเบฒโ€‹เบ—เบฒโ€‹เบฅเบฐโ€‹เบ™เบฐโ€‹ เบฎเบฝเบ™โ€‹เบฎเบนเป‰ 8s, เบเบฒเบ™เบเบถเบเบญเบปเบšเบฎเบปเบกเบšเปเบฅเบดเบชเบฑเบ”เปเบฅเบฐเบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Kubernetes. เปƒเบ™เบ™เบฑเป‰เบ™, Daniele Polencic, เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™, เปเบšเปˆเบ‡เบ›เบฑเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบฒเบ‡เบชเบฒเบเบ•เบฒเบเปˆเบฝเบงเบเบฑเบšเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเบ—เบปเปˆเบงเป„เบ›เบเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบเบธเปˆเบก K8s.

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

TL;DR: เบ™เบตเป‰เปเบกเปˆเบ™เปเบœเบ™เบงเบฒเบ”เบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบ”เบตเบšเบฑเบเบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปƒเบ™ Kubernetes:

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

เปเบœเบ™เบœเบฑเบ‡เบงเบฝเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŠเบญเบเบซเบฒ เปเบฅเบฐเปเบเป‰เป„เบ‚เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบเบธเปˆเบก. เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš (เปƒเบ™เบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”) เปเบกเปˆเบ™เบกเบตเบขเบนเปˆ PDF ะธ เบ•เบฒเบกเบฎเบนเบš.

เป€เบกเบทเปˆเบญเบ™เบณเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป„เบ›เปƒเบชเปˆ Kubernetes, เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบกเบตเบชเบฒเบกเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบณเบ™เบปเบ”:

  • เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” - เบ™เบตเป‰เปเบกเปˆเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบชเบนเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบชเปเบฒเป€เบ™เบปเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบเบฑเบ;
  • เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ โ€” เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เบžเบฒเบเปƒเบ™เบ—เบตเปˆเปเบˆเบเบขเบฒเบเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฑเบ;
  • Ingress โ€” เบฅเบฒเบโ€‹เบฅเบฐโ€‹เบญเบฝเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบˆเบฐโ€‹เบฅเบฒโ€‹เบˆเบญเบ™โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบˆเบฒเบโ€‹เป‚เบฅเบโ€‹เบžเบฒเบโ€‹เบ™เบญเบโ€‹เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹.

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบซเบผเบธเบšเปเบšเบšเบเบฃเบฒเบŸเบดเบเบ”เปˆเบงเบ™:

1) เปƒเบ™ Kubernetes, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบˆเบฒเบเป‚เบฅเบเบžเบฒเบเบ™เบญเบเบœเปˆเบฒเบ™เบชเบญเบ‡เบŠเบฑเป‰เบ™เบ‚เบญเบ‡เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”: เบžเบฒเบเปƒเบ™เปเบฅเบฐเบžเบฒเบเบ™เบญเบ.

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

2) เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบžเบฒเบเปƒเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบšเปเบฅเบดเบเบฒเบ™, เบžเบฒเบเบ™เบญเบเป€เบญเบตเป‰เบ™เบงเปˆเบฒ Ingress.

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

3) เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเป‰เบฒเบ‡เบเบฑเบเปเบฅเบฐเบ•เบดเบ”เบ•เบฒเบกเบžเบงเบเบกเบฑเบ™ (เบžเบงเบเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡).

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฑเบšเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ a la เบชเบฐเบšเบฒเบเบ”เบตเป‚เบฅเบ. เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ 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?
  • เบ‚เป‰เบญเบเบ„เบงเบ™เบชเป‰เบฒเบ‡เบžเบญเบ”เปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบ‚เบฑเบ”เปเบเป‰เบ‡?
  • เบŠเบทเปˆเบ›เป‰เบฒเบเบŠเบทเปˆเบชเบณเบ„เบฑเบ™เบšเป? เบžเบงเบเป€เบ‚เบปเบฒเบ„เบงเบ™เบˆเบฐเบ„เบทเบเบฑเบ™เบขเบนเปˆเบ—เบปเปˆเบงเบ—เบธเบเปเบซเปˆเบ‡เบšเป?

เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบชเบธเบกเปƒเบชเปˆเบเบฒเบ™ debugging, เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบทเปˆเบงเบดเบ—เบตเบเบฒเบ™เบชเบฒเบกเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบ™. เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™.

เบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ™เปเบฒเป„เบ›เปƒเบŠเป‰เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™

เบ—เปˆเบฒเบ™เบˆเบฐเบ›เบฐเบซเบฅเบฒเบ”เปƒเบˆ, เปเบ•เปˆเบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบšเปเปˆเป„เบ”เป‰เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบ™เบ—เบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบŠเบตเป‰เป‚เบ”เบเบเบปเบ‡เปƒเบชเปˆ Pods, เบ‚เป‰เบฒเบกเบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™ Pods เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™. เบชเบฒเบกโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบ„เบงเบ™โ€‹เบˆเบทเปˆโ€‹เบˆเปเบฒโ€‹:

  1. เบ•เบปเบงเป€เบฅเบทเบญเบ (selector) เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบšเบ›เป‰เบฒเบ Pod เบขเปˆเบฒเบ‡เปœเป‰เบญเบเปœเบถเปˆเบ‡เบญเบฑเบ™.
  2. targetPort เบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบ™ containerPort เบšเบฑเบ™เบˆเบธเบžเบฒเบเปƒเบ™ Pod เป„เบ”เป‰.
  3. port เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบญเบฑเบ™เปƒเบ”เบเปเป„เบ”เป‰. เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบžเบญเบ”เบ”เบฝเบงเบเบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบ—เบตเปˆเบขเบนเปˆ IP เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เปเบœเบ™เบงเบฒเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ—เบฑเบ‡เปเบปเบ”เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เปƒเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบŸเบดเบ:

1) เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบงเปˆเบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ™เปเบฒเบžเบฒเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป„เบ›เบซเบฒเบเบฑเบเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™:

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

2) เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบเบฑเบ, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบฅเบฐเบšเบธ containerPort เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ–เบฑเบ‡เปƒเบ™เบเบฑเบ:

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

3) เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบฅเบฐเบšเบธ port ะธ targetPort. เปเบ•เปˆเบญเบฑเบ™เปƒเบ”เบ—เบตเปˆเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต?

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

4) เบœเปˆเบฒเบ™ targetPort. เบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบ™ containerPort.

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

5) เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒ port 3000 เป€เบ›เบตเบ”เบขเบนเปˆเปƒเบ™ container. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ„เปˆเบฒ targetPort เบ„เบงเบ™เบˆเบฐเบ„เบทเบเบฑเบ™.

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

เปƒเบ™เป„เบŸเบฅเปŒ 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?

เบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบšเบ›เป‰เบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ Pod เบชเบฐเป€เปเบต, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบ Deployment เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฒเบกเบเบฑเบ.

เปƒเบซเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ—เปˆเบฒเบ™เป„เบ”เป‰เป€เบฎเบฑเบ”เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เบเบงเบ”เป€เบšเบดเปˆเบ‡เบžเบงเบเบกเบฑเบ™เปเบ™เบงเปƒเบ”?

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเบงเบ”เป€เบšเบดเปˆเบ‡เบ›เป‰เบฒเบ pod เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

kubectl get pods --show-labels

เบซเบผเบท, เบ–เป‰เบฒ pods เป€เบ›เบฑเบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡:

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 เบชเบญเบ‡เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบ™:

  1. servicePort เปƒเบ™ Ingress เบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต port เปƒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™;
  2. serviceName เปƒเบ™ Ingress เบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบšเบžเบฒเบเบชเบฐเบซเบ™เบฒเบก name เปƒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™.

เปเบœเบ™เบงเบฒเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบชเบฐเบซเบผเบธเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบžเบญเบ”:

1) เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบฎเบนเป‰เปเบฅเป‰เบง, เบšเปเบฅเบดเบเบฒเบ™เบŸเบฑเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™ port:

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

2) Ingress เบกเบตเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ servicePort:

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

3โ€‹) เบ•เบปเบงโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบเบฒเบ™โ€‹เบ™เบตเป‰ (servicePort) เบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบ™เบชเบฐเป€เปเบต port เปƒเบ™โ€‹เบ„เปเบฒโ€‹เบ™เบดโ€‹เบเบฒเบกโ€‹เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹:

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

4) เบ–เป‰เบฒเบžเบญเบ” 80 เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบšเปเบฅเบดเบเบฒเบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™ servicePort เบเบฑเบ‡เป€เบ—เบปเปˆเบฒเบเบฑเบš 80:

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบšเบชเบฒเบเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

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 pod (เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบขเบนเปˆเปƒเบ™ namespace เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™) เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ describeเป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบ•เบปเบงเป€เบฅเบเบ—เบตเปˆ Port:

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 เปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบกเบฑเบ™เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบ•เปเปˆเป„เบ›เบซเบฒเบžเบญเบ” 80 เบ‚เบญเบ‡เบเบฑเบเบ”เป‰เบงเบเบ•เบปเบงเบ„เบงเบšเบ„เบธเบก Ingress. เป‚เบ”เบเบเบฒเบ™เป„เบ› http://localhost:3000, เบ—เปˆเบฒเบ™เบ„เบงเบ™เบˆเบฐเป€เบซเบฑเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบชเป‰เบฒเบ‡เป‚เบ”เบเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ.

เบชเบฐเบซเบผเบธเบšเบ‚เบญเบ‡เบžเบญเบ”

เบ‚เปเปƒเบซเป‰เบˆเบทเปˆเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบงเปˆเบฒเบžเบญเบ”เปเบฅเบฐเบ›เป‰เบฒเบเบŠเบทเปˆเปƒเบ”เบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบ™:

  1. เบ•เบปเบงเป€เบฅเบทเบญเบเปƒเบ™เบ„เปเบฒเบ™เบดเบเบฒเบกเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบšเบ›เป‰เบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบเบฑเบ;
  2. targetPort เปƒเบ™เบ„เปเบฒเบ™เบดเบเบฒเบกเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบ™ containerPort เบšเบฑเบ™เบˆเบธเบžเบฒเบเปƒเบ™เบเบฑเบ;
  3. port เปƒเบ™เบ„เปเบฒเบ™เบดเบเบฒเบกเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบญเบฑเบ™เปƒเบ”เบเปเป„เบ”เป‰. เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบžเบญเบ”เบ”เบฝเบงเบเบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบ—เบตเปˆเบขเบนเปˆ IP เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™;
  4. servicePort Ingress เบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบ™ port เปƒเบ™เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™;
  5. เบŠเบทเปˆเบšเปเบฅเบดเบเบฒเบ™เบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบšเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™ serviceName เปƒเบ™ Ingress.

เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบกเบฑเบ™เบšเปเปˆเบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เบˆเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ YAML เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡.

เบˆเบฐเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเบชเบดเปˆเบ‡เบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ”?

เบเบฑเบเบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบฅเบตเปˆเบกเบซเบผเบทเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ‚เบฑเบ”.

3 เบ‚เบฑเป‰เบ™เบ•เบญเบ™เปƒเบ™เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบšเบฑเบ™เบซเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบ™ Kubernetes

เบเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเบ”เบตเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเป€เบฎเบฑเบ”เบงเบฝเบ Kubernetes.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเปเบ•เปˆเบฅเบฐเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบ”เบฒเบงเป‚เบซเบฅเบ”เปƒเบ™ K8s เบกเบตเบชเบฒเบกเบญเบปเบ‡เบ›เบฐเบเบญเบš, เบžเบงเบเบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบ–เบทเบเปเบเป‰เป„เบ‚เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™, เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเบฅเบธเปˆเบกเบชเบธเบ”.

  1. เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบ—เปˆเบฒเบ™ เบˆเบณ เป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบเบฑเบเปเบกเปˆเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เบˆเบฒเบเบ™เบฑเป‰เบ™ ...
  2. เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เปƒเบซเป‰เบเบฑเบšเบเบฑเบ, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ ...
  3. เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒ Ingress เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡.

เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบžเบฒเบš:

1) เบ—เปˆเบฒเบ™เบ„เบงเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบŠเบญเบเบซเบฒเบšเบฑเบ™เบซเบฒเบˆเบฒเบเบฅเบธเปˆเบกเบชเบธเบ”. เบ—เปเบฒเบญเบดเบ”เปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบเบฑเบเบกเบตเบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบš Ready ะธ Running:

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

2โ€‹) เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบเบฑเบโ€‹เบžเป‰เบญเบก (Ready), เบ—เปˆเบฒเบ™เบ„เบงเบ™เบŠเบญเบเบซเบฒเบงเปˆเบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฑเบ:

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

3) เบชเบธเบ”เบ—เป‰เบฒเบ, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบฅเบฐ Ingress:

เบ„เบนเปˆเบกเบทเบชเบฒเบเบ•เบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes

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เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบเปเบฅเบฐเบ™เบตเบชเปเบฒเบฅเบฑเบšเบญเบตเบเบชเบญเบ‡เบ„เบปเบ™.

เบงเบดเบ—เบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ”?

เบกเบตเบชเบตเปˆเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบช pods:

  1. kubectl logs <ะธะผั pod'ะฐ> เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฐเบเบฑเบ”เป„เบกเป‰เบ—เปˆเบญเบ™เบˆเบฒเบเบšเบฑเบ™เบˆเบธเบขเบนเปˆเปƒเบ™เบเบฑเบ;
  2. kubectl describe pod <ะธะผั pod'ะฐ> เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฑเบ;
  3. kubectl get pod <ะธะผั pod'ะฐ> เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ YAML เบ‚เบญเบ‡เบเบฑเบเบ—เบตเปˆเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ Kubernetes;
  4. kubectl exec -ti <ะธะผั pod'ะฐ> bash เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบ›เบตเบ” shell เบ„เปเบฒเบชเบฑเปˆเบ‡เปเบšเบšเป‚เบ•เป‰เบ•เบญเบšเบขเบนเปˆเปƒเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบšเบฑเบ™เบˆเบธเบเบฑเบ

เป€เบˆเบปเป‰เบฒเบ„เบงเบ™เป€เบฅเบทเบญเบเบญเบฑเบ™เปƒเบ”?

เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบšเปเปˆเบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบปเปˆเบงเป„เบ›. เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡เบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰.

เบšเบฑเบ™เบซเบฒเบเบฑเบเบ—เบปเปˆเบงเป„เบ›

เบกเบตโ€‹เบชเบญเบ‡โ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบ•เบปเป‰เบ™โ€‹เบ•เปโ€‹เบ‚เบญเบ‡โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ” pod เปเบกเปˆเบ™โ€‹: เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เบเบฒเบ™โ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เปเบฅเบฐโ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ” runtimeโ€‹.

เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เบเบฒเบ™โ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹:

  • ImagePullBackoff
  • ImageInspectError
  • ErrImagePull
  • ErrImageNeverPull
  • RegistryUnavailable
  • InvalidImageName

Runtime เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹:

  • CrashLoopBackOff
  • RunContainerError
  • KillContainerError
  • VerifyNonRootError
  • RunInitContainerError
  • CreatePodSandboxError
  • ConfigPodSandboxError
  • KillPodSandboxError
  • SetupNetworkError
  • TeardownNetworkError

เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบžเบปเบšเป€เบฅเบทเป‰เบญเบเบเบงเปˆเบฒเบ„เบปเบ™เบญเบทเปˆเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฒเบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบžเบงเบเบกเบฑเบ™.

เบฎเบนเบšเบžเบฒเบšPullBackOff

เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ™เบตเป‰เบ›เบฒเบเบปเบ”เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญ Kubernetes เบšเปเปˆเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบฎเบนเบšเบžเบฒเบšเบชเปเบฒเบฅเบฑเบšเบซเบ™เบถเปˆเบ‡เปƒเบ™เบšเบฑเบ™เบˆเบธ pod เป„เบ”เป‰. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฒเบกเป€เบซเบ”เบœเบปเบ™เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰:

  1. เบŠเบทเปˆเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเปเบกเปˆเบ™เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡ - เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เป„เบ”เป‰เป€เบฎเบฑเบ”เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบกเบฑเบ™, เบซเบผเบทเบฎเบนเบšเบžเบฒเบšเบšเปเปˆเบกเบต;
  2. เป‚เบ„เบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเปเบกเปˆเบ™เป„เบ”เป‰เบฅเบฐเบšเบธเป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเบžเบฒเบš;
  3. เบฎเบนเบšเบžเบฒเบšเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบ—เบฐเบšเบฝเบ™เบชเปˆเบงเบ™เบ•เบปเบง เปเบฅเบฐ Kubernetes เบšเปเปˆเบกเบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบกเบฑเบ™.

เบชเบญเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบเปเบฒเบˆเบฑเบ” - เบžเบฝเบ‡เปเบ•เปˆเปเบเป‰เป„เบ‚เบŠเบทเปˆเบฎเบนเบšเบžเบฒเบšเปเบฅเบฐเปเบ—เบฑเบ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบชเบธเบ”เบ—เป‰เบฒเบ, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบชเปˆเบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบˆเปเบฒเบ•เบปเบงเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบตเปˆเบ–เบทเบเบ›เบดเบ”เป„เบงเป‰เปƒเบ™เบ„เบงเบฒเบกเบฅเบฑเบšเปเบฅเบฐเป€เบžเบตเปˆเบกเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบกเบฑเบ™เปƒเบ™เบเบฑเบ. เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™ Kubernetes เบกเบตเบ•เบปเบงเบขเปˆเบฒเบ‡ เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰.

Crash Loop Back Off

Kubenetes เบ–เบดเป‰เบกเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ” CrashLoopBackOff, เบ–เป‰เบฒเบ–เบฑเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป„เบ”เป‰. เบ™เบตเป‰เบกเบฑเบเบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญ:

  1. เบกเบต bug เปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบกเบฑเบ™เบˆเบฒเบเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง;
  2. Container เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡;
  3. เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš Liveness เป„เบ”เป‰เบฅเบปเป‰เบกเป€เบซเบฅเบงเบซเบผเบฒเบเป€เบ—เบทเปˆเบญเป€เบเบตเบ™เป„เบ›.

เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบžเบฐเบเบฒเบเบฒเบกเป„เบ›เบซเบฒเป„เบกเป‰เบ—เปˆเบญเบ™เบˆเบฒเบเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเป€เบซเบ”เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเบ‚เบญเบ‡เบกเบฑเบ™. เบ–เป‰เบฒเบกเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเปƒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบšเบฑเบ™เบ—เบถเบเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ container restarts เป„เบงเป€เบเบตเบ™เป„เบ›, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

kubectl logs <pod-name> --previous

เบกเบฑเบ™เบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบˆเบฒเบ incarnation เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ‚เบญเบ‡เบšเบฑเบ™เบˆเบธ.

RunContainerError

เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป„เบ”เป‰. เบกเบฑเบ™เบเบปเบ‡เบเบฑเบšเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบเปˆเบญเบ™เบ—เบตเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบง. เบกเบฑเบ™เบกเบฑเบเบˆเบฐเป€เบเบตเบ”เบกเบฒเบˆเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบ•เบปเบงเบขเปˆเบฒเบ‡:

  • เบžเบฐเบเบฒเบเบฒเบกเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบขเบนเปˆเป€เบŠเบฑเปˆเบ™ ConfigMap เบซเบผเบทเบ„เบงเบฒเบกเบฅเบฑเบš;
  • เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเปˆเบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ›เบฐเบฅเบดเบกเบฒเบ™เบญเปˆเบฒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เป€เบ›เบฑเบ™ read-write.

เบ—เบตเบกเบ‡เบฒเบ™เปเบกเปˆเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบ”เบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง kubectl describe pod <pod-name>.

Pods เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบเบฑเบ‡เบ„เป‰เบฒเบ‡เบขเบนเปˆ

เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เปเบฅเป‰เบง, เบเบฑเบเบเบฑเบ‡เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐ Pending.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบชเบดเปˆเบ‡เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™?

เบ™เบตเป‰เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰ (เบ‚เป‰เบญเบเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ”เบต):

  1. เบเบธเปˆเบกเบšเปเปˆเบกเบตเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบžเบฝเบ‡เบžเป, เป€เบŠเบฑเปˆเบ™: เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™ เปเบฅเบฐเปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณ, เป€เบžเบทเปˆเบญเปเบฅเปˆเบ™เบžเบญเบ”.
  2. เบงเบฑเบ”เบ–เบธเป„เบ”เป‰เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™ namespace เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก ResourceQuota เปเบฅเบฐเบเบฒเบ™เบชเป‰เบฒเบ‡ pod เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰ namespace เป„เบ›เป€เบเบตเบ™เป‚เบ„เบ•เป‰เบฒ.
  3. Pod เบ–เบทเบเบœเบนเบเบกเบฑเบ”เบเบฑเบš Pending 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-ะฐะดั€ะตั:ะฟะพั€ั‚>, เปเบฅเบฐเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบซเบ™เบถเปˆเบ‡เบ„เบนเปˆเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ•เป‰เบญเบ‡เบกเบตเบขเบนเปˆเปƒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ” (เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบซเบ™เบถเปˆเบ‡เบเบฑเบเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™).

เบ–เป‰เบฒเบžเบฒเบเบชเปˆเบงเบ™ Endpoins เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ, เบชเบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰:

  1. เบšเปเปˆเบกเบตเบเบฑเบเบ—เบตเปˆเบกเบตเบ›เป‰เบฒเบเบŠเบทเปˆเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡ (เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ: เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒ namespace เบ–เบทเบเป€เบฅเบทเบญเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡);
  2. เบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบ›เป‰เบฒเบเบšเปเบฅเบดเบเบฒเบ™เบขเบนเปˆเปƒเบ™เบ•เบปเบงเป€เบฅเบทเบญเบ.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ”เปเบ•เปˆเบเบฑเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบซเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป„เบ”เป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบœเบนเป‰เบ–เบทเบเป€เบ„เบฒเบฐเบฎเป‰เบฒเบเบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเปเบกเปˆเบ™เปเบกเบ‡เป„เบกเป‰เปƒเบ™. targetPort เปƒเบ™เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™.

เบงเบดเบ—เบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™?

เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ kubectl port-forward เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบกเบฑเบ™:

kubectl port-forward service/<service-name> 3000:80

เบ—เบตเปˆเบ™เบตเป‰:

  • <service-name> โ€” เบŠเบทเปˆโ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹;
  • 3000 เปเบกเปˆเบ™เบžเบญเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบ›เบตเบ”เบขเบนเปˆเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบต;
  • 80 - เบžเบญเบ”เบขเบนเปˆเบ”เป‰เบฒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™.

3. เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบช Ingress

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป„เบ”เป‰เบญเปˆเบฒเบ™เบกเบฒเบฎเบญเบ”เบ™เบตเป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™:

  • เบเบฑเบเปเบกเปˆเบ™เบฅเบฐเบšเบธเป„เบงเป‰เป€เบ›เบฑเบ™ Running ะธ Ready;
  • เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹เบชเบปเบšโ€‹เบœเบปเบ™โ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”โ€‹เบเบฒเบ™โ€‹เปเบœเปˆโ€‹เบเบฐโ€‹เบˆเบฒเบโ€‹เปƒเบ™โ€‹เบ—เบปเปˆเบง podsโ€‹.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ—เปˆเบฒเบ™เบเบฑเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบซเบฒ app เป„เบ”เป‰.

เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ•เบปเบงเบ„เบงเบšเบ„เบธเบก Ingress เบชเปˆเบงเบ™เบซเบผเบฒเบเบญเบฒเบ”เบˆเบฐเบšเปเปˆเบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ•เบปเบงเบ„เบงเบšเบ„เบธเบก Ingress เป€เบ›เบฑเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบกเปƒเบ™เบเบธเปˆเบก, เบกเบตเบงเบดเบ—เบตเบเบฒเบ™ debugging เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบกเบฑเบ™.

เปเบ•เปˆเบเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบžเบดเป€เบชเบ”เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ” Ingress, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ. Ingress เปƒเบŠเป‰ serviceName ะธ servicePort เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™. เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡:

kubectl describe ingress <ingress-name>

เบ–เป‰เบฒเบ–เบฑเบ™ Backend เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ, เบกเบตเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเบนเบ‡เบ—เบตเปˆเบˆเบฐเป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. เบ–เป‰เบฒ backends เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ, เปเบ•เปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบเบฑเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰, เบšเบฑเบ™เบซเบฒเบญเบฒเบ”เบˆเบฐเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš:

  • Ingress เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบˆเบฒเบเบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ;
  • เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบŠเปˆเบงเบเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบธเปˆเบกเบˆเบฒเบเบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบšเบฑเบ™เบซเบฒเบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป‚เบ”เบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ”เบเบเบปเบ‡เบเบฑเบšเบเบฑเบ Ingress. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปเบฒเบญเบดเบ”เบŠเบญเบเบซเบฒ Ingress Controller pod (เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบขเบนเปˆเปƒเบ™ namespace เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™):

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, เปเบฅเบฐเบญเบทเปˆเบ™เป†. (เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เป€เบšเบดเปˆเบ‡ เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ โ€” เบ›เบฐโ€‹เบกเบฒเบ™โ€‹. เปเบ›.) เบ—เปˆเบฒเบ™เบ„เบงเบ™เป€เบšเบดเปˆเบ‡เบ„เบนเปˆเบกเบทเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ เบ‚เบฒเป€เบ‚เบปเป‰เบฒ Nginx เป€เบ›เบฑเบ™เบ•เบปเบงเบ„เบงเบšเบ„เบธเบก Ingress เบ—เบตเปˆเบ™เบดเบเบปเบกเบ—เบตเปˆเบชเบธเบ”, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฅเบงเบกเป€เบญเบปเบฒเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบกเบฑเบ™.

เบเบฒเบ™เบ”เบตเบšเบฑเบเบ•เบปเบงเบ„เบงเบšเบ„เบธเบก Ingress Nginx

เป‚เบ„เบ‡เบเบฒเบ™ Ingress-nginx เบกเบตเป€เบˆเบปเป‰เบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ plugin เบชเปเบฒเบฅเบฑเบš kubectl. เบ—เบตเบกเบ‡เบฒเบ™ kubectl ingress-nginx เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹:

  • เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบšเบฑเบ™เบ—เบถเบ, backends, เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†;
  • เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš Ingress;
  • เบเบฒเบ™โ€‹เบชเบถเบโ€‹เบชเบฒโ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เปƒเบ™โ€‹เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹.

เบชเบฒเบกเบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเป€เบˆเบปเป‰เบฒเปƒเบ™เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰:

  • kubectl ingress-nginx lint โ€” เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹ nginx.conf;
  • kubectl ingress-nginx backend โ€” เบชเบณเบซเบผเบงเบ”เป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡ (เบ„เป‰เบฒเบเบเบฑเบš kubectl describe ingress <ingress-name>);
  • kubectl ingress-nginx logs โ€” เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบšเบฑเบ™โ€‹เบ—เบถเบโ€‹.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเปƒเบ™เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบตเบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบฅเบฐเบšเบธ namespace เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบชเปเบฒเบฅเบฑเบš Ingress controller เป‚เบ”เบเปƒเบŠเป‰เบ—เบธเบ‡ --namespace <name>.

Summary

เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ Kubernetes เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ—เป‰เบฒเบ—เบฒเบเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเปƒเบช. เบ—เปˆเบฒเบ™เบชเบฐเป€เบซเบกเบตเบ„เบงเบ™เป€เบ‚เบปเป‰เบฒเบซเบฒเบšเบฑเบ™เบซเบฒเปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบฅเบธเปˆเบกเบชเบธเบ”: เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบเบฑเบ, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเป‰เบฒเบเป„เบ›เบšเปเบฅเบดเบเบฒเบ™เปเบฅเบฐ Ingress. เป€เบ•เบฑเบเบ™เบดเบเบเบฒเบ™เบ”เบตเบšเบฑเบเบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบงเบฑเบ”เบ–เบธเบญเบทเปˆเบ™เป†, เป€เบŠเบฑเปˆเบ™:

  • idle Jobs เปเบฅเบฐ CronJobs;
  • StatefulSets เปเบฅเบฐ DaemonSets.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบชเบฐเปเบ”เบ‡เบ„เบงเบฒเบกเบเบฐเบ•เบฑเบ™เบเบน Gergely Risko, Daniel Weibel ะธ Charles Christyraj เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบ„เบดเบ”เป€เบซเบฑเบ™เบ—เบตเปˆเบกเบตเบ„เบธเบ™เบ„เปˆเบฒเปเบฅเบฐเบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก.

PS เบˆเบฒเบเบ™เบฑเบเปเบ›

เบญเปˆเบฒเบ™เบเบฑเบ‡เบขเบนเปˆเปƒเบ™ blog เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™