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.*.* рдмрд╣реБрддреЗрдХрджрд╛ рдХреНрд▓рд╛рдпрдВрдЯ рдСрдлрд┐рд╕ рдиреЗрдЯрд╡рд░реНрдХрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдмрд░реЗрдЪрджрд╛ рдбреЗрд╡реНрд╣рд▓рдкрд░ рд╣реЛрдо рдиреЗрдЯрд╡рд░реНрдХрдордзреНрдпреЗ. рдЖрдгрд┐ рдордЧ рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рдВрдШрд░реНрд╖ рдорд┐рд│рддреЛ: рд╣реЛрдо рд░рд╛рдЙрдЯрд░ рдпрд╛ рд╕рдмрдиреЗрдЯрд╡рд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд рдЖрдгрд┐ рд╡реНрд╣реАрдкреАрдПрди рдпрд╛ рд╕рдмрдиреЗрдЯрд▓рд╛ рдХреНрд▓рд╕реНрдЯрд░рдордзреВрди рдХреНрд▓рд╛рдпрдВрдЯрдХрдбреЗ рдврдХрд▓рддрд╛рдд.
  • рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЕрдиреЗрдХ рдХреНрд▓рд╕реНрдЯрд░ рдЖрд╣реЗрдд (рдЙрддреНрдкрд╛рджрди, рд╕реНрдЯреЗрдЬ рдЖрдгрд┐/рдХрд┐рдВрд╡рд╛ рдЕрдиреЗрдХ рдбреЗрд╡реНрд╣ рдХреНрд▓рд╕реНрдЯрд░). рдирдВрддрд░, рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рддреНрдпрд╛ рд╕рд░реНрд╡рд╛рдВрдордзреНрдпреЗ рдкреЙрдбреНрд╕ рдЖрдгрд┐ рд╕реЗрд╡рд╛рдВрд╕рд╛рдареА рд╕рдорд╛рди рд╕рдмрдиреЗрдЯ рдЕрд╕рддреАрд▓, рдЬреНрдпрд╛рдореБрд│реЗ рдЕрдиреЗрдХ рдХреНрд▓рд╕реНрдЯрд░реНрд╕рдордзреАрд▓ рд╕реЗрд╡рд╛рдВрд╕рд╣ рдПрдХрд╛рдЪ рд╡реЗрд│реА рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдореЛрдареНрдпрд╛ рдЕрдбрдЪрдгреА рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛рдд.

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

рдЖрдгрд┐ рдордЧ рдЖрдореНрд╣реА рд╕реНрд╡рддрдГрд▓рд╛ рд╡рд┐рдЪрд╛рд░рд▓реЗ: рд╡рд┐рджреНрдпрдорд╛рди рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рд╕рдмрдиреЗрдЯ рдХрд╕реЗ рдмрджрд▓рд╛рд╡реЗ?

рдирд┐рд░реНрдгрдпрд╛рдВрдЪрд╛ рд╢реЛрдз

рд╕рд░реНрд╡рд╛рдд рд╕рд╛рдорд╛рдиреНрдп рд╕рд░рд╛рд╡ рдореНрд╣рдгрдЬреЗ рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рд╕рд░реНрд╡ рдХреНрд▓рд╕реНрдЯрд░рдЖрдпрдкреА рдкреНрд░рдХрд╛рд░рд╛рд╕рд╣ рд╕реЗрд╡рд╛. рдПрдХ рдкрд░реНрдпрд╛рдп рдореНрд╣рдгреВрди, рд╕рд▓реНрд▓рд╛ рджреЗрдК рд╢рдХрддреЛ рдЖрдгрд┐ рд╣реЗ:

рдЦрд╛рд▓реАрд▓ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗ: рд╕рд░реНрд╡рдХрд╛рд╣реА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, /etc/resolv.conf рдордзреНрдпреЗ DNS рдиреЗрдорд╕рд░реНрд╡реНрд╣рд░ рдореНрд╣рдгреВрди рдкреЙрдбреНрд╕ рдЬреБрдиреНрдпрд╛ рдЖрдпрдкреАрд╕рд╣ рдпреЗрддрд╛рдд.
рдорд▓рд╛ рдЕрдЬреВрдирд╣реА рдЙрдкрд╛рдп рд╕рд╛рдкрдбрд▓рд╛ рдирд╕рд▓реНрдпрд╛рдореБрд│реЗ, рдорд▓рд╛ kubeadm рд░реАрд╕реЗрдЯрд╕рд╣ рд╕рдВрдкреВрд░реНрдг рдХреНрд▓рд╕реНрдЯрд░ рд░реАрд╕реЗрдЯ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ рдЖрдгрд┐ рддреЗ рдкреБрдиреНрд╣рд╛ рд╕реБрд░реВ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ.

рдкрд░рдВрддреБ рд╣реЗ рдкреНрд░рддреНрдпреЗрдХрд╛рд╕рд╛рдареА рдпреЛрдЧреНрдп рдирд╛рд╣реА... рдЖрдордЪреНрдпрд╛ рдХреЗрд╕рд╕рд╛рдареА рдпреЗрдереЗ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рдкрд░рд┐рдЪрдп рдЖрд╣реЗрдд:

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

рдЖрдгрд┐ рд╣реЗ рдЕрд╕реЗрдЪ рдШрдбрд▓реЗ рдХреА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ etcd рдордзреНрдпреЗ рдХрд╛рдп рдЖрдгрд┐ рдХрд╕реЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рддреНрдпрд╛рджреНрд╡рд╛рд░реЗ рдХрд╛рдп рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рд╣реЗ рдкрд╛рд╣рдгреНрдпрд╛рдд рдЖрдореНрд╣рд╛рд▓рд╛ рдЦреВрдк рдкреВрд░реНрд╡реАрдкрд╛рд╕реВрди рд░рд╕ рд╣реЛрддрд╛... рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛: тАЬрдЬреБрдиреЗ IP рдкрддреНрддреЗ (рд╕рдмрдиреЗрдЯ) рдмрджрд▓реВрди рдлрдХреНрдд etcd рдордзреНрдпреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдкрдбреЗрдЯ рдХрд░реВ рдирдпреЗ?

etcd рдордзреАрд▓ рдбреЗрдЯрд╛рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рд╕рд╛рдзрдирд╛рдВрдЪрд╛ рд╢реЛрдз рдШреЗрддрд▓реНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдкреВрд░реНрдгрдкрдгреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгрд╛рд░реЗ рдХрд╛рд╣реАрд╣реА рд╕рд╛рдкрдбрд▓реЗ рдирд╛рд╣реА. (рддрд╕реЗ, рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдереЗрдЯ etcd рдордзреНрдпреЗ рдбреЗрдЯрд╛рд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЛрдгрддреНрдпрд╛рд╣реА рдЙрдкрдпреБрдХреНрддрддреЗрдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреА рдЕрд╕реЗрд▓, рддрд░ рдЖрдореНрд╣реА рд▓рд┐рдВрдХреНрд╕рдЪреА рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░реВ.) рддрдерд╛рдкрд┐, рдПрдХ рдЪрд╛рдВрдЧрд▓рд╛ рдкреНрд░рд╛рд░рдВрдн рдмрд┐рдВрджреВ рдЖрд╣реЗ etcdhelper OpenShift рд╡рд░реВрди (рддреНрдпрд╛рдЪреНрдпрд╛ рд▓реЗрдЦрдХрд╛рдВрдирд╛ рдзрдиреНрдпрд╡рд╛рдж!).

рд╣реА рдпреБрдЯрд┐рд▓рд┐рдЯреА рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рд╡рд╛рдкрд░реВрди etcd рд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░реВ рд╢рдХрддреЗ рдЖрдгрд┐ рдХрдорд╛рдВрдб рд╡рд╛рдкрд░реВрди рддреЗрдереВрди рдбреЗрдЯрд╛ рд╡рд╛рдЪреВ рд╢рдХрддреЗ ls, get, dump.

etcdhelper рдЬреЛрдбрд╛

рдкреБрдвреАрд▓ рд╡рд┐рдЪрд╛рд░ рддрд╛рд░реНрдХрд┐рдХ рдЖрд╣реЗ: "рдЗрдбреАрдбреАрдордзреНрдпреЗ рдбреЗрдЯрд╛ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбреВрди рд╣реА рдЙрдкрдпреБрдХреНрддрддрд╛ рдЬреЛрдбрдгреНрдпрд╛рдкрд╛рд╕реВрди рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рдерд╛рдВрдмрд╡рдд рдЖрд╣реЗ?"

рд╣реЗ рджреЛрди рдирд╡реАрди рдлрдВрдХреНрд╢рдиреНрд╕рд╕рд╣ etcdhelper рдЪреА рд╕реБрдзрд╛рд░рд┐рдд рдЖрд╡реГрддреНрддреА рдмрдирд▓реА changeServiceCIDR ╨╕ changePodCIDR. рддрд┐рдЪреНрдпрд╛ рд╡рд░ рддреБрдореНрд╣реА рдХреЛрдб рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдпреЗрдереЗ.

рдирд╡реАрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдХрд╛рдп рдХрд░рддрд╛рдд? рдЕрд▓реНрдЧреЛрд░рд┐рджрдо changeServiceCIDR:

  • рдПрдХ deserializer рддрдпрд╛рд░ рдХрд░рд╛;
  • CIDR рдкреБрдирд░реНрд╕реНрдерд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддреА рд╕рдВрдХрд▓рд┐рдд рдХрд░рд╛;
  • рдЖрдореНрд╣реА рдХреНрд▓рд╕реНрдЯрд░рдордзреАрд▓ ClusterIP рдкреНрд░рдХрд╛рд░рд╛рд╕рд╣ рд╕рд░реНрд╡ рд╕реЗрд╡рд╛рдВрдордзреВрди рдЬрд╛рддреЛ:
    • рдЧреЛ рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ etcd рд╡рд░реВрди рдореВрд▓реНрдп рдбреАрдХреЛрдб рдХрд░рд╛;
    • рд░реЗрдЧреНрдпреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд╡рд╛рдкрд░реВрди рдЖрдореНрд╣реА рдкрддреНрддреНрдпрд╛рдЪреЗ рдкрд╣рд┐рд▓реЗ рджреЛрди рдмрд╛рдЗрдЯреНрд╕ рдмрджрд▓рддреЛ;
    • рдирд╡реАрди рд╕рдмрдиреЗрдЯрд╡рд░реВрди рд╕реЗрд╡реЗрд▓рд╛ IP рдкрддреНрддрд╛ рдирд┐рдпреБрдХреНрдд рдХрд░рд╛;
    • рд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭрд░ рддрдпрд╛рд░ рдХрд░рд╛, рдЧреЛ рдСрдмреНрдЬреЗрдХреНрдЯрд▓рд╛ рдкреНрд░реЛрдЯреЛрдмрдлрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рд╛, etcd рд╡рд░ рдирд╡реАрди рдбреЗрдЯрд╛ рд▓рд┐рд╣рд╛.

рдХрд╛рд░реНрдп changePodCIDR рдореВрд▓рдд: рд╕рдорд╛рди changeServiceCIDR - рдХреЗрд╡рд│ рд╕реЗрд╡рд╛ рддрдкрд╢реАрд▓ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдгреНрдпрд╛рдРрд╡рдЬреА, рдЖрдореНрд╣реА рддреЗ рдиреЛрдб рдЖрдгрд┐ рдмрджрд▓рд╛рд╕рд╛рдареА рдХрд░рддреЛ .spec.PodCIDR рдирд╡реАрди рд╕рдмрдиреЗрдЯрд╡рд░.

рд╕рд░рд╛рд╡

рд╕реЗрд╡рд╛ CIDR рдмрджрд▓рд╛

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

рддрдпрд╛рд░реАрдЪреЗ рдЯрдкреНрдкреЗ:

  • рдЖрд╡рд╢реНрдпрдХ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рдкреЕрдЪ рдХреЗрд▓реЗрд▓реЗ etcdhelper рдПрдХрддреНрд░ рдХрд░рдгреЗ;
  • рдмреЕрдХрдЕрдк etcd рдЖрдгрд┐ /etc/kubernetes.

рд╕рд░реНрд╡реНрд╣рд┐рд╕рд╕реАрдЖрдпрдбреАрдЖрд░ рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХреГрддреА рдпреЛрдЬрдирд╛:

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

рдЦрд╛рд▓реАрд▓ рдХреНрд░рд┐рдпрд╛рдВрдЪрд╛ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╕рдВрдкреВрд░реНрдг рдХреНрд░рдо рдЖрд╣реЗ.

1. рдбреЗрдЯрд╛ рдбрдВрдкрд╕рд╛рдареА etcd-рдХреНрд▓рд╛рдпрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛:

apt install etcd-client

2. рдИ-рдбреЗрд▓реНрдкрд░ рддрдпрд╛рд░ рдХрд░рд╛:

  • рдЧреЛрд▓рдВрдЧ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛:
    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. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдкреНрд▓реЗрди рдореЕрдирд┐рдлреЗрд╕реНрдЯрдордзреНрдпреЗ рд╕рд░реНрд╡реНрд╣рд┐рд╕ рд╕рдмрдиреЗрдЯ рдмрджрд▓рд╛. рдлрд╛рдпрд▓реАрдВрдордзреНрдпреЗ /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. рдЪрд▓рд╛ etcd рдордзреНрдпреЗ рдбреЗрдЯрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реВрдпрд╛:
    ./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 рд╕реЗрд╡реЗрдЪреНрдпрд╛ рдирд╡реАрди IP рдкрддреНрддреНрдпрд╛рд╡рд░: 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. рд╕рд░реНрд╡ рдХреБрдмреЗрд▓реЗрдЯреНрд╕рдордзреНрдпреЗ рдкрддреНрддрд╛ рдмрджрд▓рд╛ ClusterDNS рдирд╡реАрдирд╕рд╛рдареА, рддрд░ рдЬреБрдиреА рд╕реЗрд╡рд╛ рдирд╡реАрдирд╕рд╣ рдПрдХрд╛рдЪ рд╡реЗрд│реА рдХрд╛рд░реНрдп рдХрд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡реЗрд▓.
  4. рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рд╕рд╣ рд╢реЗрдВрдЧрд╛ рдПрдХрддрд░ рдиреИрд╕рд░реНрдЧрд┐рдХ рдХрд╛рд░рдгрд╛рд╕реНрддрд╡ рд╕реНрд╡рддрдГрд╣реВрди рдХрд┐рдВрд╡рд╛ рдорд╛рдиреНрдп рд╡реЗрд│реЗрдд рд░реЛрд▓ рд╣реЛрдИрдкрд░реНрдпрдВрдд рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛.
  5. рд╕реЗрд╡рд╛ рд╣рдЯрд╡рд╛ kube-dns-tmp рдЖрдгрд┐ рдмрджрд▓ serviceSubnetCIDR kube-dns рд╕реЗрд╡реЗрд╕рд╛рдареА.

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

рдмрджрд▓ рдкреЙрдбрдиреЗрдЯрд╡рд░реНрдХ

рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рдЖрдореНрд╣реА рдкрд░рд┐рдгрд╛рдореА etcdhelper рд╡рд╛рдкрд░реВрди podNetwork рдХрд╕реЗ рд╕реБрдзрд╛рд░рд╛рдпрдЪреЗ рддреЗ рдкрд╛рд╣рдгреНрдпрд╛рдЪреЗ рдард░рд╡рд┐рд▓реЗ. рдХреНрд░рд┐рдпрд╛рдВрдЪрд╛ рдХреНрд░рдо рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдЖрд╣реЗ:

  • рдордзреНрдпреЗ рдХреЙрдиреНрдлрд┐рдЧреНрд╕ рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреЗ kube-system;
  • kube-controller-manager рдореЕрдирд┐рдлреЗрд╕реНрдЯ рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреЗ;
  • рдкреЙрдбрд╕реАрдЖрдпрдбреАрдЖрд░ рдереЗрдЯ 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

5. рдкреЙрдбрд╕реАрдЖрдпрдбреАрдЖрд░ рдЦрд░реЛрдЦрд░ рдмрджрд▓рд▓рд╛ рдЖрд╣реЗ рд╣реЗ рддрдкрд╛рд╕реВрдпрд╛:

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"
  }
]

6. рд╕рд░реНрд╡ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдПрдХ рдПрдХ рдХрд░реВрди рд░реАрдмреВрдЯ рдХрд░реВ.

7. рдЖрдкрдг рдХрд┐рдорд╛рди рдПрдХ рдиреЛрдб рд╕реЛрдбрд▓реНрдпрд╛рд╕ рдЬреБрдирд╛ рдкреЙрдбрд╕реАрдЖрдпрдбреАрдЖрд░, рдирдВрддрд░ kube-controller-manager рд╕реБрд░реВ рдХрд░реВ рд╢рдХрдгрд╛рд░ рдирд╛рд╣реА, рдЖрдгрд┐ рдХреНрд▓рд╕реНрдЯрд░рдордзреАрд▓ рдкреЙрдбреНрд╕ рд╢реЗрдбреНрдпреВрд▓ рдХреЗрд▓реЗ рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реАрдд.

рдЦрд░рдВ рддрд░, рдкреЙрдбрд╕реАрдЖрдпрдбреАрдЖрд░ рдмрджрд▓рдгреЗ рдЖрдгрдЦреА рд╕реЛрдкреЗ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреНрдпрд╛рдореБрд│реЗ). рдкрд░рдВрддреБ рдЖрдореНрд╣рд╛рд▓рд╛ etcd рд╕рд╣ рдереЗрдЯ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рд╛рдпрдЪреЗ рддреЗ рд╢рд┐рдХрд╛рдпрдЪреЗ рд╣реЛрддреЗ, рдХрд╛рд░рдг рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ etcd рдордзреНрдпреЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддрд╛рдирд╛ рдХрд╛рд╣реА рдкреНрд░рдХрд░рдгреЗ рдЖрд╣реЗрдд - рдлрдХреНрдд рд╕рдВрднрд╛рд╡реНрдп рдкреНрд░рдХрд╛рд░. (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдореНрд╣реА рдбрд╛рдЙрдирдЯрд╛рдЗрдорд╢рд┐рд╡рд╛рдп рд╕реЗрд╡рд╛ рдлреАрд▓реНрдб рдмрджрд▓реВ рд╢рдХрдд рдирд╛рд╣реА spec.clusterIP.)

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

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

PS

рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧрд╡рд░ рджреЗрдЦреАрд▓ рд╡рд╛рдЪрд╛:

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

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