рд╢реАрд░реНрд╖ 10 Kubernetes рдЪрд╛рд▓ рд░ рд╕реБрдЭрд╛рд╡рд╣рд░реВ

рд╢реАрд░реНрд╖ 10 Kubernetes рдЪрд╛рд▓ рд░ рд╕реБрдЭрд╛рд╡рд╣рд░реВ

рдЗрдиреНрдЯрд░рдиреЗрдЯрдорд╛ рдзреЗрд░реИ рд╕рдиреНрджрд░реНрдн рд╕рд╛рд╣рд┐рддреНрдпрд╣рд░реВ рдЫрдиреН, рддрд░ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рд╕рд░рд▓ рд╕рд▓реНрд▓рд╛рд╣ рд╕рдмреИрднрдиреНрджрд╛ рдореВрд▓реНрдпрд╡рд╛рди рд╣реБрдиреНрдЫред рдЯреЛрд▓реА Kubernetes aaS Mail.ru рдмрд╛рдЯ рдЕрдиреБрд╡рд╛рдж рджрд╕ рдЪрд╛рд▓ рд░ рд╕реБрдЭрд╛рд╡рд╣рд░реВрдХреЛ рдЪрдпрди, рдЬреБрди рд▓реЗрдЦрдХреЛ рд▓реЗрдЦрдХрд▓реЗ Kubernetes рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реЗрдХреЛ рдПрдХ рд╡рд░реНрд╖ рдкрдЫрд┐ рд╕рдЩреНрдХрд▓рди рдЧрд░реЗред рд╕реБрдЭрд╛рд╡рд╣рд░реВ рдорд╣рддреНрддреНрд╡ рдЕрдиреБрд╕рд╛рд░ рдХреНрд░рдордмрджреНрдз рдЫреИрдирдиреН, рддрд░ рд╣рд╛рдореА рд╕рдмреИрд▓реЗ рдЖрдлреНрдиреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╣рд┐ рдЙрдкрдпреЛрдЧреА рдкрд╛рдЙрдиреБрд╣реБрдиреЗрдЫ рднрдиреНрдиреЗ рд▓рд╛рдЧреНрдЫред

Kubernetes рд╕рдВрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рд░рд▓ рдЖрджреЗрд╢

рд╕реБрд░реБ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА, Kubernetes рд╕рдВрдЧ рдХрд╛рдо рдорд╛ рд╕рд╛рдпрдж рд╕рд░рд▓ рд░ рд╕рдмреИ рднрдиреНрджрд╛ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпред рдирд┐рдореНрди рдЖрджреЗрд╢рд▓реЗ рдЖрджреЗрд╢ рдкреВрд░рд╛ рдЧрд░реНрди рд╕рдХреНрд╖рдо рдЧрд░реНрджрдЫ kubectl bash рдЦреЛрд▓ рдорд╛:

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

рдЕрдЯреЛрдлрд┐рд▓ kubectl .bashrc рдлрд╛рдЗрд▓рдорд╛ рд▓реЗрдЦрд┐рдиреЗрдЫ рд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рд╢реЗрд▓ рд╕реБрд░реБ рдЧрд░реНрджрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╕рдХреНрд░рд┐рдп рд╣реБрдиреЗрдЫред рдпрд╕рд▓реЗ рд▓рд╛рдореЛ рдЖрджреЗрд╢рд╣рд░реВ рд░ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдЯрд╛рдЗрдк рдЧрд░реНрди рдЧрддрд┐ рджрд┐рдиреНрдЫ рдЬрд╕реНрддреИ all-namespacesред рдорд╛ рдердк рдкрдвреНрдиреБрд╣реЛрд╕реН Kubernetes bash рдорджреНрджрдд.

рдирд╛рдорд╕реНрдерд╛рдирдорд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореЗрдореЛрд░реА рд░ CPU рд╕реАрдорд╛рд╣рд░реВ

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

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

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

рдпрд╕реНрддреЛ yaml рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдХреБрдиреИ рдкрдирд┐ рдиреЗрдорд╕реНрдкреЗрд╕рдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдирд╛рдо рд╕реНрдерд╛рдирдорд╛ limit-exampleред рдЕрдм рдпреЛ рдирд╛рдо рд╕реНрдерд╛рдирдорд╛ рддреИрдирд╛рде рдЧрд░рд┐рдПрдХреЛ рдХреБрдиреИ рдкрдирд┐ рдХрдиреНрдЯреЗрдирд░рдХреЛ рд╕реАрдорд╛ 512Mi рд╣реБрдиреЗрдЫ, рдЬрдмрд╕рдореНрдо рдпреЛ рдХрдиреНрдЯреЗрдирд░рдХреЛ рд▓рд╛рдЧрд┐ рдЕрд░реНрдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реАрдорд╛ рдердкрд┐рдПрдХреЛ рдЫреИрдиред

Kubernetes рдХреЛ рдкреБрд░рд╛рдиреЛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдорд╛ рдлреЛрд╣реЛрд░ рд╕рдЩреНрдХрд▓рди

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

рд╕рдореНрднрд╡рддрдГ рддрдкрд╛рдИрдВрдХреЛ рдХрдиреНрдЯреЗрдирд░ var/lib/docker рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕рдХреЛ 50% рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫ, рддрд░ рдЗрдиреЛрдбрд╣рд░реВ рд╕рдорд╛рдкреНрдд рд╣реБрди рд╕рдХреНрдЫ, рдЬрд╕рд▓реЗ рдХрд╛рдорджрд╛рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд╕реНрдпрд╛ рдирд┐рдореНрддреНрдпрд╛рдЙрдБрдЫред

1.4 рджреЗрдЦрд┐ 1.6 рд╕рдореНрдо рдХреБрдмреЗрд▓реЗрдЯрдХреЛ рдкреБрд░рд╛рдиреЛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдЭрдгреНрдбрд╛ рдердкреНрдиреБ рдкрд░реНрдЫ:

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

1.7 рд░ рдкрдЫрд┐рдХреЛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдорд╛ рдпреЛ рдЭрдгреНрдбрд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫред рдпрджреНрдпрдкрд┐, рдЕрдШрд┐рд▓реНрд▓реЛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрд▓реЗ рдЗрдиреЛрдб рд╕реАрдорд╛рд▓рд╛рдИ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрджреИрдирдиреНред

Minikube... рд╕рд╛рдиреЛ рддрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕реНрдерд╛рдиреАрдп Kubernetes

Minikube рд╕реНрдерд╛рдиреАрдп Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рдЪрд▓рд╛рдЙрди рд╕рдЬрд┐рд▓реЛ рддрд░рд┐рдХрд╛ рд╣реЛред рдпреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрджреЗрд╢ рд╕рдВрдЧ рд╕реБрд░реБ рдЧрд░рд┐рдПрдХреЛ рдЫ:

minikube start

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

рд╢реАрд░реНрд╖ 10 Kubernetes рдЪрд╛рд▓ рд░ рд╕реБрдЭрд╛рд╡рд╣рд░реВ
рджреГрд╖реНрдЯрд╛рдиреНрдд рд╕реНрд░реЛрдд

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

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

eval $(minikube docker-env)

рдЕрдм рд╣рд╛рдореА рд╕реНрдерд╛рдиреАрдп Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред

рд╕рдмреИрд▓рд╛рдИ kubectl рдкрд╣реБрдБрдЪ рдирджрд┐рдиреБрд╣реЛрд╕реН

рдпреЛ рд╕реНрдкрд╖реНрдЯ рджреЗрдЦрд┐рдиреНрдЫ, рддрд░ рдпрджрд┐ рдзреЗрд░реИ рдЯреЛрд▓реАрд╣рд░реВрд▓реЗ рддрд┐рдиреАрд╣рд░реВрдХрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд╛рди рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИрдЫрдиреН (рдЬреБрди рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рд╣реЛ), рддрдкрд╛рдИрдВрд▓реЗ рд╕рдмреИрд▓рд╛рдИ рджрд┐рдиреБ рд╣реБрдБрджреИрдиред kubectlред рдЖрджреЗрд╢рд╣рд░реВ рдЕрд▓рдЧ рдЧрд░реНрдиреБ рд░рд╛рдореНрд░реЛ рд╣реБрдиреНрдЫ, рддреА рдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХрд▓рд╛рдИ рдЖрдлреНрдиреИ рдирд╛рдо рд╕реНрдерд╛рди рддреЛрдХреНрди рд░ RBAC рдиреАрддрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрд╣реБрдБрдЪ рд╕реАрдорд┐рдд рдЧрд░реНрдиред

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

рдкреЛрдб рдмрдЬреЗрдЯрд╣рд░реВ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрдиреБрд╣реЛрд╕реН

Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХрд╕рд░реА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреЗ? 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 рдорд╛ рдЖрдзрд╛рд░рднреВрдд рдЕрд╡рдзрд╛рд░рдгрд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рд╣реЛред рддрд┐рдиреАрд╣рд░реВрд▓реЗ рд╡рд╕реНрддреБрд╣рд░реВрд▓рд╛рдИ рд╕реНрд╡рддрдиреНрддреНрд░ рд░реВрдкрдорд╛ рдПрдХрдЕрд░реНрдХрд╛рд╕рдБрдЧ рд╕рдЮреНрдЪрд╛рд░ рдЧрд░реНрди, рд╕рд╛рдереИ рд▓реЗрдмрд▓рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рд╢реНрдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред Kubernetes рдорд╛, рддрдкрд╛рдИрдВ рдЧреНрд░рд╛рд╣рдХрдорд╛ рдЬрд╛рди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреНрдпрд╛рдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдШрдЯрдирд╛рд╣рд░реВ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

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

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

рдпрд╕рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рджреБрдмреИ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдПрдХреИ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрдиред

рд╕рдВрдЧрдард┐рдд рд╣реБрдиреБрд╣реЛрд╕реН

Kubernetes рдПрдХ рдзреЗрд░реИ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреНрд░рдгрд╛рд▓реА рд╣реЛ, рддрд░ рдХреБрдиреИ рдкрдирд┐ рдкреНрд░рдгрд╛рд▓реА рдЕрдиреНрддрддрдГ рдзреЗрд░реИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реБ рд╕рдВрдЧ рдлрдВрд╕рд┐рдПрдХреЛ рд╣реБрди рд╕рдХреНрдЫред Kubelet рд▓реЗ рддрдкрд╛рдЗрдБрд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрднрдПрдХрд╛ рд╕рдмреИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд░ рдЬрд╛рдБрдЪрд╣рд░реВ рдЪрд▓рд╛рдЙрдБрдЫ, рд╕рд╛рдереИ рдпрд╕рдХреЛ рдЖрдлреНрдиреИред

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

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

рдЬрд╛рдиреБрд╣реЛрд╕реН рднреЗрдЯреНрдиреБрд╣реЛрд╕реН

рд╣рд╛рдореАрд▓реЗ рдЕрдиреНрддрд┐рдордХреЛ рд▓рд╛рдЧрд┐ рдореБрдЦреНрдп рд╕рд▓реНрд▓рд╛рд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрдпреМрдВред рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ рд╕рд┐рдХреНрдиреБрд╣реЛрд╕реНред

Kubernetes Go рдорд╛ рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ, рд╕рдмреИ рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВ Go рдорд╛ рд▓реЗрдЦрд┐рдПрдХрд╛ рдЫрдиреН, рд░ рдХреНрд▓рд╛рдЗрдиреНрдЯ-рдЧреЛ рдХреНрд▓рд╛рдЗрдиреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрдирд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реВрдкрдорд╛ рд╕рдорд░реНрдерд┐рдд рдЫред

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

рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ рд╕рд┐рдХреНрдиреБ рд░ рдХреНрд▓рд╛рдЗрдиреНрдЯ-рдЧреЛрдорд╛ рдирд┐рдкреБрдгрддрд╛ рд╣рд╛рд╕рд┐рд▓ рдЧрд░реНрдиреБ рд╕рд╛рдпрдж рддрдкрд╛рдИрдВрд▓реЗ рдирдпрд╛рдБ Kubernetes рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рджрд┐рди рд╕рдХреНрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╕рд▓реНрд▓рд╛рд╣ рд╣реЛред

Mail.ru рдХреНрд▓рд╛рдЙрдб рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рдорд░реНрдерди рд╕рдВрдЧ рдЕрдиреБрд╡рд╛рджрд┐рдд

рдЕрд░реБ рдХреЗ рдкрдвреНрдиреБ:

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

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

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