etcd Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдбрд╛рдЯрд╛рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрднрд╡ рд╕реАрдзрд╛ (K8s API рдмрд┐рдирд╛)

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

etcd Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдбрд╛рдЯрд╛рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрднрд╡ рд╕реАрдзрд╛ (K8s API рдмрд┐рдирд╛)

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрдХреЛ рд╕реНрдерд╛рдиреАрдп рдореЗрд╕рд┐рдирдмрд╛рдЯ рд╕реЗрд╡рд╛рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ memcached.staging.svc.cluster.localред рд╣рд╛рдореАрд▓реЗ рдпреЛ рдХреНрд╖рдорддрд╛ рдХреНрд▓рд╕реНрдЯрд░ рднрд┐рддреНрд░ VPN рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рджрд╛рди рдЧрд░реНрдЫреМрдВ рдЬрд╕рдорд╛ рдХреНрд▓рд╛рдЗрдиреНрдЯ рдЬрдбрд╛рди рд╣реБрдиреНрдЫред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдЧреНрд░рд╛рд╣рдХрд▓рд╛рдИ рдкреЛрдб, рд╕реЗрд╡рд╛рд╣рд░реВ рд░ рдкреБрд╢ рдХреНрд▓рд╕реНрдЯрд░ DNS рдХреЛ рд╕рдмрдиреЗрдЯрд╣рд░реВ рдШреЛрд╖рдгрд╛ рдЧрд░реНрдЫреМрдВред рдпрд╕реИрд▓реЗ, рдЬрдм рдЧреНрд░рд╛рд╣рдХ рд╕реЗрд╡рд╛рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджрдЫ memcached.staging.svc.cluster.local, рдЕрдиреБрд░реЛрдз рдХреНрд▓рд╕реНрдЯрд░ DNS рдорд╛ рдЬрд╛рдиреНрдЫ рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдорд╛ рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗрд╡рд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд╛ рдкреЛрдб рдареЗрдЧрд╛рдирд╛рдмрд╛рдЯ рдпреЛ рд╕реЗрд╡рд╛рдХреЛ рдареЗрдЧрд╛рдирд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫред

рд╣рд╛рдореА kubeadm рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ K8s рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдЫреМрдВ, рдЬрд╣рд╛рдБ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реЗрд╡рд╛ рд╕рдмрдиреЗрдЯ рд╣реЛ 192.168.0.0/16, рд░ рдкреЛрдб рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдЫ 10.244.0.0/16ред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд╕рдмреИ рдХреБрд░рд╛ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрдЫ, рддрд░ рддреНрдпрд╣рд╛рдБ рдХреЗрд╣реА рдмрд┐рдиреНрджреБрд╣рд░реВ рдЫрдиреН:

  • рд╕рдмрдиреЗрдЯ 192.168.*.* рдкреНрд░рд╛рдп: рдХреНрд▓рд╛рдЗрдиреНрдЯ рдЕрдлрд┐рд╕ рдиреЗрдЯрд╡рд░реНрдХрд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рд░ рдЕрдЭ рдзреЗрд░реИ рдкрдЯрдХ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдЧреГрд╣ рдиреЗрдЯрд╡рд░реНрдХрд╣рд░реВрдорд╛ред рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рджреНрд╡рдиреНрджреНрд╡рдХреЛ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫреМрдВ: рдЧреГрд╣ рд░рд╛рдЙрдЯрд░рд╣рд░реВ рдпрд╕ рд╕рдмрдиреЗрдЯрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫрдиреН рд░ VPN рд▓реЗ рдпреА рд╕рдмрдиреЗрдЯрд╣рд░реВрд▓рд╛рдИ рдХреНрд▓рд╕реНрдЯрд░рдмрд╛рдЯ рдЧреНрд░рд╛рд╣рдХрдорд╛ рдзрдХреЗрд▓реНрдЫред
  • рд╣рд╛рдореАрд╕рдБрдЧ рдзреЗрд░реИ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ рдЫрдиреН (рдЙрддреНрдкрд╛рджрди, рдЪрд░рдг рд░/рд╡рд╛ рдзреЗрд░реИ рджреЗрд╡ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ)ред рддреНрдпрд╕рдкрдЫрд┐, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рддреА рд╕рдмреИрд╕рдБрдЧ рдкреЛрдбрд╣рд░реВ рд░ рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд╛рди рд╕рдмрдиреЗрдЯрд╣рд░реВ рд╣реБрдиреЗрдЫрдиреН, рдЬрд╕рд▓реЗ рдзреЗрд░реИ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдорд╛ рд╕реЗрд╡рд╛рд╣рд░реВрд╕рдБрдЧ рдПрдХрд╕рд╛рде рдХрд╛рдо рдЧрд░реНрди рдареВрд▓реЛ рдХрдард┐рдирд╛рдЗрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫред

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

рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореАрд▓реЗ рдЖрдлреИрд▓рд╛рдИ рд╕реЛрдзреНрдпреМрдВ: рдЕрд╡рд╕реНрдерд┐рдд рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╕рдмрдиреЗрдЯ рдХрд╕рд░реА рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреЗ?

рдирд┐рд░реНрдгрдп рдЦреЛрдЬреНрджреИ

рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдорд╛рдиреНрдп рдЕрднреНрдпрд╛рд╕ рдкреБрди: рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╣реЛ рд╕рдмреИ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдкреНрд░рдХрд╛рд░рдХрд╛ рд╕рд╛рде рд╕реЗрд╡рд╛рд╣рд░реВред рд╡рд┐рдХрд▓реНрдкрдХреЛ рд░реВрдкрдорд╛, рд╕рд▓реНрд▓рд╛рд╣ рджрд┐рди рд╕рдХреНрдЫ рд░ рдпреЛ:

рдирд┐рдореНрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рд╕рдорд╕реНрдпрд╛ рдЫ: рд╕рдмреИ рдХреБрд░рд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реЗрдкрдЫрд┐, /etc/resolv.conf рдорд╛ DNS рдиреЗрдорд╕рд░реНрднрд░рдХреЛ рд░реВрдкрдорд╛ рдкреЛрдбрд╣рд░реВ рдкреБрд░рд╛рдиреЛ рдЖрдИрдкреАрд╕рдБрдЧ рдЖрдЙрдБрдЫрдиреНред
рдореИрд▓реЗ рдЕрдЭреИ рд╕рдорд╛рдзрд╛рди рдлреЗрд▓рд╛ рдкрд╛рд░реЗрдХреЛ рдЫреИрди, рдореИрд▓реЗ kubeadm рд░рд┐рд╕реЗрдЯрдХреЛ рд╕рд╛рде рд╕рдореНрдкреВрд░реНрдг рдХреНрд▓рд╕реНрдЯрд░ рд░рд┐рд╕реЗрдЯ рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛ рд░ рдпрд╕рд▓рд╛рдИ рдлреЗрд░рд┐ рд╕реБрд░реБ рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛред

рддрд░ рдпреЛ рд╕рдмреИрдХрд╛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдЫреИрди... рдпрд╣рд╛рдБ рд╣рд╛рдореНрд░реЛ рдорд╛рдорд▓рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдердк рд╡рд┐рд╕реНрддреГрдд рдкрд░рд┐рдЪрдпрд╣рд░реВ рдЫрдиреН:

  • рдлрд▓рд╛рдиреЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ;
  • рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ рджреБрдмреИ рдХреНрд▓рд╛рдЙрдбрд╣рд░реВрдорд╛ рд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░рдорд╛ рдЫрдиреН;
  • рдо рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╕рдмреИ рд╕реЗрд╡рд╛рд╣рд░реВ рдкреБрди: рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирдмрд╛рдЯ рдмрдЪреНрди рдЪрд╛рд╣рдиреНрдЫреБ;
  • рддреНрдпрд╣рд╛рдБ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдиреНрдпреВрдирддрдо рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рд╕рд╛рде рд╕рдмреИ рдХреБрд░рд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ;
  • Kubernetes рд╕рдВрд╕реНрдХрд░рдг 1.16.6 рд╣реЛ (рдпрджреНрдпрдкрд┐, рдердк рдЪрд░рдгрд╣рд░реВ рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд╛рди рд╣реБрдиреЗрдЫ);
  • рдореБрдЦреНрдп рдХрд╛рд░реНрдп рднрдиреЗрдХреЛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╕реЗрд╡рд╛ рд╕рдмрдиреЗрдЯрдХреЛ рд╕рд╛рде kubeadm рдкреНрд░рдпреЛрдЧ рдЧрд░реА рддреИрдирд╛рдд рдЧрд░рд┐рдПрдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБ рд╣реЛ 192.168.0.0/16, рдпрд╕рд▓рд╛рдИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреБрд╣реЛрд╕реН 172.24.0.0/16.

рд░ рдпреЛ рдпрд╕реНрддреЛ рднрдпреЛ рдХрд┐ рд╣рд╛рдореА рд▓рд╛рдореЛ рд╕рдордпрджреЗрдЦрд┐ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдорд╛ рдХреЗ рд░ рдХрд╕рд░реА etcd рдорд╛ рднрдгреНрдбрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдпрд╕рдХреЛ рд╕рд╛рде рдХреЗ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рднрдиреЗрд░ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЪрд╛рд╕реЛ рд░рд╛рдЦреЗрдХрд╛ рдерд┐рдпреМрдВ ... рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рд╕реЛрдЪреНрдпреМрдВ: "рдкреБрд░рд╛рдиреЛ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рд╣рд░реВ (рд╕рдмрдиреЗрдЯ) рд▓рд╛рдИ рдирдпрд╛рдБрд╕рдБрдЧ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрджреИ, etcd рдорд╛ рдбрд╛рдЯрд╛ рдЕрдкрдбреЗрдЯ рдХрд┐рди рдирдЧрд░реНрдиреБрд╣реЛрд╕реН? "

etcd рдорд╛ рдбреЗрдЯрд╛ рд╕рдВрдЧ рдХрд╛рдо рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рддрдпрд╛рд░ рдЙрдкрдХрд░рдг рдХреЛ рд▓рд╛рдЧреА рдЦреЛрдЬреА рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рд╣рд╛рдореАрд▓реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗ рдХреЗрд╣рд┐ рдкрдирд┐ рдлреЗрд▓рд╛ рдкрд╛рд░реЗрдиреМрдВред (рд╡реИрд╕реЗ, рдпрджрд┐ рддрдкрд╛рдЗрдБ рдбреЗрдЯрд╛ рд╕рдВрдЧ рд╕реАрдзрд╛ etcd рдорд╛ рдХрд╛рдо рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рдХреБрдиреИ рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╣рд░реБ рдХреЛ рдмрд╛рд░реЗ рдорд╛ рдерд╛рд╣рд╛ рдЫ, рд╣рд╛рдореА рд▓рд┐рдЩреНрдХрд╣рд░реБ рдХреЛ рд╕рд░рд╛рд╣рдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВред) рдпрджреНрдпрдкрд┐, рд░рд╛рдореНрд░реЛ рд╕реБрд░реБрд╡рд╛рдд рдмрд┐рдиреНрджреБ рд╣реЛ рдЖрджрд┐ рд╕рд╣рдпреЛрдЧреА OpenShift рдмрд╛рдЯ (рдпрд╕рдХрд╛ рд▓реЗрдЦрдХрд╣рд░реВрд▓рд╛рдИ рдзрдиреНрдпрд╡рд╛рдж!).

рдпреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛рд▓реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ etcd рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХреНрдЫ рд░ рддреНрдпрд╣рд╛рдБрдмрд╛рдЯ рдЖрджреЗрд╢рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдбреЗрдЯрд╛ рдкрдвреНрди рд╕рдХреНрдЫ ls, get, dump.

etcdhelper рдердкреНрдиреБрд╣реЛрд╕реН

рдЕрд░реНрдХреЛ рд╡рд┐рдЪрд╛рд░ рддрд╛рд░реНрдХрд┐рдХ рдЫ: "рдХрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ etcd рдорд╛ рдбрд╛рдЯрд╛ рд▓реЗрдЦреНрдиреЗ рдХреНрд╖рдорддрд╛ рдердкреЗрд░ рдпреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдердкреНрдирдмрд╛рдЯ рд░реЛрдХреЗрдХреЛ рдЫ?"

рдпреЛ рджреБрдИ рдирдпрд╛рдБ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реБ рд╕рдВрдЧ etcdhelper рдХреЛ рдкрд░рд┐рдорд╛рд░реНрдЬрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рднрдпреЛ changeServiceCIDR ╨╕ changePodCIDRред рдЙрдирдХреЛ рдорд╛ рддрдкрд╛рдИрдВ рдХреЛрдб рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдпрд╣рд╛рдБ.

рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВрд▓реЗ рдХреЗ рдЧрд░реНрдЫ? рдПрд▓реНрдЧреЛрд░рд┐рджрдо changeServiceCIDR:

  • рдПрдХ deserializer рд╕рд┐рд░реНрдЬрдирд╛;
  • CIDR рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  • рд╣рд╛рдореА рдХреНрд▓рд╕реНрдЯрд░рдорд╛ ClusterIP рдкреНрд░рдХрд╛рд░рдХрд╛ рд╕рдмреИ рд╕реЗрд╡рд╛рд╣рд░реВ рдорд╛рд░реНрдлрдд рдЬрд╛рдиреНрдЫреМрдВ:
    • etcd рдмрд╛рдЯ Go рд╡рд╕реНрддреБрдорд╛ рдорд╛рди рдбрд┐рдХреЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН;
    • рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣рд╛рдореА рдареЗрдЧрд╛рдирд╛рдХреЛ рдкрд╣рд┐рд▓реЛ рджреБрдИ рдмрд╛рдЗрдЯрд╣рд░реВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдЫреМрдВ;
    • рд╕реЗрд╡рд╛рд▓рд╛рдИ рдирдпрд╛рдБ рд╕рдмрдиреЗрдЯрдмрд╛рдЯ IP рдареЗрдЧрд╛рдирд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН;
    • рд╕рд┐рд░рд┐рдпрд▓рд╛рдЗрдЬрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЧреЛ рд╡рд╕реНрддреБрд▓рд╛рдИ рдкреНрд░реЛрдЯреЛрдмрдлрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЖрджрд┐рдорд╛ рдирдпрд╛рдБ рдбрд╛рдЯрд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред

рд╕рдорд╛рд░реЛрд╣ changePodCIDR рдореВрд▓рддрдГ рд╕рдорд╛рди changeServiceCIDR - рдХреЗрд╡рд▓ рд╕реЗрд╡рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╕рдореНрдкрд╛рджрди рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛, рд╣рд╛рдореА рдпреЛ рдиреЛрдб рд░ рдкрд░рд┐рд╡рд░реНрддрдирдХреЛ рд▓рд╛рдЧрд┐ рдЧрд░реНрдЫреМрдВ .spec.PodCIDR рдирдпрд╛рдБ рд╕рдмрдиреЗрдЯрдорд╛ред

рдЕрднреНрдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рд╕реЗрд╡рд╛ CIDR рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН

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

рддрдпрд╛рд░реА рдЪрд░рдгрд╣рд░реВ:

  • рдЖрд╡рд╢реНрдпрдХ рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрдирд╛ рд░ рдкреНрдпрд╛рдЪ рдЧрд░рд┐рдПрдХреЛ etcdhelper рд╕рдВрдпреЛрдЬрди;
  • рдмреНрдпрд╛рдХрдЕрдк рдЖрджрд┐ рд░ /etc/kubernetes.

рд╕реЗрд╡рд╛рд╕реАрдЖрдИрдбреАрдЖрд░ рдкрд░рд┐рд╡рд░реНрддрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛:

  • apiserver рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджреИ рд░ рдирд┐рдпрдиреНрддреНрд░рдХ-рдкреНрд░рдмрдиреНрдзрдХ рдкреНрд░рдХрдЯ рд╣реБрдиреНрдЫ;
  • рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреБрди: рдЬрд╛рд░реА;
  • рдЖрджрд┐рдорд╛ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рд╕реЗрд╡рд╛рд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджреИ;
  • рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╕рдмреИ рдкреЛрдбрд╣рд░реВ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдирд┐рдореНрди рд╡рд┐рд╕реНрддреГрдд рд░реВрдкрдорд╛ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдкреВрд░реНрдг рдЕрдиреБрдХреНрд░рдо рд╣реЛред

1. рдбрд╛рдЯрд╛ рдбрдореНрдкрдХреЛ рд▓рд╛рдЧрд┐ etcd-client рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

apt install etcd-client

реи. рдирд┐рд░реНрдорд╛рдг рдЖрджрд┐ рд╕рд╣рдпреЛрдЧрдХрд░реНрддрд╛:

  • Golang рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
    GOPATH=/root/golang
    mkdir -p $GOPATH/local
    curl -sSL https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz | tar -xzvC $GOPATH/local
    echo "export GOPATH="$GOPATH"" >> ~/.bashrc
    echo 'export GOROOT="$GOPATH/local/go"' >> ~/.bashrc
    echo 'export PATH="$PATH:$GOPATH/local/go/bin"' >> ~/.bashrc
  • рд╣рд╛рдореА рдЖрдлреНрдиреЛ рд▓рд╛рдЧрд┐ рдмрдЪрдд рдЧрд░реНрдЫреМрдВ etcdhelper.go, рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреБрд╣реЛрд╕реН:
    wget https://raw.githubusercontent.com/flant/examples/master/2020/04-etcdhelper/etcdhelper.go
    go get go.etcd.io/etcd/clientv3 k8s.io/kubectl/pkg/scheme k8s.io/apimachinery/pkg/runtime
    go build -o etcdhelper etcdhelper.go

3. рдмреНрдпрд╛рдХрдЕрдк рдЖрджрд┐ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН:

backup_dir=/root/backup
mkdir ${backup_dir}
cp -rL /etc/kubernetes ${backup_dir}
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --key=/etc/kubernetes/pki/etcd/server.key --cert=/etc/kubernetes/pki/etcd/server.crt --endpoints https://192.168.199.100:2379 snapshot save ${backup_dir}/etcd.snapshot

4. Kubernetes рдирд┐рдпрдиреНрддреНрд░рдг рд╡рд┐рдорд╛рди manifests рдорд╛ рд╕реЗрд╡рд╛ рд╕рдмрдиреЗрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ /etc/kubernetes/manifests/kube-apiserver.yaml ╨╕ /etc/kubernetes/manifests/kube-controller-manager.yaml рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН --service-cluster-ip-range рдирдпрд╛рдБ рд╕рдмрдиреЗрдЯрдорд╛: 172.24.0.0/16 рдХреЛ рд╕рдЯреНрдЯрд╛ 192.168.0.0/16.

5. рд╣рд╛рдореА рд╕реЗрд╡рд╛ рд╕рдмрдиреЗрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджреИрдЫреМрдВ рдЬрд╕рдорд╛ kubeadm apiserver (рд╕рд╣рд┐рдд) рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд╛рд░реА рдЧрд░реНрджрдЫ, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреБрди: рдЬрд╛рд░реА рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

  1. рдХреБрди рдбреЛрдореЗрди рд░ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рд╣рд╛рд▓рдХреЛ рдкреНрд░рдорд╛рдгрдкрддреНрд░рдХреЛ рд▓рд╛рдЧрд┐ рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдЫ рд╣реЗрд░реМрдВ:
    openssl x509 -noout -ext subjectAltName </etc/kubernetes/pki/apiserver.crt
    X509v3 Subject Alternative Name:
        DNS:dev-1-master, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, DNS:apiserver, IP Address:192.168.0.1, IP Address:10.0.0.163, IP Address:192.168.199.100
  2. kubeadm рдХреЛ рд▓рд╛рдЧрд┐ рдиреНрдпреВрдирддрдо рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рддрдпрд╛рд░ рдЧрд░реМрдВ:
    cat kubeadm-config.yaml
    apiVersion: kubeadm.k8s.io/v1beta1
    kind: ClusterConfiguration
    networking:
      podSubnet: "10.244.0.0/16"
      serviceSubnet: "172.24.0.0/16"
    apiServer:
      certSANs:
      - "192.168.199.100" # IP-╨░╨┤╤А╨╡╤Б ╨╝╨░╤Б╤В╨╡╤А ╤Г╨╖╨╗╨░
  3. рдкреБрд░рд╛рдиреЛ crt рд░ рдХреБрдЮреНрдЬреА рдореЗрдЯрд╛рдЙрдиреБрд╣реЛрд╕реН, рдХрд┐рдирдХрд┐ рдпреЛ рдмрд┐рдирд╛ рдирдпрд╛рдБ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд╛рд░реА рд╣реБрдиреЗрдЫреИрди:
    rm /etc/kubernetes/pki/apiserver.{key,crt}
  4. API рд╕рд░реНрднрд░рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВ рдкреБрди: рдЬрд╛рд░реА рдЧрд░реМрдВ:
    kubeadm init phase certs apiserver --config=kubeadm-config.yaml
  5. рдЬрд╛рдБрдЪ рдЧрд░реМрдВ рдХрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирдпрд╛рдБ рд╕рдмрдиреЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ:
    openssl x509 -noout -ext subjectAltName </etc/kubernetes/pki/apiserver.crt
    X509v3 Subject Alternative Name:
        DNS:kube-2-master, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, IP Address:172.24.0.1, IP Address:10.0.0.163, IP Address:192.168.199.100
  6. API рд╕рд░реНрднрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреБрди: рдЬрд╛рд░реА рдЧрд░реЗрдкрдЫрд┐, рдпрд╕рдХреЛ рдХрдиреНрдЯреЗрдирд░ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
    docker ps | grep k8s_kube-apiserver | awk '{print $1}' | xargs docker restart
  7. рдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреБрди: рдЙрддреНрдкрдиреНрди рдЧрд░реМрдВ admin.conf:
    kubeadm alpha certs renew admin.conf
  8. рдЖрджрд┐рдорд╛ рдбрд╛рдЯрд╛ рд╕рдореНрдкрд╛рджрди рдЧрд░реМрдВ:
    ./etcdhelper -cacert /etc/kubernetes/pki/etcd/ca.crt -cert /etc/kubernetes/pki/etcd/server.crt -key /etc/kubernetes/pki/etcd/server.key -endpoint https://127.0.0.1:2379 change-service-cidr 172.24.0.0/16 

    рд╕рд╛рд╡рдзрд╛рдиреА рдпрд╕ рдХреНрд╖рдгрдорд╛, рдбреЛрдореЗрди рд░рд┐рдЬреЛрд▓реНрдпреБрд╕рдирд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдХрд╛рдо рдЧрд░реНрди рд░реЛрдХреНрдЫ, рдХрд┐рдирдХрд┐ рдЕрд╡рд╕реНрдерд┐рдд рдкреЛрдбрд╣рд░реВрдорд╛ /etc/resolv.conf рдкреБрд░рд╛рдиреЛ CoreDNS рдареЗрдЧрд╛рдирд╛ (kube-dns) рджрд░реНрддрд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ, рд░ kube-proxy рд▓реЗ iptables рдирд┐рдпрдорд╣рд░реВ рдкреБрд░рд╛рдиреЛ рд╕рдмрдиреЗрдЯрдмрд╛рдЯ рдирдпрд╛рдБрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрдЫред рдердк рд▓реЗрдЦрдорд╛ рдпреЛ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХрдо рдЧрд░реНрди рд╕рдореНрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫред

  9. рдирд╛рдорд╕реНрдерд╛рдирдорд╛ рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдкрд▓рд╛рдИ рдареАрдХ рдЧрд░реМрдВ kube-system:
    kubectl -n kube-system edit cm kubelet-config-1.16

    - рдпрд╣рд╛рдБ рдмрджрд▓реНрдиреБрд╣реЛрд╕реН clusterDNS kube-dns рд╕реЗрд╡рд╛рдХреЛ рдирдпрд╛рдБ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рдорд╛: kubectl -n kube-system get svc kube-dns.

    kubectl -n kube-system edit cm kubeadm-config

    - рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдареАрдХ рдЧрд░реНрдиреЗрдЫреМрдВ data.ClusterConfiguration.networking.serviceSubnet рдирдпрд╛рдБ рд╕рдмрдиреЗрдЯрдорд╛ред

  10. kube-dns рдареЗрдЧрд╛рдирд╛ рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдХреЛрд▓реЗ, рдпреЛ рд╕рдмреИ рдиреЛрдбрд╣рд░реВрдорд╛ kubelet рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:
    kubeadm upgrade node phase kubelet-config && systemctl restart kubelet
  11. рдмрд╛рдБрдХреА рд░рд╣реЗрдХреЛ рд╕рдмреИ рдкреЛрдбрд╣рд░реВ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрди рд╣реЛ:
    kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(S+)s+(S+).*/kubectl --namespace 1 delete pod 2/e'

рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдиреНрдпреВрдирддрдо рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХрд╕рд░реА рдХрдо рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рд╡рд┐рдЪрд╛рд░рд╣рд░реВ:

  1. рдХрдиреНрдЯреНрд░реЛрд▓ рдкреНрд▓реЗрди рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрдкрдЫрд┐, рдирдпрд╛рдБ kube-dns рд╕реЗрд╡рд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдирд╛рдордХреЛ рд╕рд╛рде kube-dns-tmp рд░ рдирдпрд╛рдБ рдареЗрдЧрд╛рдирд╛ 172.24.0.10.
  2. рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН if etcdhelper рдорд╛, рдЬрд╕рд▓реЗ kube-dns рд╕реЗрд╡рд╛ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрджреИрдиред
  3. рд╕рдмреИ kubelets рдорд╛ рдареЗрдЧрд╛рдирд╛ рдмрджрд▓реНрдиреБрд╣реЛрд╕реН ClusterDNS рдирдпрд╛рдБрдорд╛, рдЬрдмрдХрд┐ рдкреБрд░рд╛рдиреЛ рд╕реЗрд╡рд╛рд▓реЗ рдирдпрд╛рдБрд╕рдБрдЧ рдПрдХреИрд╕рд╛рде рдХрд╛рдо рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреЗрдЫред
  4. рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд╣рд░реВ рднрдПрдХрд╛ рдкреЛрдбрд╣рд░реВ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдХрд╛рд░рдгрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд╛ рдПрдХ рд╕рд╣рдорддрд┐ рднрдПрдХреЛ рд╕рдордпрдорд╛ рдЖрдлреИрдВрд▓реЗ рд░реЛрд▓ рдУрднрд░ рдирднрдПрд╕рдореНрдо рдкрд░реНрдЦрдиреБрд╣реЛрд╕реНред
  5. рд╕реЗрд╡рд╛ рдореЗрдЯрд╛рдЙрдиреБрд╣реЛрд╕реН kube-dns-tmp рд░ рдкрд░рд┐рд╡рд░реНрддрди serviceSubnetCIDR kube-dns рд╕реЗрд╡рд╛рдХреЛ рд▓рд╛рдЧрд┐ред

рдпреЛ рдпреЛрдЬрдирд╛рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдбрд╛рдЙрдирдЯрд╛рдЗрдо ~ рдПрдХ рдорд┐рдиреЗрдЯрдорд╛ рдХрдо рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫ - рд╕реЗрд╡рд╛ рд╣рдЯрд╛рдЙрдиреЗ рдЕрд╡рдзрд┐рдХреЛ рд▓рд╛рдЧрд┐ kube-dns-tmp рд░ рд╕реЗрд╡рд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмрдиреЗрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджреИ kube-dns.

рдкрд░рд┐рдорд╛рд░реНрдЬрди рдкреЛрдбрдиреЗрдЯрд╡рд░реНрдХ

рдПрдХреИ рд╕рдордпрдорд╛, рд╣рд╛рдореАрд▓реЗ рдкрд░рд┐рдгрд╛рдорд┐рдд etcdhelper рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ podNetwork рдХрд╕рд░реА рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╣реЗрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдпреМрдВред рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдХреНрд░рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЫ:

  • рдорд╛ рдХрдиреНрдлрд┐рдЧрд╣рд░реВ рдлрд┐рдХреНрд╕ рдЧрд░реНрджреИ kube-system;
  • kube-controller-manager manifest рдлрд┐рдХреНрд╕ рдЧрд░реНрджреИ;
  • podCIDR рд╕рд┐рдзреИ etcd рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  • рд╕рдмреИ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрд╣рд░реВ рд░рд┐рдмреБрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдЕрдм рдпреА рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк:

1. рдирд╛рдорд╕реНрдерд╛рдирдорд╛ рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдкреНрд╕ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрдиреБрд╣реЛрд╕реН kube-system:

kubectl -n kube-system edit cm kubeadm-config

- рд╕реБрдзрд╛рд░ рдЧрд░реНрджреИ data.ClusterConfiguration.networking.podSubnet рдирдпрд╛рдБ рд╕рдмрдиреЗрдЯрдорд╛ 10.55.0.0/16.

kubectl -n kube-system edit cm kube-proxy

- рд╕реБрдзрд╛рд░ рдЧрд░реНрджреИ data.config.conf.clusterCIDR: 10.55.0.0/16.

2. рдирд┐рдпрдиреНрддреНрд░рдХ-рдкреНрд░рдмрдиреНрдзрдХ рдкреНрд░рдХрдЯ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрдиреБрд╣реЛрд╕реН:

vim /etc/kubernetes/manifests/kube-controller-manager.yaml

- рд╕реБрдзрд╛рд░ рдЧрд░реНрджреИ --cluster-cidr=10.55.0.0/16.

3. рд╣рд╛рд▓рдХреЛ рдорд╛рдирд╣рд░реВ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН .spec.podCIDR, .spec.podCIDRs, .InternalIP, .status.addresses рд╕рдмреИ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐:

kubectl get no -o json | jq '[.items[] | {"name": .metadata.name, "podCIDR": .spec.podCIDR, "podCIDRs": .spec.podCIDRs, "InternalIP": (.status.addresses[] | select(.type == "InternalIP") | .address)}]'

[
  {
    "name": "kube-2-master",
    "podCIDR": "10.244.0.0/24",
    "podCIDRs": [
      "10.244.0.0/24"
    ],
    "InternalIP": "192.168.199.2"
  },
  {
    "name": "kube-2-master",
    "podCIDR": "10.244.0.0/24",
    "podCIDRs": [
      "10.244.0.0/24"
    ],
    "InternalIP": "10.0.1.239"
  },
  {
    "name": "kube-2-worker-01f438cf-579f9fd987-5l657",
    "podCIDR": "10.244.1.0/24",
    "podCIDRs": [
      "10.244.1.0/24"
    ],
    "InternalIP": "192.168.199.222"
  },
  {
    "name": "kube-2-worker-01f438cf-579f9fd987-5l657",
    "podCIDR": "10.244.1.0/24",
    "podCIDRs": [
      "10.244.1.0/24"
    ],
    "InternalIP": "10.0.4.73"
  }
]

4. рд╕рд┐рдзреИ etcd рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрд░ podCIDR рдмрджрд▓реНрдиреБрд╣реЛрд╕реН:

./etcdhelper -cacert /etc/kubernetes/pki/etcd/ca.crt -cert /etc/kubernetes/pki/etcd/server.crt -key /etc/kubernetes/pki/etcd/server.key -endpoint https://127.0.0.1:2379 change-pod-cidr 10.55.0.0/16

рел. рдкреЛрдбрд╕реАрдЖрдИрдбреАрдЖрд░ рд╡рд╛рд╕реНрддрд╡рдореИ рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдХреЛ рдЫ рднрдиреА рдЬрд╛рдБрдЪ рдЧрд░реМрдВ:

kubectl get no -o json | jq '[.items[] | {"name": .metadata.name, "podCIDR": .spec.podCIDR, "podCIDRs": .spec.podCIDRs, "InternalIP": (.status.addresses[] | select(.type == "InternalIP") | .address)}]'

[
  {
    "name": "kube-2-master",
    "podCIDR": "10.55.0.0/24",
    "podCIDRs": [
      "10.55.0.0/24"
    ],
    "InternalIP": "192.168.199.2"
  },
  {
    "name": "kube-2-master",
    "podCIDR": "10.55.0.0/24",
    "podCIDRs": [
      "10.55.0.0/24"
    ],
    "InternalIP": "10.0.1.239"
  },
  {
    "name": "kube-2-worker-01f438cf-579f9fd987-5l657",
    "podCIDR": "10.55.1.0/24",
    "podCIDRs": [
      "10.55.1.0/24"
    ],
    "InternalIP": "192.168.199.222"
  },
  {
    "name": "kube-2-worker-01f438cf-579f9fd987-5l657",
    "podCIDR": "10.55.1.0/24",
    "podCIDRs": [
      "10.55.1.0/24"
    ],
    "InternalIP": "10.0.4.73"
  }
]

рем. рд╕рдмреИ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрд╣рд░реВ рдПрдХ-рдПрдХ рдЧрд░реЗрд░ рд░рд┐рдмреБрдЯ рдЧрд░реМрдВред

7. рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдХрдореНрддрд┐рдорд╛ рдПрдЙрдЯрд╛ рдиреЛрдб рдЫреЛрдбреНрдиреБрднрдпреЛ рднрдиреЗ рдкреБрд░рд╛рдиреЛ podCIDR, рддреНрдпрд╕рдкрдЫрд┐ kube-controller-manager рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреИрди, рд░ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдкреЛрдбрд╣рд░реВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реБрдиреЗ рдЫреИрдирдиреНред

рд╡рд╛рд╕реНрддрд╡рдорд╛, podCIDR рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЕрдЭ рд╕рд░рд▓ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддреНрдпрд╕реИрд▓реЗ)ред рддрд░ рд╣рд╛рдореА etcd рд╕рдБрдЧ рд╕реАрдзреИ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдЬрд╛рдиреНрди рдЪрд╛рд╣рдиреНрдереНрдпреМрдВ, рдХрд┐рдирднрдиреЗ рддреНрдпрд╣рд╛рдБ рдХреБрдмреЗрд░рдиреЗрдЯ рд╡рд╕реНрддреБрд╣рд░реВ etcd рдорд╛ рд╕рдореНрдкрд╛рджрди рдЧрд░реНрджрд╛ рдХреЗрд╕рд╣рд░реВ рдЫрдиреН - рдПрдХрд▓ рд╕рдореНрднрд╛рд╡рд┐рдд рднрд┐рдиреНрдирддрд╛ред (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдЗрдБ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдмрд┐рдирд╛ рд╕реЗрд╡рд╛ рдХреНрд╖реЗрддреНрд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрди spec.clusterIP.)

рдкрд░рд┐рдгрд╛рдо

рд▓реЗрдЦрд▓реЗ рдбреЗрдЯрд╛рд╕рдБрдЧ рдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдкрдорд╛ etcd рдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╕рдореНрднрд╛рд╡рдирд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЫрд▓рдлрд▓ рдЧрд░реНрджрдЫ, рдЕрд░реНрдерд╛рддреНред Kubernetes API рд▓рд╛рдИ рдмрд╛рдЗрдкрд╛рд╕ рдЧрд░реНрджреИред рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рдпреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ "рдареБрд▓реЛ рдХреБрд░рд╛рд╣рд░реВ" рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╣рд╛рдореАрд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ K8s рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдорд╛ рдкрд╛рдардорд╛ рджрд┐рдЗрдПрдХреЛ рдЕрдкрд░реЗрд╕рдирд╣рд░реВрдХреЛ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдпреМрдВред рдпрджреНрдпрдкрд┐, рд╡реНрдпрд╛рдкрдХ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рддрд┐рдиреАрд╣рд░реВрдХреЛ рддрддреНрдкрд░рддрд╛рдХреЛ рд╕реНрдерд┐рддрд┐ рдЫ PoC (рдЕрд╡рдзрд╛рд░рдгрд╛рдХреЛ рдкреНрд░рдорд╛рдг)ред рддреНрдпрд╕рдХрд╛рд░рдг, рдпрджрд┐ рддрдкрд╛рдЗрдБ рддрдкрд╛рдЗрдБрдХреЛ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдорд╛ etcdhelper рдЙрдкрдпреЛрдЧрд┐рддрд╛рдХреЛ рдкрд░рд┐рдорд╛рд░реНрдЬрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБрдХреЛ рдЖрдлреНрдиреИ рдЬреЛрдЦрд┐рдордорд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

PS

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

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

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