рдХреНрд▓рд╕реНрдЯрд░рдХрд┐рдЯ

рдХреНрд▓рд╕реНрдЯрд░рдХрд┐рдЯ: рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдЙрдкрдпреЛрдЬрди рд╕реБрд▓рдн рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рднреМрддрд┐рдХрджреГрд╖реНрдЯреНрдпрд╛ рд╡реЗрдЧрд│реНрдпрд╛ рдСрди-рдкреНрд░рд┐рдорд╛рдЗрд╕реЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдореБрдХреНрдд рд╕реНрд░реЛрдд рдЯреВрд▓рдХрд┐рдЯ

рдХреНрд▓рд╕реНрдЯрд░рдХрд┐рдЯ

GitHub рд╡рд░ Apache v9 рд▓рд╛рдпрд╕рдиреНрд╕ рдЕрдВрддрд░реНрдЧрдд рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо2.0 рд╣реЗ рддреАрди рдЯреВрд▓реНрд╕рдЪреЗ рд╕рдВрдЪ рдЕрд╕рд▓реЗрд▓реЗ рдУрдкрди рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдХреНрд▓рд╕реНрдЯрд░рдХрд┐рдЯ рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рдЬрд╛рд╣реАрд░ рдХрд░рддрд╛рдирд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдЬ рдЖрдирдВрдж рд╣реЛрдд рдЖрд╣реЗ.

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

Klusterkit рдордзреНрдпреЗ рддреАрди рд╕реНрд╡рддрдВрддреНрд░ рд╕рд╛рдзрдиреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд рдЬреА рдПрдХрддреНрд░ рдХрд┐рдВрд╡рд╛ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ Kubernetes рдЙрддреНрдкрд╛рджрди рдХреНрд▓рд╕реНрдЯрд░рдЪреЗ рдЬреАрд╡рдирдЪрдХреНрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдК рд╢рдХрддрд╛рдд:

  1. etcdadm, рд╕рд░рд▓реАрдХреГрдд etcd рдХреНрд▓рд╕реНрдЯрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирд╛рд╕рд╛рдареА CLI.
  2. nodeadm, рдиреЛрдб рдкреНрд░рд╢рд╛рд╕рдирд╛рд╕рд╛рдареА рдПрдХ CLI рдЬреЗ kubeadm рдЪрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рдЖрдгрд┐ kubeadm рджреНрд╡рд╛рд░реЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рддреИрдирд╛рдд рдХрд░рддреЗ.
  3. cctl, рдХреНрд▓рд╕реНрдЯрд░ рд▓рд╛рдЗрдлрд╕рд╛рдпрдХрд▓ рдореЕрдиреЗрдЬрдореЗрдВрдЯ рдЯреВрд▓ рдЬреЗ Kubernetes рд╕рдореБрджрд╛рдпрд╛рдХрдбреВрди рдХреНрд▓рд╕реНрдЯрд░ API рд╕реНрд╡реАрдХрд╛рд░рддреЗ рдЖрдгрд┐ рдСрди-рдкреНрд░рд┐рдорд╛рдЗрд╕реЗрд╕ рдЖрдгрд┐ рдЕрдЧрджреА рд╢рд╛рд░реАрд░рд┐рдХрджреГрд╖реНрдЯреНрдпрд╛ рд╡реЗрдЧрд│реНрдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдЕрддреНрдпрдВрдд рдЙрдкрд▓рдмреНрдз рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рдЕрдЦрдВрдбрдкрдгреЗ рд╡рд┐рддрд░рд┐рдд рдЖрдгрд┐ рджреЗрдЦрд░реЗрдЦ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА nodeadm рдЖрдгрд┐ etcdadm рд╡рд╛рдкрд░рддреЗ.

рдПрдХрддреНрд░рд┐рддрдкрдгреЗ, рд╣реА рддреАрди рд╕рд╛рдзрдиреЗ рдЦрд╛рд▓реАрд▓ рдХрд╛рд░реНрдпреЗ рдХрд░рддрд╛рдд:

  • рдХреНрд▓рд╕реНрдЯрд░ API рджреНрд╡рд╛рд░реЗ рднреМрддрд┐рдХрджреГрд╖реНрдЯреНрдпрд╛ рд╡реЗрдЧрд│реНрдпрд╛ рдСрди-рдкреНрд░рд┐рдорд╛рдЗрд╕реЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдЕрддреНрдпрдВрдд рдЙрдкрд▓рдмреНрдз etcd рдХреНрд▓рд╕реНрдЯрд░ рдЖрдгрд┐ Kubernetes рдбреЕрд╢рдмреЛрд░реНрдбрдЪреА рд╕рд╣рдЬ рддрд░рддреВрдж рдЖрдгрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдХрд░рд╛.
  • etcd рдмреЕрдХрдЕрдк рд╡рд╛рдкрд░реВрди рдЕрдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░ рдХреНрд▓рд╕реНрдЯрд░ рдирд┐рдпрдВрддреНрд░рдг рдкреЕрдиреЗрд▓ рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреЗ.
  • рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рднреМрддрд┐рдХрджреГрд╖реНрдЯреНрдпрд╛ рд╡реЗрдЧрд│реНрдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рд╡рд┐рддрд░реАрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдХрд▓рд╛рдХреГрддреАрдВрдЪреЗ рдкреЕрдХреЗрдЬрд┐рдВрдЧ.

рдХреНрд▓рд╕реНрдЯрд░рдХрд┐рдЯ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ

  • рдорд▓реНрдЯреА-рдорд╛рд╕реНрдЯрд░ рд╕рдкреЛрд░реНрдЯ (HA рдХреНрд▓рд╕реНрдЯрд░ K8s).
  • рд╕реБрд░рдХреНрд╖рд┐рдд etcd рдХреНрд▓рд╕реНрдЯрд░реНрд╕рдЪреЗ рд╡рд┐рддрд░рдг рдЖрдгрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди.
  • рд╢рд╛рд░реАрд░рд┐рдХрджреГрд╖реНрдЯреНрдпрд╛ рд╡реЗрдЧрд│реНрдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдХрд╛рдо рдХрд░рдгреЗ.
  • рд░реЛрд▓рд┐рдВрдЧ рдЕрдкрдЧреНрд░реЗрдб рдЖрдгрд┐ рд░реЛрд▓рдмреЕрдХрдЪреЗ рд╕рдорд░реНрдерди рдХрд░рддреЗ.
  • рдмреЕрдХрдПрдВрдбрд╕рд╛рдареА CNI рдореНрд╣рдгреВрди рдлреНрд▓реЕрдиреЗрд▓ (vxlan); рдЗрддрд░ CNIs рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрд╣реЗ.
  • рдХреЛрд░рдо рдХрдореА рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░ etcd рдХреНрд▓рд╕реНрдЯрд░рдЪрд╛ рдмреЕрдХрдЕрдк рдЖрдгрд┐ рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреЗ.
  • рдореЗрдорд░реА рдЖрдгрд┐ CPU рд╡реЗрд│ рд╕рдВрдкрдгреНрдпрд╛рдкрд╛рд╕реВрди рдХрдВрдЯреНрд░реЛрд▓ рдкреЕрдирд▓рдЪреЗ рд╕рдВрд░рдХреНрд╖рдг рдХрд░рддреЗ.

рдХреНрд▓рд╕реНрдЯрд░рдХрд┐рдЯ рд╕реЛрд▓реНрдпреВрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░

рдХреНрд▓рд╕реНрдЯрд░рдХрд┐рдЯ

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

Cctl рдХреНрд▓рд╕реНрдЯрд░реНрд╕рд╡рд░реАрд▓ CRUD рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╛рдареА рд▓рд╛рдпрдмреНрд░рд░реА рдореНрд╣рдгреВрди рдЕрдкрд╕реНрдЯреНрд░реАрдордордзреВрди рдХреНрд▓рд╕реНрдЯрд░-рдПрдкреАрдЖрдп рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддреЗ рдЖрдгрд┐ рдХреЙрд▓ рдХрд░рддреЗ. рддреЛ рд╡рд╛рдкрд░рддреЛ ssh-рдкреНрд░рджрд╛рддрд╛, рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо 9 рд╡рд░реВрди рдУрдкрди-рд╕реЛрд░реНрд╕ рдмреЗрдЕрд░ рдореЗрдЯрд▓ рдХреНрд▓рд╕реНрдЯрд░-рдПрдкреАрдЖрдп рдкреНрд░рджрд╛рддрд╛, рдЬреЛ рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рдСрдкрд░реЗрд╢рдиреНрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА etcdadm рдЖрдгрд┐ nodeadm рд▓рд╛ рдХреЙрд▓ рдХрд░рддреЛ.

рдХреНрд▓рд╕реНрдЯрд░рдХрд┐рдЯ рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ рдШрдЯрдХ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ:

1 - рдЧреЛ рдЧреЗрдЯ рдХрдорд╛рдВрдбрд╕рд╣ рддреАрдирдкреИрдХреА рдХреЛрдгрддреАрд╣реА рд╕рд╛рдзрдиреЗ рд╕рд╣рдЬрдкрдгреЗ рдЧреЛрд│рд╛ рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддрд╛рдд:

go get -u github.com/platform9/cctl

go get -u github.com/platform9/nodeadm

go get -u github.com/kubernetes-sigs/etcdadm

2 тАУ рд╣реЗ рдПрдХреНрдЭрд┐рдХреНрдпреВрдЯреЗрдмрд▓ рдирдВрддрд░ рдкреЕрдХреЗрдЬ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдЖрдгрд┐ рд▓рдХреНрд╖реНрдп рдорд╢реАрдирд╡рд░ рдХреЙрдкреА рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдЬреЗрдереЗ рдЕрддреНрдпрдВрдд рдЙрдкрд▓рдмреНрдз рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдЪрд╛рд▓реВ рдЕрд╕рд╛рд╡реЗ. рдЖрд╡реГрддреНрддреА рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд nodeadm рдЖрдгрд┐ etcdadm рдлрд╛рдЗрд▓реНрд╕ рдареЗрд╡рд╛:

cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm//

cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//

рей тАУ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯ рдХрд░рд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рднреМрддрд┐рдХрджреГрд╖реНрдЯреНрдпрд╛ рд╡реЗрдЧрд│реНрдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд, рдЖрд╡рд╢реНрдпрдХ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдиреЛрдбреЗрдбрдПрдо рдЖрдгрд┐ etcdadm рдбрд╛рдЙрдирд▓реЛрдб рдХрдорд╛рдВрдб рд╡рд╛рдкрд░реВрди рдЗрдВрдЯрд░рдиреЗрдЯ рдкреНрд░рд╡реЗрд╢ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рдЖрдЧрд╛рдК рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рддреНрдпрд╛рдирдВрддрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗрд▓реЗ рдЖрдпрдЯрдо (рдЙрджрд╛. systemd рд╕рд╛рдареА kubelet рдЖрдгрд┐ kubelet рдПрдХрдХ рдлрд╛рдЗрд▓, CNI рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдлрд╛рдЗрд▓реНрд╕, kubeadm рдлрд╛рдЗрд▓, Kubernetes рд╕рд╣ рд╕рд░реНрд╡ рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬ, Keepalived рдЗрдореЗрдЬ рдЖрдгрд┐ systemd рдлрд╛рдЗрд▓, etcd рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬ рдЖрдгрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓реНрд╕) рд╕рд╣рдЬрдкрдгреЗ рднреМрддрд┐рдХрд░рд┐рддреНрдпрд╛ рд╡реЗрдЧрд│реНрдпрд╛ рд╣реЛрд╕реНрдЯрд╡рд░ рдХреЙрдкреА рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд. cctl, nodeadm рдЖрдгрд┐ etcdadm рд╕рд╣. (рддрдкрд╢реАрд▓ рдкрд╣рд╛ рд╡рд┐рдХреА).

4 тАУ рдПрдХрджрд╛ рд╕рд░реНрд╡ рдХрд╛рд╣реА рд╕реБрд░рд│реАрдд рдЭрд╛рд▓реНрдпрд╛рд╡рд░, рддреБрдореНрд╣реА рджреЛрди рдХрдорд╛рдВрдбреНрд╕рд╕рд╣ рдкрд╣рд┐рд▓рд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛:

- рдкреНрд░рдердо рдХреНрд▓рд╕реНрдЯрд░рд╕рд╛рдареА рдХреНрд░реЗрдбреЗрдиреНрд╢рд┐рдпрд▓реНрд╕ рддрдпрд╛рд░ рдХрд░рд╛.

$GOPATH/bin/cctl create credential --user root --private-key ~/.ssh/id_rsa

- рдирдВрддрд░ рдХреНрд▓рд╕реНрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдпрд╛рд░ рдХрд░рд╛. -рдорджрдд рд╕рдорд░реНрдерд┐рдд рдкрд░реНрдпрд╛рдпрд╛рдВрдЪреА рд╕реВрдЪреА рдЖрдгрддреЗ.

$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24

- рд╢реЗрд╡рдЯреА, рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдкрд╣рд┐рд▓реЗ рдорд╢реАрди рддрдпрд╛рд░ рдХрд░рд╛.

$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role master

рдпреЗрдереЗ рдЕрдзрд┐рдХ рджрд╕реНрддрдРрд╡рдЬ рд╡рд╛рдЪрд╛ GitHub.

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

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