рд╢реАрд░реНрд╖ 10 Kubernetes рдпреБрдХреНрддреНрдпрд╛ рдЖрдгрд┐ рдЯрд┐рдкрд╛

рд╢реАрд░реНрд╖ 10 Kubernetes рдпреБрдХреНрддреНрдпрд╛ рдЖрдгрд┐ рдЯрд┐рдкрд╛

рдЗрдВрдЯрд░рдиреЗрдЯрд╡рд░ рдмрд░реЗрдЪ рд╕рдВрджрд░реНрдн рд╕рд╛рд╣рд┐рддреНрдп рдЖрд╣реЗ, рдкрд░рдВрддреБ рдХрдзреАрдХрдзреА рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рд╕рд▓реНрд▓рд╛ рд╕рд░реНрд╡рд╛рдд рдореМрд▓реНрдпрд╡рд╛рди рдЕрд╕рддреЛ. рд╕рдВрдШ Mail.ru рд╡рд░реВрди Kubernetes aaS рдЕрдиреБрд╡рд╛рджрд┐рдд рджрд╣рд╛ рдпреБрдХреНрддреНрдпрд╛ рдЖрдгрд┐ рдЯрд┐рдкрд╛рдВрдЪреА рдирд┐рд╡рдб, рдЬреЗ рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд▓реЗрдЦрдХрд╛рдиреЗ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╕рд╣ рдХрд╛рдо рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдПрдХ рд╡рд░реНрд╖рд╛рдирдВрддрд░ рдЧреЛрд│рд╛ рдХреЗрд▓реЗ. рдЯрд┐рдкрд╛ рдорд╣рддреНрддреНрд╡рд╛рдиреБрд╕рд╛рд░ рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рд▓реНрдпрд╛ рдЬрд╛рдд рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ рдЖрдореНрд╣рд╛рд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рдкреНрд░рддреНрдпреЗрдХрд╛рд▓рд╛ рд╕реНрд╡рддрдГрд╕рд╛рдареА рдХрд╛рд╣реАрддрд░реА рдЙрдкрдпреБрдХреНрдд рд╡рд╛рдЯреЗрд▓.

Kubernetes рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рдЖрджреЗрд╢

рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрджрд╛рдЪрд┐рдд рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкреА рдЖрдгрд┐ рд╕рд░реНрд╡рд╛рдд рдЙрдкрдпреБрдХреНрдд рдХреНрд░рд┐рдпрд╛. рдЦрд╛рд▓реАрд▓ рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб рдкреВрд░реНрдг рдХрд░рдгреЗ рд╕рдХреНрд╖рдо рдХрд░рддреЗ kubectl рдмреЕрд╢ рд╢реЗрд▓рдордзреНрдпреЗ:

echo "source <(kubectl completion bash)" >> ~/.bashrc

рдСрдЯреЛрдлрд┐рд▓ kubectl .bashrc рдлрд╛рдЗрд▓рд╡рд░ рд▓рд┐рд╣рд┐рд▓реЗ рдЬрд╛рдИрд▓ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рд╢реЗрд▓ рд╕реБрд░реВ рдЭрд╛рд▓реНрдпрд╛рд╡рд░ рддреЗ рдЖрдкреЛрдЖрдк рд╕рдХреНрд░рд┐рдп рд╣реЛрдИрд▓. рд╣реЗ рд▓рд╛рдВрдмрд▓рдЪрдХ рдХрдорд╛рдВрдбреНрд╕ рдЖрдгрд┐ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЯрд╛рдЗрдк рдХрд░рдгреНрдпрд╛рд╕ рдЧрддреА рджреЗрддреЗ рдЬрд╕реЗ рдХреА all-namespaces. рдордзреНрдпреЗ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓ Kubernetes bash рдорджрдд.

рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдбреАрдлреЙрд▓реНрдЯ рдореЗрдорд░реА рдЖрдгрд┐ CPU рдорд░реНрдпрд╛рджрд╛

рдЬрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪреБрдХреАрдЪрд╛ рд▓рд┐рд╣рд┐рд▓рд╛ рдЕрд╕реЗрд▓, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдХрдВрджрд╛рд▓рд╛ рдбреЗрдЯрд╛рдмреЗрд╕рд╢реА рдирд╡реАрди рдХрдиреЗрдХреНрд╢рди рдЙрдШрдбрддреЛ рдкрд░рдВрддреБ рддреЛ рдХрдзреАрд╣реА рдмрдВрдж рдХрд░рдд рдирд╛рд╣реА, рддрд░ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдореЗрдорд░реА рд▓реАрдХ рдЖрд╣реЗ. рдЖрдгрд┐ рдЙрдкрдпреЛрдЬрдирд╛рджрд░рдореНрдпрд╛рди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдордзреНрдпреЗ рдореЗрдорд░реА рдорд░реНрдпрд╛рджрд╛ рд╕реЗрдЯ рдХреЗрд▓реЗрд▓реА рдирд╕рд▓реНрдпрд╛рд╕, рдпрд╛рдореБрд│реЗ рдиреЛрдб рдирд┐рдХрд╛рдореА рд╣реЛрдК рд╢рдХрддреЗ.

рд╣реЗ рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рддрд┐-рдиреЗрдорд╕реНрдкреЗрд╕ рдЖрдзрд╛рд░рд╛рд╡рд░ рдбреАрдлреЙрд▓реНрдЯ рдирд┐рд░реНрдмрдВрдз рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ. рддреЗ рдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЗрдорд╕реНрдкреЗрд╕рд╕рд╛рдареА yaml рдлрд╛рдИрд▓рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдЖрд╣реЗрдд. рдпреЗрдереЗ рдЕрд╢рд╛ рдлрд╛рдЗрд▓рдЪреЗ рдЙрджрд╛рд╣рд░рдг рдЖрд╣реЗ:

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi
    type: Container

рдЕрд╕реЗ рдпрд╛рдорд▓ рддрдпрд╛рд░ рдХрд░рд╛ рдЖрдгрд┐ рдХреЛрдгрддреНрдпрд╛рд╣реА рдиреЗрдорд╕реНрдкреЗрд╕рд▓рд╛ рд▓рд╛рдЧреВ рдХрд░рд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдиреЗрдорд╕реНрдкреЗрд╕рд▓рд╛ limit-example. рдЖрддрд╛ рдпрд╛ рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ рддреИрдирд╛рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдХрдВрдЯреЗрдирд░рдЪреА рдорд░реНрдпрд╛рджрд╛ 512Mi рдЕрд╕реЗрд▓, рдЬреЛрдкрд░реНрдпрдВрдд рдпрд╛ рдХрдВрдЯреЗрдирд░рд╕рд╛рдареА рджреБрд╕рд░реА рд╡реИрдпрдХреНрддрд┐рдХ рдорд░реНрдпрд╛рджрд╛ рдЕрддрд┐рд░рд┐рдХреНрддрдкрдгреЗ рд╕реЗрдЯ рдХреЗрд▓реА рдЬрд╛рдд рдирд╛рд╣реА.

Kubernetes рдЪреНрдпрд╛ рдЬреБрдиреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдордзреНрдпреЗ рдХрдЪрд░рд╛ рд╕рдВрдХрд▓рди

рдХреБрдмреЗрд▓реЗрдЯ рдмрд╛рдп рдбреАрдлреЙрд▓реНрдЯ рдЬреЗрд╡реНрд╣рд╛ рдХрдЪрд░рд╛ рд╕рдВрдХрд▓рди рд╕реБрд░реВ рдХрд░рддреЗ var/lib/docker рдЙрдкрд▓рдмреНрдз рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕рдкреИрдХреА 90% рдЬрд╛рдЧрд╛ рд╡реНрдпрд╛рдкрддреЗ. рд╣реЗ рдЫрд╛рди рдЖрд╣реЗ, рддрдерд╛рдкрд┐, Kubernetes 1.7 рдкрд░реНрдпрдВрдд рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ inodes рдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрд╡рд░ рдХреЛрдгрддреАрд╣реА рдореБрд▓рднреВрдд рдорд░реНрдпрд╛рджрд╛ рдирд╡реНрд╣рддреА, рдЬреА рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдордордзреАрд▓ рдлрд╛рдЗрд▓реНрд╕рдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ.

рд╕рдВрднрд╛рд╡реНрдпрддрдГ рдЖрдкрд▓рд╛ рдХрдВрдЯреЗрдирд░ var/lib/docker рдХреЗрд╡рд│ 50% рдбрд┐рд╕реНрдХ рдЬрд╛рдЧрд╛ рд╡рд╛рдкрд░реВ рд╢рдХрддреЗ, рдкрд░рдВрддреБ рдЖрдпрдиреЛрдбреНрд╕ рд╕рдВрдкреБрд╖реНрдЯрд╛рдд рдпреЗрдК рд╢рдХрддрд╛рдд, рдЬреНрдпрд╛рдореБрд│реЗ рдХрд╛рдордЧрд╛рд░рд╛рдВрдирд╛ рд╕рдорд╕реНрдпрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддреАрд▓.

1.4 рддреЗ 1.6 рдкрд░реНрдпрдВрддрдЪреНрдпрд╛ рдХреБрдмреЗрд▓реЗрдЯрдЪреНрдпрд╛ рдЬреБрдиреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдордзреНрдпреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣рд╛ рдзреНрд╡рдЬ рдЬреЛрдбрд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓:

--eviction-hard
=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%

1.7 рдЖрдгрд┐ рдирдВрддрд░рдЪреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдордзреНрдпреЗ рд╣рд╛ рдзреНрд╡рдЬ рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рддрдерд╛рдкрд┐, рдорд╛рдЧреАрд▓ рдЖрд╡реГрддреНрддреНрдпрд╛ рдЗрдиреЛрдб рдорд░реНрдпрд╛рджреЗрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдд рдирд╛рд╣реАрдд.

Minikube... рд▓рд╣рд╛рди рдкрдг рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕реНрдерд╛рдирд┐рдХ Kubernetes

рдорд┐рдирд┐рдХреБрдм рд╣рд╛ рд╕реНрдерд╛рдирд┐рдХ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪрд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ рдЖрд╣реЗ. рд╣реЗ рдПрдХрд╛ рд╕рд╛рдзреНрдпрд╛ рдЖрджреЗрд╢рд╛рд╕рд╣ рд▓реЙрдиреНрдЪ рдХреЗрд▓реЗ рдЖрд╣реЗ:

minikube start

рд╣рд╛ рдЖрджреЗрд╢ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рдиреЗ рддреБрдордЪреНрдпрд╛ рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдЪрд╛рд▓реВ рд╣реЛрдИрд▓.

рд╢реАрд░реНрд╖ 10 Kubernetes рдпреБрдХреНрддреНрдпрд╛ рдЖрдгрд┐ рдЯрд┐рдкрд╛
рдЪрд┐рддреНрд░рдг рд╕реНрд░реЛрдд

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

рдбреЙрдХрд░рд▓рд╛ рдкреНрд░рддрд┐рдорд╛ рд╕реНрдерд╛рдирд┐рдХ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рдврдХрд▓рдгреНрдпрд╛рд╕рд╛рдареА, рдбреЙрдХрд░ рдорд╢реАрдирд▓рд╛ рдЦрд╛рд▓реАрд▓ рдЖрджреЗрд╢ рджрд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ:

eval $(minikube docker-env)

рдЖрддрд╛ рдЖрдореНрд╣реА рд╕реНрдерд╛рдирд┐рдХ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддреЛ.

kubectl рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХрд╛рд▓рд╛ рдкреНрд░рд╡реЗрд╢ рджреЗрдК рдирдХрд╛

рд╣реЗ рд╕реНрдкрд╖реНрдЯ рджрд┐рд╕рддреЗ, рдкрд░рдВрддреБ рдЬрд░ рдПрдХрд╛рдзрд┐рдХ рд╕рдВрдШ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрд╕рд╛рдареА рд╕рдорд╛рди рдХреНрд▓рд╕реНрдЯрд░ рд╡рд╛рдкрд░рдд рдЕрд╕рддреАрд▓ (рдЬреНрдпрд╛рд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ), рддрд░ рддреБрдореНрд╣реА рдлрдХреНрдд рдкреНрд░рддреНрдпреЗрдХрд╛рд▓рд╛ рджреЗрдК рдирдпреЗ kubectl. рдЖрджреЗрд╢ рд╡реЗрдЧрд│реЗ рдХрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ, рддреНрдпрд╛рддреАрд▓ рдкреНрд░рддреНрдпреЗрдХрд╛рд▓рд╛ рддреНрдпрд╛рдЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рдиреЗрдорд╕реНрдкреЗрд╕ рджреЗрдгреЗ рдЖрдгрд┐ RBAC рдзреЛрд░рдгрд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдкреНрд░рд╡реЗрд╢ рдорд░реНрдпрд╛рджрд┐рдд рдХрд░рдгреЗ.

рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдбрд╕рд╛рдареА рдкреНрд░рд╡реЗрд╢, рд╡рд╛рдЪрдгреЗ, рддрдпрд╛рд░ рдХрд░рдгреЗ, рд╣рдЯрд╡рдгреЗ рдЖрдгрд┐ рдЗрддрд░ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреЗ рдЕрдзрд┐рдХрд╛рд░ рджреЗрдКрди рддреБрдореНрд╣реА рдЧреЛрдВрдзрд│рд╛рдд рдкрдбреВ рд╢рдХрддрд╛. рдкрд░рдВрддреБ рдореБрдЦреНрдп рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рдЧреБрдкреНрддрддреЗрд╡рд░ рдкреНрд░рд╡реЗрд╢ рдорд░реНрдпрд╛рджрд┐рдд рдХрд░рдгреЗ, рдХреЗрд╡рд│ рдкреНрд░рд╢рд╛рд╕рдХрд╛рдВрдирд╛ рдкрд░рд╡рд╛рдирдЧреА рджреЗрдгреЗ. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рдЖрдореНрд╣реА рдЬреЗ рдХреНрд▓рд╕реНрдЯрд░рдЪреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдХрд░реВ рд╢рдХрддрд╛рдд рдЖрдгрд┐ рдЬреЗ рддреНрдпрд╛рд╕ рдлрдХреНрдд рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░реВ рд╢рдХрддрд╛рдд рддреНрдпрд╛рдВрдЪреНрдпрд╛рдд рдлрд░рдХ рдХрд░реВ.

рдкреЙрдб рдмрдЬреЗрдЯ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдЕрд░реНрдЬрд╛рд╕рд╛рдареА рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдирд╛рд╣реА рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд╢реА рдХрд░рд╛рд╡реА? PodDisruptionBudget рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ PodDisruptionBudget.

рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рд╡реЗрд│реЛрд╡реЗрд│реА рдЕрдкрдбреЗрдЯ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рдиреЛрдбреНрд╕ рд░рд┐рдХрд╛рдореЗ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдХрд╛рд╣реАрд╣реА рд╕реНрдерд┐рд░ рдирд╛рд╣реА, рд╣реЗ рд╡рд╛рд╕реНрддрд╡ рдЖрд╣реЗ. рдПрдХрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЙрджрд╛рд╣рд░рдгрд╛рдВрд╕рд╣ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЬрдирд╛рдордзреНрдпреЗ PDB (PodDisruptionBudget) рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЕрд╕рд╛рд╡рд╛. рд╣реЗ рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рд▓рд╛рдЧреВ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд╛рдзреНрдпрд╛ yaml рдлрд╛рдЗрд▓рдордзреНрдпреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗ. рд╡рд┐рд╢рд┐рд╖реНрдЯ PDB рдЪреЗ рдХрд╡реНрд╣рд░реЗрдЬ рдХреНрд╖реЗрддреНрд░ рд▓реЗрдмрд▓ рдирд┐рд╡рдбрдХрд░реНрддреНрдпрд╛рдВрджреНрд╡рд╛рд░реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ.

рдЯреАрдк: рдЬреЗрд╡реНрд╣рд╛ рдмрдЬреЗрдЯрдЪреЗ рдЙрд▓реНрд▓рдВрдШрди рдЙрд▓рдЯ рдХрд░рддрд╛ рдпреЗрддреЗ рддреЗрд╡реНрд╣рд╛рдЪ PDB рдмрдЬреЗрдЯ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрддрд▓реЗ рдЬрд╛рддреЗ (рдРрдЪреНрдЫрд┐рдХ рд╡реНрдпрддреНрдпрдп). рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдЕрдпрд╢рд╕реНрд╡реА рд╣реЛрдгреНрдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд, PDB рдХрд╛рд░реНрдп рдХрд░рдгрд╛рд░ рдирд╛рд╣реА.

рдЙрджрд╛рд╣рд░рдг PDB:

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: app-a-pdb
spec:
  minAvailable: 2
  selector:
      matchLabels:
        app: app-a

рджреЛрди рдореБрдЦреНрдп рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЖрд╣реЗрдд matchLabels ╨╕ minAvailable. рдмрдЬреЗрдЯ рдХреЛрдгрддреНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдирд╛ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реЗ рдкрд╣рд┐рд▓реЗ рдкреЕрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдорд╛рдЭреНрдпрд╛рдХрдбреЗ рд▓реЗрдмрд▓рд╛рдВрд╕рд╣ рдЙрдкрдпреЛрдЬрди рдЕрд╕рд▓реНрдпрд╛рд╕ app: app-a ╨╕ app: app-b, рдирдВрддрд░ рд╣рд╛ PDB рдлрдХреНрдд рдкрд╣рд┐рд▓реНрдпрд╛рд▓рд╛ рд▓рд╛рдЧреВ рд╣реЛрдИрд▓.

рдкреЕрд░рд╛рдореАрдЯрд░ minAvailable рдиреЛрдб рд░рд┐рдХрд╛рдореЗ рдХрд░рддрд╛рдирд╛ (рд╕реНрд╡рдЪреНрдЫрддрд╛) рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрддрд▓реЗ рдЬрд╛рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд, рд░рд┐рдХрд╛рдореЗ рдХрд░рддрд╛рдирд╛, рд╕рд░реНрд╡ рдЙрджрд╛рд╣рд░рдгреЗ рдмреЗрджрдЦрд▓ рдХреЗрд▓реА рдЬрд╛рддрд╛рдд app: app-a, рджреЛрди рд╡рдЧрд│рддрд╛.

рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╡реЗрд│реА рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреА рдХрд┐рддреА рдЙрджрд╛рд╣рд░рдгреЗ рдЪрд╛рд▓реВ рдЕрд╕рд╛рд╡реА рд╣реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЖрд░реЛрдЧреНрдп рдирд┐рд░реАрдХреНрд╖рдг

рдЕрд╕реЗ рдирд┐рд░реАрдХреНрд╖рдг рджреЛрди рдкреНрд░рдХрд╛рд░реЗ рд╢рдХреНрдп рдЖрд╣реЗ: рд░реЗрдбрд┐рдиреЗрд╕ рдХрд┐рдВрд╡рд╛ рд▓рд╛рдЗрд╡реНрд╣рдиреЗрд╕ рдЪрд╛рдЪрдгреНрдпрд╛ рд╡рд╛рдкрд░реВрди.

рдкреНрд░рдердо рдкреНрд░реЛрдм (рддрддреНрдкрд░рддрд╛) рдХрдВрдЯреЗрдирд░рдЪреА рд░рд╣рджрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рдЪреА рддрдпрд╛рд░реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ.

рджреБрд╕рд░рд╛ (рд▓рд╛рдЗрд╡реНрд╣рдиреЗрд╕) рдХрдВрдЯреЗрдирд░ рдирд┐рд░реЛрдЧреА рдЖрд╣реЗ рдХрд┐рдВрд╡рд╛ рдкреБрдиреНрд╣рд╛ рд╕реБрд░реВ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рджрд░реНрд╢рд╡рд┐рддреЗ.

рд╕рдВрдмрдВрдзрд┐рдд рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрдХреНрдд рддреИрдирд╛рддреАрд╕рд╛рдареА yaml рдордзреНрдпреЗ рдЬреЛрдбрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд. рддреЗрдереЗ рддреБрдореНрд╣реА рдХрд╛рд▓рдмрд╛рд╣реНрдпрддрд╛, рд╡рд┐рд▓рдВрдм рд╡реЗрд│рд╛ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рдЪрд╛рдЪрдгреАрдЪреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛. рддреНрдпрд╛рдВрдЪреНрдпрд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓ рдкрд╣рд╛ Kubernetes рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг.

рдЯреЕрдЧ рд╕рд░реНрд╡рддреНрд░ рдЖрд╣реЗрдд

рд▓реЗрдмрд▓реНрд╕ рд╣реА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреАрд▓ рдореВрд▓рднреВрдд рд╕рдВрдХрд▓реНрдкрдирд╛рдВрдкреИрдХреА рдПрдХ рдЖрд╣реЗ. рддреЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдирд╛ рдПрдХрдореЗрдХрд╛рдВрд╢реА рдореБрдХреНрддрдкрдгреЗ рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддрд╛рдд, рддрд╕реЗрдЪ рд▓реЗрдмрд▓рд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдХреНрд╡реЗрд░реА рддрдпрд╛рд░ рдХрд░рддрд╛рдд. Kubernetes рдордзреНрдпреЗ, рддреБрдореНрд╣реА рдХреНрд▓рд╛рдпрдВрдЯрдХрдбреЗ рдЬрд╛рдК рд╢рдХрддрд╛ рдЖрдгрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреЕрдЧрд╕рд╛рдареА рдЗрд╡реНрд╣реЗрдВрдЯ рдкрд╛рд╣реВ рд╢рдХрддрд╛.

рдЖрдкрдг рдЯреЕрдЧрд╕рд╣ рдЬрд╡рд│рдЬрд╡рд│ рдХрд╛рд╣реАрд╣реА рдХрд░реВ рд╢рдХрддрд╛, рдкрд░рдВрддреБ рддреНрдпрд╛рдЪ рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╡рд╛рддрд╛рд╡рд░рдг рддрдпрд╛рд░ рдХрд░рдгреЗ рд╣реЗ рдПрдХ рдЪрд╛рдВрдЧрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдЖрд╣реЗ.

рд╕рдордЬрд╛ рддреБрдореНрд╣реА рдпрд╛рд╕рд╛рдареА рд╕рдорд╛рди рдХреНрд▓рд╕реНрдЯрд░ рд╡рд╛рдкрд░рддрд╛ dev ╨╕ qa. рдпрд╛рдЪрд╛ рдЕрд░реНрде рддреБрдореНрд╣реА рдЕрд░реНрдЬ рдХрд░реВ рд╢рдХрддрд╛ app-a, рдПрдХрд╛рдЪ рд╡реЗрд│реА рджреЛрдиреНрд╣реА рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдХрд╛рдо рдХрд░рдгреЗ qa ╨╕ dev. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЖрдореНрд╣реА рдпреЛрдЧреНрдп рдкреЕрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдиреНрд╕реНрдЯрдиреНрд╕рдордзреНрдпреЗ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░реВ рд╢рдХрддреЛ environment. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде app: app-a ╨╕ environment: dev рдПрдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рд╕рд╛рдареА, рдЖрдгрд┐ app: app-a ╨╕ environment: qa рджреБрд╕рд▒реНрдпрд╛рд╕рд╛рдареА.

рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреНрдпрд╛ рджреЛрдиреНрд╣реА рдШрдЯрдирд╛рдВрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдПрдХрд╛рдЪ рд╡реЗрд│реА рдЪрд╛рдЪрдгреА рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА.

рд╕рдВрдШрдЯрд┐рдд рд╡реНрд╣рд╛

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╣реА рдПрдХ рдЕрддрд┐рд╢рдп рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреНрд░рдгрд╛рд▓реА рдЖрд╣реЗ, рдкрд░рдВрддреБ рдХреЛрдгрддреАрд╣реА рдкреНрд░рдгрд╛рд▓реА рдЕрдЦреЗрд░реАрд╕ рдмрд░реНрдпрд╛рдЪ рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕рд╣ рдЕрдбрдХреВ рд╢рдХрддреЗ. рдХреБрдмреЗрд▓реЗрдЯ рддреБрдореНрд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдгрд┐ рддрдкрд╛рд╕рдгреНрдпрд╛ рдЪрд╛рд▓рд╡рддреЗ, рддрд╕реЗрдЪ рд╕реНрд╡рддрдГрдЪреЗ.

рдЕрд░реНрдерд╛рдд, рдПрдХ рдЕрдирд╛рде рд╕реЗрд╡рд╛ рдкреНрд░рдгрд╛рд▓реАрдЪреА рдЧрддреА рдХрдореА рдХрд░рдгрд╛рд░ рдирд╛рд╣реА рдЖрдгрд┐ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреА рд░рдЪрдирд╛ рдЬрдорд┐рдиреАрдкрд╛рд╕реВрди рд╕реНрдХреЗрд▓ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ. рдкрд░рдВрддреБ рдЬрд░ рдПрдХрд╛ рд╕реЗрд╡реЗрдРрд╡рдЬреА рджрд╢рд▓рдХреНрд╖ рджрд┐рд╕рд▓реЗ рддрд░ рдХреБрдмреЗрд▓реЗрдЯ рдЧреБрджрдорд░рдгреНрдпрд╛рд╕ рд╕реБрд░рд╡рд╛рдд рд╣реЛрддреЗ.

рдХрд╛рд╣реА рдХрд╛рд░рдгрд╛рд╕реНрддрд╡ рддреБрдореНрд╣реА рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ (рдХрдВрдЯреЗрдирд░, рдЗрдореЗрдЬ, рдХрд╛рд╣реАрд╣реА) рд╣рдЯрд╡рд▓реНрдпрд╛рд╕, рдлрдХреНрдд рд╕рдВрдкреВрд░реНрдг рд╕рд╛рдлрд╕рдлрд╛рдИрдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛.

рдЧреЛ рднреЗрдЯрд╛

рдЖрдореНрд╣реА рд╢реЗрд╡рдЯрдЪрд╛ рдореБрдЦреНрдп рд╕рд▓реНрд▓рд╛ рдЬрддрди рдХреЗрд▓рд╛. рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╢рд┐рдХрд╛.

Kubernetes Go рдордзреНрдпреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ, рд╕рд░реНрд╡ рд╡рд┐рд╕реНрддрд╛рд░ Go рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рдХреНрд▓рд╛рдпрдВрдЯ-рдЧреЛ рдХреНрд▓рд╛рдпрдВрдЯ рд▓рд╛рдпрдмреНрд░рд░реА рджреЗрдЦреАрд▓ рдЕрдзрд┐рдХреГрддрдкрдгреЗ рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗ.

рд╣реЗ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдЖрдгрд┐ рдордиреЛрд░рдВрдЬрдХ рдЧреЛрд╖реНрдЯреАрдВрд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕рд┐рд╕реНрдЯрдорд▓рд╛ рдЖрдкрд▓реНрдпрд╛ рдЪрд╡реАрдиреБрд╕рд╛рд░ рд╡рд┐рд╕реНрддреГрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА. рддреНрдпрд╛рдореБрд│реЗ, рддреБрдореНрд╣реА рдбреЗрдЯрд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреИрдирд╛рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд┐рдВрд╡рд╛ рдлрдХреНрдд рдХрдВрдЯреЗрдирд░ рд╕рд╛рдл рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдордЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛.

рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╢рд┐рдХрдгреЗ рдЖрдгрд┐ рдХреНрд▓рд╛рдпрдВрдЯ-рдЧреЛрд╡рд░ рдкреНрд░рднреБрддреНрд╡ рдорд┐рд│рд╡рдгреЗ рд╣рд╛ рдХрджрд╛рдЪрд┐рдд рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрд╡рд╛рдЪрд╛ рд╕рд▓реНрд▓рд╛ рдЖрд╣реЗ рдЬреЛ рддреБрдореНрд╣реА рдирд╡реАрди рдХреБрдмрд░рдиреЗрдЯ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рджреЗрдК рд╢рдХрддрд╛.

Mail.ru рдХреНрд▓рд╛рдЙрдб рд╕реЛрд▓реНрдпреВрд╢рдиреНрд╕рдЪреНрдпрд╛ рд╕рдорд░реНрдердирд╛рд╕рд╣ рдЕрдиреБрд╡рд╛рджрд┐рдд

рдЕрдЬреВрди рдХрд╛рдп рд╡рд╛рдЪрд╛рдпрдЪреЗ:

  1. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреАрд▓ рдСрдЯреЛрд╕реНрдХреЗрд▓рд┐рдВрдЧрдЪреЗ рддреАрди рд╕реНрддрд░ рдЖрдгрд┐ рддреЗ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рдпрдЪреЗ.
  2. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╡рд░реНрдХрд░ рдиреЛрдбреНрд╕: рдЕрдиреЗрдХ рд▓рд╣рд╛рди рдХрд┐рдВрд╡рд╛ рдХрд╛рд╣реА рдореЛрдареЗ?
  3. 25 рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рддреИрдирд╛рдд рдЖрдгрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рд╕рд╛рдзрдиреЗ.

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛