Kubernetes рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЛ рд▓рд╛рдЧреА рдПрдХ рднрд┐рдЬреБрдЕрд▓ рдЧрд╛рдЗрдб

рдиреЛрдЯред рдЕрдиреБрд╡рд╛рджред: рдпреЛ рд▓реЗрдЦ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрдирдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВрдХреЛ рдЕрдВрд╢ рд╣реЛ рд╕рд┐рдХреНрдиреЗ 8s, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрдореНрдкрдиреАрд╣рд░реВ рд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рд╢рд╛рд╕рдХрд╣рд░реВ Kubernetes рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиред рдпрд╕рдорд╛, рдбреЗрдирд┐рдпрд▓ рдкреЛрд▓реЗрдиреНрд╕рд┐рдХ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рдмрдиреНрдзрдХ, K8s рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдорд╛рдорд▓рд╛рдорд╛ рдХреЗ рдХрджрдо рдЪрд╛рд▓реНрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рджреГрд╢реНрдп рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рд╕рд╛рдЭрд╛ рдЧрд░реНрджрдЫред

Kubernetes рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЛ рд▓рд╛рдЧреА рдПрдХ рднрд┐рдЬреБрдЕрд▓ рдЧрд╛рдЗрдб

TL; DR: рдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдЫ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ Kubernetes рдорд╛ рдбрд┐рдмрдЧ рдбрд┐рдмрдЧ рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ:

Kubernetes рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЛ рд▓рд╛рдЧреА рдПрдХ рднрд┐рдЬреБрдЕрд▓ рдЧрд╛рдЗрдб

рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд░ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдлреНрд▓реЛрдЪрд╛рд░реНрдЯред рдореВрд▓ (рдЕрдВрдЧреНрд░реЗрдЬреАрдорд╛) рдорд╛ рдЙрдкрд▓рдмреНрдз рдЫ рдкреАрдбреАрдПрдл ╨╕ рдЪрд┐рддреНрд░рдХреЛ рд░реВрдкрдорд╛.

Kubernetes рдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрджрд╛, рддрдкрд╛рдИрд▓реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рддреАрдирд╡рдЯрд╛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдЫрдиреН:

  • рддреИрдирд╛рде - рдпреЛ рдПрдХ рдкреНрд░рдХрд╛рд░рдХреЛ рдиреБрд╕реНрдЦрд╛ рд╣реЛ рдЬреБрди рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдкреЛрдб рднрдирд┐рдиреНрдЫ;
  • рд╕реЗрд╡рд╛ - рдкреЛрдбрд╣рд░реВ рдмреАрдЪ рдЯреНрд░рд╛рдлрд┐рдХ рд╡рд┐рддрд░рдг рдЧрд░реНрдиреЗ рдЖрдиреНрддрд░рд┐рдХ рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░;
  • рдЖрдХреНрд░рд╛рдордХ - рдмрд╛рд╣рд┐рд░реА рд╕рдВрд╕рд╛рд░рдмрд╛рдЯ рд╕реЗрд╡рд╛рдорд╛ рдХрд╕рд░реА рдЯреНрд░рд╛рдлрд┐рдХ рдЖрдЙрдБрдЫ рднрдиреНрдиреЗ рд╡рд┐рд╡рд░рдгред

рдпрд╣рд╛рдБ рдПрдХ рджреНрд░реБрдд рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд╕рд╛рд░рд╛рдВрд╢ рдЫ:

1) Kubernetes рдорд╛, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓реЗ рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░рд╣рд░реВрдХреЛ рджреБрдИ рддрд╣рд╣рд░реВ рдорд╛рд░реНрдлрдд рдмрд╛рд╣рд┐рд░реА рд╕рдВрд╕рд╛рд░рдмрд╛рдЯ рдЯреНрд░рд╛рдлрд┐рдХ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ: рдЖрдиреНрддрд░рд┐рдХ рд░ рдмрд╛рд╣реНрдпред

Kubernetes рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЛ рд▓рд╛рдЧреА рдПрдХ рднрд┐рдЬреБрдЕрд▓ рдЧрд╛рдЗрдб

реи) рдЖрдиреНрддрд░рд┐рдХ рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░рд▓рд╛рдИ рд╕реЗрд╡рд╛ рднрдирд┐рдиреНрдЫ, рдмрд╛рд╣рд┐рд░реАрд▓рд╛рдИ рдЗрдиреНрдЧреНрд░реЗрд╕ рднрдирд┐рдиреНрдЫред

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 рдХрд╣рд┐рд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫ?
  • рдХреЗ рдореИрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдкреЛрд░реНрдЯ рдмрдирд╛рдЙрдиреБ рдкрд░реНрдЫ рддрд╛рдХрд┐ рддрд┐рдиреАрд╣рд░реВ рд╡рд┐рд╡рд╛рдж рдЧрд░реНрджреИрдирдиреН?
  • рдХреЗ рд▓реЗрдмрд▓ рдирд╛рдорд╣рд░реВ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫрдиреН? рдХреЗ рддрд┐рдиреАрд╣рд░реВ рд╕рдмреИ рдард╛рдЙрдБрдорд╛ рд╕рдорд╛рди рд╣реБрдиреБрдкрд░реНрдЫ?

рдбрд┐рдмрдЧрд┐рдЩрдорд╛ рдлреЛрдХрд╕ рдЧрд░реНрдиреБ рдЕрдШрд┐, рддреАрдирд╡рдЯрд╛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдХрд╕рд░реА рдПрдХрдЕрд░реНрдХрд╛рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫрдиреН рднрдиреЗрд░ рд╕рдореНрдЭреМрдВред рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд░ рд╕реЗрд╡рд╛рдХреЛ рд╕рд╛рде рд╕реБрд░реБ рдЧрд░реМрдВред

рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд░ рд╕реЗрд╡рд╛ рдмреАрдЪрдХреЛ рд╕рдореНрдмрдиреНрдз

рддрдкрд╛рдИрдВ рдЫрдХреНрдХ рдкрд░реНрдиреБрд╣реБрдиреЗрдЫ, рддрд░ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд░ рд╕реЗрд╡рд╛рд╣рд░реВ рдХреБрдиреИ рдкрдирд┐ рд╣рд┐рд╕рд╛рдмрд▓реЗ рдЬреЛрдбрд┐рдПрдХрд╛ рдЫреИрдирдиреНред рдпрд╕рдХреЛ рд╕рдЯреНрдЯрд╛, рд╕реЗрд╡рд╛ рдкреЛрдбрд╣рд░реВрдорд╛ рд╕рд┐рдзреИ рдкреЛрдЗрдиреНрдЯ рдЧрд░реНрджрдЫ, рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд▓рд╛рдИ рдмрд╛рдЗрдкрд╛рд╕ рдЧрд░реНрджреИред

рдпрд╕реИрд▓реЗ, рд╣рд╛рдореА рдкреЛрдб рд░ рд╕реЗрд╡рд╛рд╣рд░реВ рдХрд╕рд░реА рдПрдХ рдЕрд░реНрдХрд╛рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫрдиреН рднрдиреНрдиреЗрдорд╛ рд░реБрдЪрд┐ рд░рд╛рдЦреНрдЫреМрдВред рдпрд╛рдж рд░рд╛рдЦреНрдиреБ рдкрд░реНрдиреЗ рддреАрди рдХреБрд░рд╛рд╣рд░реБ:

  1. рдЪрдпрдирдХрд░реНрддрд╛ (selector) рд╕реЗрд╡рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдХрдореНрддрд┐рдорд╛ рдПрдЙрдЯрд╛ рдкреЛрдб рд▓реЗрдмрд▓ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫред
  2. targetPort рдорд┐рд▓реНрдиреБ рдкрд░реНрдЫ containerPort рдкреЛрдб рднрд┐рддреНрд░ рдХрдиреНрдЯреЗрдирд░ред
  3. port рд╕реЗрд╡рд╛ рдЬреЗ рдкрдирд┐ рд╣реБрди рд╕рдХреНрдЫред рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рд╣рд░реВрд▓реЗ рд╕рдорд╛рди рдкреЛрд░реНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫрдиреН рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдлрд░рдХ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдЫрдиреНред

рдирд┐рдореНрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рд▓реЗ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд░реВрдкрдорд╛ рдорд╛рдерд┐рдХрд╛ рд╕рдмреИ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрджрдЫ:

1) рдХрд▓реНрдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рд╕реЗрд╡рд╛рд▓реЗ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рдирд┐рд╢реНрдЪрд┐рдд рдкреЛрдбрдорд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЧрд░реНрджрдЫ:

Kubernetes рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЛ рд▓рд╛рдЧреА рдПрдХ рднрд┐рдЬреБрдЕрд▓ рдЧрд╛рдЗрдб

2) рдкреЛрдб рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛, рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрдкрд░реНрдЫ containerPort рдкреЛрдбрдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдХрдиреНрдЯреЗрдирд░рдХреЛ рд▓рд╛рдЧрд┐:

Kubernetes рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЛ рд▓рд╛рдЧреА рдПрдХ рднрд┐рдЬреБрдЕрд▓ рдЧрд╛рдЗрдб

3) рд╕реЗрд╡рд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛, рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрдкрд░реНрдЫ port ╨╕ targetPort. рддрд░ рдХреБрди рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ?

Kubernetes рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЛ рд▓рд╛рдЧреА рдПрдХ рднрд┐рдЬреБрдЕрд▓ рдЧрд╛рдЗрдб

4) рдорд╛рд░реНрдлрдд targetPortред рдорд┐рд▓реНрдиреБрдкрд░реНрдЫ containerPort.

Kubernetes рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЛ рд▓рд╛рдЧреА рдПрдХ рднрд┐рдЬреБрдЕрд▓ рдЧрд╛рдЗрдб

рел) рдорд╛рдиреМрдВ рдкреЛрд░реНрдЯ рейрежрежреж рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЦреБрд▓рд╛ рдЫред рддреНрдпрд╕рдкрдЫрд┐ рдорд╛рди 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?

рдпреЛ рд╕рдБрдзреИ рдкреЛрдбрдХреЛ рд▓реЗрдмрд▓рд╣рд░реВрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреБрдкрд░реНрдЫ, рдХрд┐рдирдХрд┐ рдпреЛ рдкреЛрдб рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрди рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред

рдорд╛рдиреМрдВ рддрдкрд╛рдИрдВрд▓реЗ рд╕рд╣реА рд╕рдореНрдкрд╛рджрди рдЧрд░реНрдиреБрднрдпреЛред рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХрд╕рд░реА рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ?

рддрдкрд╛рдЗрдБ рдирд┐рдореНрди рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рдкреЛрдб рд▓реЗрдмрд▓ рдЬрд╛рдБрдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

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 рдирд╛рдо рд░ рдЦреБрд▓рд╛ рдкреЛрд░реНрдЯ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╕реЗрд╡рд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫред

рдкреНрд░рд╡реЗрд╢ рд░ рд╕реЗрд╡рд╛рдХреЛ рд╡рд┐рд╡рд░рдгрдорд╛ рджреБрдИ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫ:

  1. servicePort Ingress рдорд╛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫ port рд╕реЗрд╡рд╛рдорд╛;
  2. serviceName Ingress рдорд╛ рдХреНрд╖реЗрддреНрд░ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫ name рд╕реЗрд╡рд╛рдорд╛ред

рдирд┐рдореНрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рд▓реЗ рдкреЛрд░реНрдЯ рдЬрдбрд╛рдирд╣рд░реВ рд╕рдВрдХреНрд╖реЗрдк рдЧрд░реНрджрдЫ:

1) рддрдкрд╛рдИрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рдерд╛рд╣рд╛ рдЫ, рд╕реЗрд╡рд╛рд▓реЗ рдирд┐рд╢реНрдЪрд┐рдд рдХреБрд░рд╛ рд╕реБрдиреНрдЫ port:

Kubernetes рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЛ рд▓рд╛рдЧреА рдПрдХ рднрд┐рдЬреБрдЕрд▓ рдЧрд╛рдЗрдб

2) Ingress рднрдирд┐рдиреЗ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдЫ servicePort:

Kubernetes рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЛ рд▓рд╛рдЧреА рдПрдХ рднрд┐рдЬреБрдЕрд▓ рдЧрд╛рдЗрдб

рей) рдпреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ (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 рдирд┐рдпрдиреНрддреНрд░рдХрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рдкрд╣рд┐рд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ рдЗрдиреНрдЧреНрд░реЗрд╕ рдирд┐рдпрдиреНрддреНрд░рдХрдХреЛ рд╕рд╛рде рдкреЛрдбрдХреЛ рдирд╛рдо рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

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
Ports:         80/TCP, 443/TCP, 18080/TCP

рдЕрдиреНрддрдорд╛, рдкреЛрдбрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН:

kubectl port-forward nginx-ingress-controller-6fc5bcc 3000:80 --namespace kube-system

рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ рдкреЛрд░реНрдЯ 3000 рдорд╛ рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрдиреБрд╣реБрдиреНрдЫ, рдпреЛ рдЗрдиреНрдЧреНрд░реЗрд╕ рдирд┐рдпрдиреНрддреНрд░рдХрдХреЛ рд╕рд╛рде рдкреЛрдбрдХреЛ рдкреЛрд░реНрдЯ 80 рдорд╛ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░рд┐рдиреЗрдЫред рдорд╛ рдЧрдПрд░ http://localhost:3000, рддрдкрд╛рдИрдВрд▓реЗ рдЖрд╡реЗрджрди рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдкреГрд╖реНрда рд╣реЗрд░реНрдиреБ рдкрд░реНрдЫред

рдкреЛрд░реНрдЯрд╣рд░реВрдХреЛ рд╕рд╛рд░рд╛рдВрд╢

рдЖрдЙрдиреБрд╣реЛрд╕реН рдПрдХ рдкрдЯрдХ рдлреЗрд░рд┐ рдпрд╛рдж рдЧрд░реМрдВ рдХреБрди рдкреЛрд░реНрдЯрд╣рд░реВ рд░ рд▓реЗрдмрд▓рд╣рд░реВ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫ:

  1. рд╕реЗрд╡рд╛ рдкрд░рд┐рднрд╛рд╖рд╛рдорд╛ рдЪрдпрдирдХрд░реНрддрд╛ рдкреЛрдбрдХреЛ рд▓реЗрдмрд▓рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреБрдкрд░реНрдЫ;
  2. targetPort рдкрд░рд┐рднрд╛рд╖рд╛рдорд╛ рд╕реЗрд╡рд╛ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫ containerPort рдкреЛрдб рднрд┐рддреНрд░ рдХрдиреНрдЯреЗрдирд░;
  3. port рдкрд░рд┐рднрд╛рд╖рд╛рдорд╛ рд╕реЗрд╡рд╛ рдЬреЗ рдкрдирд┐ рд╣реБрди рд╕рдХреНрдЫред рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рд╣рд░реВрд▓реЗ рдПрдЙрдЯреИ рдкреЛрд░реНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫрдиреН рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдлрд░рдХ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдЫрдиреН;
  4. servicePort рдкреНрд░рд╡реЗрд╢ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫ port рд╕реЗрд╡рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд╛ рдорд╛;
  5. рд╕реЗрд╡рд╛рдХреЛ рдирд╛рдо рдлрд┐рд▓реНрдбрд╕рдБрдЧ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫ serviceName рдкреНрд░рд╡реЗрд╢ рдорд╛ред

рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, YAML рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдХрд╕рд░реА рдареАрдХрд╕рдБрдЧ рд╕рдВрд░рдЪрдирд╛ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдЬрд╛рдиреНрди рдкрд░реНрдпрд╛рдкреНрдд рдЫреИрдиред

рдЪреАрдЬрд╣рд░реВ рдЧрд▓рдд рд╣реБрдБрджрд╛ рдХреЗ рд╣реБрдиреНрдЫ?

рдкреЛрдб рд╕реБрд░реБ рдирд╣реБрди рд╕рдХреНрдЫ рд╡рд╛ рдпреЛ рдХреНрд░реНрдпрд╛рд╕ рд╣реБрди рд╕рдХреНрдЫред

Kubernetes рдорд╛ рдЖрд╡реЗрджрди рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдирд┐рджрд╛рди рдЧрд░реНрди 3 рдЪрд░рдгрд╣рд░реВ

рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рдбрд┐рдмрдЧ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐, рддрдкрд╛рдИрдВрд▓реЗ Kubernetes рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреНрдиреЗ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдмреБрдЭреНрдиреБрдкрд░реНрдЫред

K8s рдорд╛ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдПрдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдорд╛ рддреАрдирд╡рдЯрд╛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рднрдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рддрд┐рдиреАрд╣рд░реВ рддрд▓рдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реА рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд░рдордорд╛ рдбрд┐рдмрдЧ рдЧрд░рд┐рдиреБрдкрд░реНрдЫред

  1. рдкрд╣рд┐рд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рдкреЛрдбрд╣рд░реВ рдХрд╛рдо рдЧрд░реНрджреИ рдЫрдиреН, рддреНрдпрд╕рдкрдЫрд┐ ...
  2. рдпрджрд┐ рд╕реЗрд╡рд╛рд▓реЗ рдкреЛрдбрд╣рд░реВрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ рдЖрдкреВрд░реНрддрд┐ рдЧрд░реНрджрдЫ рднрдиреЗ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░ рддреНрдпрд╕рдкрдЫрд┐...
  3. Ingress рд╕рд╣реА рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ рдХрд┐ рдЫреИрди рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рджреГрд╢реНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡:

1) рддрдкрд╛рдИрдВрд▓реЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рддрд▓рдмрд╛рдЯ рдЦреЛрдЬреНрди рд╕реБрд░реБ рдЧрд░реНрдиреБрдкрд░реНрдЫред рдкрд╣рд┐рд▓реЗ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдкреЛрдбрд╣рд░реВрдХреЛ рд╕реНрдерд┐рддрд┐ рдЫ Ready ╨╕ Running:

Kubernetes рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЛ рд▓рд╛рдЧреА рдПрдХ рднрд┐рдЬреБрдЕрд▓ рдЧрд╛рдЗрдб

2) рдпрджрд┐ рдкреЛрдбрд╣рд░реВ рддрдпрд╛рд░ рдЫрдиреН (Ready), рддрдкрд╛рдИрдВрд▓реЗ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБ рдкрд░реНрдЫ рдХрд┐ рд╕реЗрд╡рд╛рд▓реЗ рдкреЛрдбрд╣рд░реВ рдмреАрдЪ рдЯреНрд░рд╛рдлрд┐рдХ рд╡рд┐рддрд░рдг рдЧрд░реНрдЫ рдХрд┐ рдЧрд░реНрджреИрди:

Kubernetes рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЛ рд▓рд╛рдЧреА рдПрдХ рднрд┐рдЬреБрдЕрд▓ рдЧрд╛рдЗрдб

3) рдЕрдиреНрддрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рд╕реЗрд╡рд╛ рд░ рдкреНрд░рд╡реЗрд╢ рдмреАрдЪрдХреЛ рд╕рдореНрдмрдиреНрдзрд▓рд╛рдИ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

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рддрдерд╛рдкрд┐, рдпреЛ рдЕрдиреНрдп рджреБрдИ рдХреЛ рд▓рд╛рдЧреА рдорд╛рдорд▓рд╛ рдЫреИрдиред

рдХреЗ рдЧрд▓рдд рднрдпреЛ рдХрд╕рд░реА рдмреБрдЭреНрдиреЗ?

рдкреЛрдбрд╣рд░реВ рдирд┐рджрд╛рди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЪрд╛рд░рд╡рдЯрд╛ рдЙрдкрдпреЛрдЧреА рдЖрджреЗрд╢рд╣рд░реВ рдЫрдиреН:

  1. kubectl logs <╨╕╨╝╤П pod'╨░> рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреЛрдбрдорд╛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рдирд┐рдХрд╛рд▓реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ;
  2. kubectl describe pod <╨╕╨╝╤П pod'╨░> рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреЛрдбрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рд╕реВрдЪреА рд╣реЗрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ;
  3. kubectl get pod <╨╕╨╝╤П pod'╨░> рддрдкрд╛рдИрдВрд▓рд╛рдИ Kubernetes рдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рдкреЛрдбрдХреЛ YAML рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ;
  4. kubectl exec -ti <╨╕╨╝╤П pod'╨░> bash рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреЛрдб рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдордзреНрдпреЗ рдПрдХрдорд╛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдЖрджреЗрд╢ рд╢реЗрд▓ рд╕реБрд░реБ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ

рддрдкрд╛рдИрдВрд▓реЗ рдХреБрди рд░реЛрдЬреНрдиреБрдкрд░реНрдЫ?

рддрдереНрдп рдпреЛ рд╣реЛ рдХрд┐ рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдЖрджреЗрд╢ рдЫреИрдиред рдпреА рдХреЛ рд╕рдВрдпреЛрдЬрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫред

рд╕рд╛рдорд╛рдиреНрдп рдкреЛрдб рд╕рдорд╕реНрдпрд╛рд╣рд░реВ

рддреНрдпрд╣рд╛рдБ рджреБрдИ рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░рдХрд╛ рдкреЛрдб рддреНрд░реБрдЯрд┐рд╣рд░реВ рдЫрдиреН: рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рддреНрд░реБрдЯрд┐рд╣рд░реВ рд░ рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐рд╣рд░реВред

рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рддреНрд░реБрдЯрд┐рд╣рд░реВ:

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

рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐рд╣рд░реВ:

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

рдХреЗрд╣реА рддреНрд░реБрдЯрд┐рд╣рд░реВ рдЕрд░реВ рднрдиреНрджрд╛ рдмрдвреА рд╕рд╛рдорд╛рдиреНрдп рдЫрдиреНред рдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐рд╣рд░реВ рдЫрдиреН рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХрд╕рд░реА рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗред

ImagePullBackOff

Kubernetes рдкреЛрдб рдХрдиреНрдЯреЗрдирд░ рдордзреНрдпреЗ рдПрдХ рдХреЛ рд▓рд╛рдЧреА рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЕрд╕рдорд░реНрде рд╣реБрдБрджрд╛ рдпреЛ рддреНрд░реБрдЯрд┐ рджреЗрдЦрд╛ рдкрд░реНрджрдЫред рдпрд╣рд╛рдБ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рддреАрди рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░рдгрд╣рд░реВ рдЫрдиреН:

  1. рдЫрд╡рд┐рдХреЛ рдирд╛рдо рдЧрд▓рдд рдЫ - рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рдорд╛ рдЧрд▓реНрддреА рдЧрд░реНрдиреБрднрдпреЛ, рд╡рд╛ рдЫрд╡рд┐ рдЕрд╡рд╕реНрдерд┐рдд рдЫреИрди;
  2. рдЫрд╡рд┐рдХреЛ рд▓рд╛рдЧрд┐ рдЕрд╡рд╕реНрдерд┐рдд рдирднрдПрдХреЛ рдЯреНрдпрд╛рдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ;
  3. рдЫрд╡рд┐ рдПрдХ рдирд┐рдЬреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ Kubernetes рдпрд╕рд▓рд╛рдИ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рдЫреИрдиред

рдкрд╣рд┐рд▓реЛ рджреБрдИ рдХрд╛рд░рдгрд╣рд░реВ рд╣рдЯрд╛рдЙрди рд╕рдЬрд┐рд▓реЛ рдЫ - рдХреЗрд╡рд▓ рдЫрд╡рд┐рдХреЛ рдирд╛рдо рд░ рдЯреНрдпрд╛рдЧ рд╕рдЪреНрдпрд╛рдЙрдиреБрд╣реЛрд╕реНред рдкрдЫрд┐рд▓реНрд▓реЛ рдХреЛ рдорд╛рдорд▓рд╛ рдорд╛, рддрдкрд╛рдИрдВ рдЧреЛрдкреНрдп рдорд╛ рдмрдиреНрдж рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ рд▓рд╛рдЧреА рдкреНрд░рдорд╛рдгрд╣рд░реБ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрди рд░ рдкреЛрдб рдорд╛ рд▓рд┐рдВрдХ рдердкреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред Kubernetes рдХрд╛рдЧрдЬрд╛рддрдорд╛ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рдЫ рдпреЛ рдХрд╕рд░реА рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рдХреНрд░реНрдпрд╛рд╕ рд▓реВрдк рдмреНрдпрд╛рдХ рдЕрдл

Kubenetes рд▓реЗ рдПрдЙрдЯрд╛ рддреНрд░реБрдЯрд┐ рдлреНрдпрд╛рдБрдХреНрдпреЛ CrashLoopBackOff, рдпрджрд┐ рдХрдиреНрдЯреЗрдирд░ рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрджреИрдиред рдпреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд╣реБрдиреНрдЫ рдЬрдм:

  1. рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдПрдЙрдЯрд╛ рдмрдЧ рдЫ рдЬрд╕рд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕реБрд░реБ рд╣реБрдирдмрд╛рдЯ рд░реЛрдХреНрдЫ;
  2. рдХрдВрдЯреЗрдирд░ рдЧрд▓рдд рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдпреЛ;
  3. Liveness рдкрд░реАрдХреНрд╖рдг рдзреЗрд░реИ рдкрдЯрдХ рдЕрд╕рдлрд▓ рднрдПрдХреЛ рдЫред

рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рдХреЛ рд╡рд┐рдлрд▓рддрд╛рдХреЛ рдХрд╛рд░рдг рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдХрдиреНрдЯреЗрдирд░рдмрд╛рдЯ рд▓рдЧрд╣рд░реВрдорд╛ рдкреБрдЧреНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрдкрд░реНрдЫред рдпрджрд┐ рдХрдиреНрдЯреЗрдирд░ рдзреЗрд░реИ рдЪрд╛рдБрдбреИ рдкреБрди: рд╕реБрд░реБ рд╣реБрдиреЗ рдХрд╛рд░рдг рд▓рдЧрд╣рд░реВ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдЧрд╛рд╣реНрд░реЛ рдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдирд┐рдореНрди рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

kubectl logs <pod-name> --previous

рдпрд╕рд▓реЗ рдХрдиреНрдЯреЗрдирд░рдХреЛ рдЕрдШрд┐рд▓реНрд▓реЛ рдЕрд╡рддрд╛рд░рдмрд╛рдЯ рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджрдЫред

рд░рди рдХрдиреНрдЯреЗрдирд░ рддреНрд░реБрдЯрд┐

рдпреЛ рддреНрд░реБрдЯрд┐ рддрдм рд╣реБрдиреНрдЫ рдЬрдм рдХрдиреНрдЯреЗрдирд░ рд╕реБрд░реБ рдЧрд░реНрди рдЕрд╕рдлрд▓ рд╣реБрдиреНрдЫред рдпреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реБ рд╣реБрдиреБ рдЕрдШрд┐ рдХреНрд╖рдг рд╕рдВрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред рдпреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдЧрд▓рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдХрд╛рд░рдг рд╣реЛ, рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА:

  • ConfigMap рд╡рд╛ Secrets рдЬрд╕реНрддрд╛ рдЕрд╕реНрддрд┐рддреНрд╡рд╣реАрди рднреЛрд▓реНрдпреБрдо рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджреИ;
  • рдкрдвреНрдиреЗ-рд▓реЗрдЦрдирдХреЛ рд░реВрдкрдорд╛ рдкрдвреНрдиреЗ рдорд╛рддреНрд░ рднреЛрд▓реНрдпреБрдо рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ред

рдЯреЛрд▓реА рддреНрдпрд╕реНрддрд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдЫ kubectl describe pod <pod-name>.

рдкреЛрдбрд╣рд░реВ рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рдЕрд╡рд╕реНрдерд╛рдорд╛ рдЫрдиреН

рдПрдХ рдкрдЯрдХ рд╕рд┐рд░реНрдЬрдирд╛ рднрдПрдкрдЫрд┐, рдкреЛрдб рд░рд╛рдЬреНрдпрдорд╛ рд░рд╣рдиреНрдЫ Pending.

рдпреЛ рдХрд┐рди рд╣реБрдиреНрдЫ?

рдпрд╣рд╛рдБ рд╕рдореНрднрд╛рд╡рд┐рдд рдХрд╛рд░рдгрд╣рд░реВ рдЫрдиреН (рдо рдЕрдиреБрд╕реВрдЪрдХрд▓реЗ рд░рд╛рдореНрд░реЛ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ рднрдиреА рдорд╛рдиреНрджреИ рдЫреБ):

  1. рдХреНрд▓рд╕реНрдЯрд░рд╕рдБрдЧ рдкреЛрдб рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рд╢реЛрдзрди рд╢рдХреНрддрд┐ рд░ рдореЗрдореЛрд░реА рдЬрд╕реНрддрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрд░реЛрддрд╣рд░реВ рдЫреИрдирдиреНред
  2. рд╡рд╕реНрддреБ рдЙрдкрдпреБрдХреНрдд рдирд╛рдо рд╕реНрдерд╛рдирдорд╛ рд╕реНрдерд╛рдкрд┐рдд рдЫ ResourceQuota рд░ рдкреЛрдб рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛрдЯрд╛ рднрдиреНрджрд╛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреЗрдЫред
  3. рдкреЛрдб рдкреЗрдиреНрдбрд┐рдЩрдорд╛ рдмрд╛рдБрдзрд┐рдПрдХреЛ рдЫ 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. рд╕рд╣реА рд▓реЗрдмрд▓рдХреЛ рд╕рд╛рде рдХреБрдиреИ рдкреЛрдбрд╣рд░реВ рдЫреИрдирдиреН (рд╕рдВрдХреЗрдд: рдирд╛рдорд╕реНрдерд╛рди рд╕рд╣реА рд░реВрдкрдорд╛ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдЫ рдХрд┐ рдЫреИрди рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН);
  2. рдЪрдпрдирдХрд░реНрддрд╛рдорд╛ рд╕реЗрд╡рд╛ рд▓реЗрдмрд▓рд╣рд░реВрдорд╛ рддреНрд░реБрдЯрд┐ рдЫред

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБрд╣рд░реВрдХреЛ рд╕реВрдЪреА рджреЗрдЦреНрдиреБрднрдпреЛ рддрд░ рдЕрдЭреИ рдкрдирд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрди рднрдиреЗ, рд╕рдореНрднрд╛рд╡рд┐рдд рдЕрдкрд░рд╛рдзреА рдПрдХ рдмрдЧ рд╣реЛред targetPort рд╕реЗрд╡рд╛ рд╡рд┐рд╡рд░рдгрдорд╛ред

рд╕реЗрд╡рд╛рдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╕рд░реА рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ?

рд╕реЗрд╡рд╛рдХреЛ рдкреНрд░рдХрд╛рд░рдХреЛ рдмрд╛рд╡рдЬреБрдж, рддрдкрд╛рдЗрдБ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ kubectl port-forward рдпрд╕рд▓рд╛рдИ рдЬрдбрд╛рди рдЧрд░реНрди:

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

рдпрд╣рд╛рдБ:

  • <service-name> - рд╕реЗрд╡рд╛ рдирд╛рдо;
  • 3000 рддрдкрд╛рдИрд▓реЗ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ рдЦреЛрд▓реНрдиреБ рднрдПрдХреЛ рдкреЛрд░реНрдЯ рд╣реЛ;
  • 80 - рд╕реЗрд╡рд╛ рдкрдХреНрд╖рдорд╛ рдкреЛрд░реНрдЯред

3. рдкреНрд░рд╡реЗрд╢ рдирд┐рджрд╛рди

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдЯрд╛рдврд╛ рдкрдвреНрдиреБрднрдпреЛ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐:

  • pods рдХреЛ рд░реВрдкрдорд╛ рд╕реВрдЪреАрдмрджреНрдз рдЫрдиреН Running ╨╕ Ready;
  • рд╕реЗрд╡рд╛рд▓реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреЛрдбрд╣рд░реВрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ рд╡рд┐рддрд░рдг рдЧрд░реНрджрдЫред

рдпрджреНрдпрдкрд┐, рддрдкрд╛рдИрдВ рдЕрдЭреИ рдкрдирд┐ рдПрдкрдорд╛ рдкреБрдЧреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдиред

рдпрд╕рдХреЛ рдорддрд▓рдм рдЗрдиреНрдЧреНрд░реЗрд╕ рдирд┐рдпрдиреНрддреНрд░рдХ рд╕рдореНрднрд╡рддрдГ рд╕рд╣реА рд░реВрдкрдорд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред рдЗрдиреНрдЧреНрд░реЗрд╕ рдХрдиреНрдЯреНрд░реЛрд▓рд░ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рддреЗрд╕реНрд░реЛ-рдкрдХреНрд╖ рдХрдореНрдкреЛрдиреЗрдиреНрдЯ рднрдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рдпрд╕рдХреЛ рдкреНрд░рдХрд╛рд░рдХреЛ рдЖрдзрд╛рд░рдорд╛ рд╡рд┐рднрд┐рдиреНрди рдбрд┐рдмрдЧрд┐рдЩ рд╡рд┐рдзрд┐рд╣рд░реВ рдЫрдиреНред

рддрд░ рддрдкрд╛рдИрдВрд▓реЗ Ingress рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╡рд┐рд╢реЗрд╖ рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рдЕрдШрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдзреЗрд░реИ рд╕рд░рд▓ рдХреБрд░рд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдкреНрд░рд╡реЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ serviceName ╨╕ servicePort рд╕реЗрд╡рд╛рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдиред рддрдкрд╛рдИрдВрд▓реЗ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рддрд┐рдиреАрд╣рд░реВ рд╕рд╣реА рд░реВрдкрдорд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреНред рддрдкрд╛рдИрдВ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпреЛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

kubectl describe ingress <ingress-name>

рдпрджрд┐ рд╕реНрддрдореНрдн Backend рдЦрд╛рд▓реА, рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рддреНрд░реБрдЯрд┐рдХреЛ рдЙрдЪреНрдЪ рд╕рдореНрднрд╛рд╡рдирд╛ рдЫред рдпрджрд┐ рдмреНрдпрд╛рдХрдПрдиреНрдбрд╣рд░реВ рдард╛рдЙрдБрдорд╛ рдЫрдиреН, рддрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрдЭреИ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рдЫреИрди, рддрдм рд╕рдорд╕реНрдпрд╛ рдирд┐рдореНрдирд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╣реБрди рд╕рдХреНрдЫ:

  • рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдиреНрдЯрд░рдиреЗрдЯрдмрд╛рдЯ рдкрд╣реБрдБрдЪ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдкреНрд░рд╡реЗрд╢ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  • рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдиреНрдЯрд░рдиреЗрдЯрдмрд╛рдЯ рдХреНрд▓рд╕реНрдЯрд░ рдкрд╣реБрдБрдЪ рд╕реЗрдЯрд┐рдЩрд╣рд░реВред

рддрдкрд╛рдИрд▓реЗ рдЗрдиреНрдЧреНрд░реЗрд╕ рдкреЛрдбрдорд╛ рд╕рд┐рдзреИ рдЬрдбрд╛рди рдЧрд░реЗрд░ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдорд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпреЛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐, рдкрд╣рд┐рд▓реЗ рдЗрдиреНрдЧреНрд░реЗрд╕ рдХрдиреНрдЯреНрд░реЛрд▓рд░ рдкреЛрдб рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН (рдпреЛ рдлрд░рдХ рдиреЗрдорд╕реНрдкреЗрд╕рдорд╛ рд╣реБрди рд╕рдХреНрдЫ):

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 рдирд┐рдпрдиреНрддреНрд░рдХрд▓рд╛рдИ рдХрд╛рдо рдЧрд░реНрди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрди рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдбрд┐рдмрдЧ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред

рддреНрдпрд╣рд╛рдБ рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВрдХреЛ рдзреЗрд░реИ рдХрд┐рд╕реНрдорд╣рд░реВ рдЫрдиреНред рд╕рдмреИрднрдиреНрджрд╛ рд▓реЛрдХрдкреНрд░рд┐рдп Nginx, HAProxy, Traefik, рдЖрджрд┐ рд╣реБрдиреНред (рдЕрд╡рд╕реНрдерд┐рдд рд╕рдорд╛рдзрд╛рдирд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рд▓рд╛рдЧрд┐, рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рд╣рд╛рдореНрд░реЛ рд╕рдореАрдХреНрд╖рд╛ - рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджред) рддрдкрд╛рдИрдВрд▓реЗ рд╕рд╛рдиреНрджрд░реНрднрд┐рдХ рдирд┐рдпрдиреНрддреНрд░рдХ рдХрд╛рдЧрдЬрд╛рддрдорд╛ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдЧрд╛рдЗрдбрд▓рд╛рдИ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрдиреБрдкрд░реНрдЫред рдХрд┐рдирдХрд┐ рддреНрдпреЛ Nginx рдкреНрд░рд╡реЗрд╢ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╕рдмреИрднрдиреНрджрд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдиреНрддреНрд░рдХ рд╣реЛ, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд▓реЗрдЦрдорд╛ рдХреЗрд╣реА рд╕реБрдЭрд╛рд╡рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реЗрдХрд╛ рдЫреМрдВред

Ingress Nginx рдирд┐рдпрдиреНрддреНрд░рдХ рдбрд┐рдмрдЧ рдЧрд░реНрджреИ

Ingress-nginx рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдПрдХ рдЕрдзрд┐рдХрд╛рд░реА рдЫ kubectl рдХреЛ рд▓рд╛рдЧреА рдкреНрд▓рдЧрдЗрдиред рдЯреЛрд▓реА kubectl ingress-nginx рдХреЛ рд▓рд╛рдЧреА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

  • рд▓рдЧ, рдмреНрдпрд╛рдХрдЗрдиреНрдб, рдкреНрд░рдорд╛рдгрдкрддреНрд░, рдЖрджрд┐ рдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг;
  • рдкреНрд░рд╡реЗрд╢ рд╕рдВрдЧ рдЬрдбрд╛рди;
  • рд╣рд╛рд▓рдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЕрдзреНрдпрдпрди рдЧрд░реНрджреИред

рдирд┐рдореНрди рддреАрди рдЖрджреЗрд╢рд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдпрд╕рдорд╛ рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ:

  • kubectl ingress-nginx lint - рдЪреЗрдХ nginx.conf;
  • kubectl ingress-nginx backend - рдмреНрдпрд╛рдХрдЗрдиреНрдб рдЕрдиреНрд╡реЗрд╖рдг рдЧрд░реНрджрдЫ (рд╕рдорд╛рди kubectl describe ingress <ingress-name>);
  • kubectl ingress-nginx logs - рд▓рдЧрд╣рд░реВ рдЬрд╛рдБрдЪ рдЧрд░реНрджрдЫред

рдпрд╛рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдХреЗрд╣рд┐ рдЕрд╡рд╕реНрдерд╛рдорд╛ рддрдкрд╛рдИрд▓реЗ рдЭрдгреНрдбрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдиреНрддреНрд░рдХрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╣реА рдирд╛рдо рд╕реНрдерд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫ --namespace <name>.

рд╕рд╛рд░рд╛рдВрд╢

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХрд╣рд╛рдБ рд╕реБрд░реБ рдЧрд░реНрдиреЗ рдерд╛рд╣рд╛ рдЫреИрди рднрдиреЗ Kubernetes рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдЪреБрдиреМрддреАрдкреВрд░реНрдг рд╣реБрди рд╕рдХреНрдЫред рддрдкрд╛рдИрдВрд▓реЗ рдЬрд╣рд┐рд▓реЗ рдкрдирд┐ рд╕рдорд╕реНрдпрд╛рд▓рд╛рдИ рддрд▓-рдорд╛рдерд┐рдХреЛ рддрд░рд┐рдХрд╛рдорд╛ рд╕рдореНрдкрд░реНрдХ рдЧрд░реНрдиреБрдкрд░реНрдЫ: рдкреЛрдбрд╣рд░реВрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╕реЗрд╡рд╛ рд░ рдкреНрд░рд╡реЗрд╢рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реНред рдпрд╕ рд▓реЗрдЦрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдбрд┐рдмрдЧрд┐рдЩ рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВ рдЕрдиреНрдп рд╡рд╕реНрддреБрд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЬрд╕реНрддреИ:

  • рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд╛рдо рд░ рдХреНрд░реЛрдирдЬрдмреНрд╕;
  • StatefulSets рд░ DaemonSetsред

рдХреГрддрдЬреНрдЮрддрд╛ рд╡реНрдпрдХреНрдд рдЧрд░реНрджрдЫреБ Gergely Risko, рдбреЗрдирд┐рдпрд▓ Weibel ╨╕ рдЪрд╛рд░реНрд▓реНрд╕ рдХреНрд░рд┐рд╕реНрдЯреАрд░рд╛рдЬ рдореВрд▓реНрдпрд╡рд╛рди рдЯрд┐рдкреНрдкрдгреА рд░ рдердкрдХреЛ рд▓рд╛рдЧрд┐ред

рдЕрдиреБрд╡рд╛рджрдХрдмрд╛рдЯ PS

рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди