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

KlusterKit: Kubernetes рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд╣рд░реВ рд╕рд░рд▓ рдмрдирд╛рдЙрди рд░ рднреМрддрд┐рдХ рд░реВрдкрдорд╛ рдкреГрдердХ рдЕрди-рдкреНрд░рд┐рдорд╛рдЗрд╕реЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдгрд╣рд░реВрдорд╛ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдЯреВрд▓рдХрд┐рдЯред

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

рдЖрдЬ рд╣рд╛рдореА GitHub рдорд╛ Apache v9 рд▓рд╛рдЗрд╕реЗрдиреНрд╕ рдЕрдиреНрддрд░реНрдЧрдд Platform2.0 рдЦреБрд▓рд╛ рд╕реЛрд░реНрд╕рд┐рдЩ Klusterkit, рддреАрдирд╡рдЯрд╛ рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рд╕реБрдЗрдЯ рднрдПрдХреЛ рдШреЛрд╖рдгрд╛ рдЧрд░реНрди рдкрд╛рдЙрдБрджрд╛ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдЫреМрдВред

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

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

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

рд╕рдБрдЧреИ, рдпреА рддреАрди рдЙрдкрдХрд░рдгрд╣рд░реВрд▓реЗ рдирд┐рдореНрди рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрд░реНрджрдЫ:

  • рдХреНрд▓рд╕реНрдЯрд░ API рдорд╛рд░реНрдлрдд рднреМрддрд┐рдХ рд░реВрдкрдорд╛ рдкреГрдердХ рдЕрди-рдкреНрд░рд┐рдорд╛рдЗрд╕реЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдгрд╣рд░реВрдорд╛ рдЙрдЪреНрдЪ рдЙрдкрд▓рдмреНрдз etcd рдХреНрд▓рд╕реНрдЯрд░ рд░ Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрд▓рд╛рдИ рд╕рдЬрд┐рд▓реИрд╕рдБрдЧ рдкреНрд░рд╛рд╡рдзрд╛рди рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  • etcd рдмреНрдпрд╛рдХрдЕрдк рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╡рд┐рдлрд▓рддрд╛ рдкрдЫрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрдпрд╛рдирд▓ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдЧрд░реНрджреИред
  • Kubernetes рднреМрддрд┐рдХ рд░реВрдкрдорд╛ рдкреГрдердХ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдбреЗрд▓рд┐рднрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╕рдмреИ рдХрд▓рд╛рдХреГрддрд┐рд╣рд░реВ рдкреНрдпрд╛рдХреЗрдЬрд┐рдЩред

Klusterkit рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ

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

Klusterkit рд╕рдорд╛рдзрд╛рди рд╡рд╛рд╕реНрддреБрдХрд▓рд╛

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

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

Cctl рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдорд╛ CRUD рд╕рдЮреНрдЪрд╛рд▓рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдХреЛ рд░реВрдкрдорд╛ рдЕрдкрд╕реНрдЯреНрд░реАрдордмрд╛рдЯ рдХреНрд▓рд╕реНрдЯрд░-рдПрдкреАрдЖрдИ рдЗрдиреНрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ рд░ рдХрд▓ рдЧрд░реНрджрдЫред рдЙрд╕рд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫ ssh-рдкреНрд░рджрд╛рдпрдХ, Platform9 рдмрд╛рдЯ рдЦреБрд▓рд╛-рд╕реНрд░реЛрдд рдмреЗрдпрд░ рдореЗрдЯрд▓ рдХреНрд▓рд╕реНрдЯрд░-рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рдпрдХ, рдЬрд╕рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрди etcdadm рд░ nodeadm рд▓рд╛рдИ рдХрд▓ рдЧрд░реНрдЫред

Klusterkit рд░ рдпрд╕рдХрд╛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ:

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//

3 - рдпрджрд┐ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рднреМрддрд┐рдХ рд░реВрдкрдорд╛ рдкреГрдердХ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛, рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕рдЬрд┐рд▓реИрд╕рдБрдЧ рдЗрдиреНрдЯрд░рдиреЗрдЯ рдкрд╣реБрдБрдЪ рднрдПрдХреЛ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ nodeadm рд░ etcdadm рдбрд╛рдЙрдирд▓реЛрдб рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рддреНрдпрд╕рдкрдЫрд┐ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдПрдХрд╛ рд╡рд╕реНрддреБрд╣рд░реВ (рдЬрд╕реНрддреИ рдХреБрдмреЗрд▓реЗрдЯ рд░ рдХреБрдмреЗрд▓реЗрдЯ рдПрдХрд╛рдЗ рдлрд╛рдЗрд▓рд╣рд░реВ systemd, CNI рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓рд╣рд░реВ, kubeadm рдлрд╛рдЗрд▓, Kubernetes рд╕рд╣рд┐рдд рд╕рдмреИ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐рд╣рд░реВ, Keepalived рдЫрд╡рд┐ рд░ systemd рдлрд╛рдЗрд▓рд╣рд░реВ, etcd рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐ рд░ рд╕рдореНрдмрдиреНрдзрд┐рдд рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рд╣рд░реВ) рд╕рдЬрд┐рд▓реИрд╕рдБрдЧ рднреМрддрд┐рдХ рд░реВрдкрдорд╛ рдЕрд▓рдЧ рд╣реЛрд╕реНрдЯрд╣рд░реВрдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред cctl, nodeadm рд░ etcdadm рд╕рдБрдЧред (рд╡рд┐рд╡рд░рдг рдорд╛ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН wiki).

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

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