KlusterKit: ืึทืŸ ืึธืคึฟืŸ ืžืงื•ืจ ื˜ืึธืึธืœืงื™ื˜ ืฆื• ืคืึทืจืคึผืึธืฉืขื˜ืขืจืŸ Kubernetes ื“ื™ืคึผืœื•ื™ืžืึทื ืฅ ืื•ืŸ ืœื•ื™ืคืŸ ืื™ืŸ ืคื™ื–ื™ืงืœื™ ืืคื’ืขื–ื•ื ื“ืขืจื˜ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ ืื™ืŸ ืœืึธืงืึทืœ.

KlusterKit

ื”ื™ื™ึทื ื˜ ืžื™ืจ ื–ืขื ืขืŸ ื™ืงืกื™ื™ื˜ืึทื“ ืฆื• ืžืขืœื“ืŸ ืึทื– Platform9 ืื™ื– ืึธืคึฟืŸ ืกืึธืจืกื™ื ื’ Klusterkit, ืึท ืกื•ื•ื™ื˜ ืคื•ืŸ ื“ืจื™ื™ ืžื›ืฉื™ืจื™ื, ืื•ื ื˜ืขืจ ื“ื™ Apache v2.0 ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ ืื•ื™ืฃ GitHub.

ืื•ื ื“ื–ืขืจ ืงืœื™ื™ืึทื ืฅ ืจืึธื•ืœื“ ืื•ื™ืก ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืื™ืŸ ืคึผืจื™ื•ื•ืึทื˜ ื“ืึทื˜ืŸ ืกืขื ื˜ืขืจืก ื•ื•ืึธืก ื–ืขื ืขืŸ ืึธืคื˜ ื ื™ืฉื˜ ืงืึธื ื ืขืงื˜ืขื“ ืฆื• ื“ื™ ืื™ื ื˜ืขืจื ืขื˜ (ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืึธื“ืขืจ ืื ื“ืขืจืข ืกื™ื‘ื•ืช). ื“ื™ ื’ืจื•ื™ืก ืงืึธืžืคึผืึทื ื™ืขืก ื•ื•ื™ืœืŸ ืฆื• ื ื•ืฆืŸ Kubernetes ืื•ืŸ ืคืึทืจื”ื™ื™ึทื ื˜ื™ืงืŸ ื–ื™ื™ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜ ืจืึธื•ืœื“ ื–ื™ื™ ืื•ื™ืก ืื™ืŸ ืคืึทืจืฉื™ื“ืขื ืข ื“ืึทื˜ืŸ ืกืขื ื˜ืขืจืก, ื•ื•ืึธืก ื–ืขื ืขืŸ ืึธืคื˜ ื ื™ืฉื˜ ืคืืจื‘ื•ื ื“ืŸ ืฆื• ื“ื™ ืึทืจื•ื™ืก ื•ื•ืขืœื˜. ื“ืึธืก ืื™ื– ื•ื•ื• Klusterkit ืงื•ืžื˜ ืื™ืŸ, ื•ื•ืึธืก ืžืื›ื˜ ืขืก ื’ืจื™ื ื’ ืฆื• ืฆื•ืฉื˜ืขืœืŸ ืื•ืŸ ืคื™ืจืŸ K8 ืก ืงืœืึทืกื˜ืขืจื– ืื™ืŸ ืคื™ื–ื™ืงืœื™ ืืคื’ืขื–ื•ื ื“ืขืจื˜ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ.

Klusterkit ื™ื ืงืœื•ื“ื– ื“ืจื™ื™ ืคืจื™ื™ึท ืžื›ืฉื™ืจื™ื ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื•ื–ืึทืžืขืŸ ืึธื“ืขืจ ืกืขืคึผืขืจืึทื˜ืœื™ ืฆื• ืคื™ืจืŸ ื“ื™ ืœื™ื™ืคืกื™ื™ืง ืคื•ืŸ ืึท ืงื•ื‘ืขืจื ืขื˜ืขืก ืคึผืจืึธื“ื•ืงืฆื™ืข ืงื ื•ื™ืœ:

  1. ืขื˜ืงื“ื“ื, CLI ืคึฟืึทืจ ืกื™ืžืคึผืœืึทืคื™ื™ื“ ืขื˜ืง ืงื ื•ื™ืœ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’.
  2. ื ืึธื“ืขืึทื“ื, ืึท CLI ืคึฟืึทืจ ื ืึธื“ืข ืึทื“ืžื™ื ื™ืกื˜ืจืึทืฆื™ืข ื•ื•ืึธืก ื™ืงืกื˜ืขื ื“ื– kubeadm ืื•ืŸ ื“ื™ืคึผืœื•ื™ื“ื– ื“ื™ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– ื“ืืจืฃ ื“ื•ืจืš kubeadm.
  3. cctl, ืึท ืงื ื•ื™ืœ ืœื™ืคืขืกื™ืงืœืข ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ื’ืขืฆื™ื™ึทื’ ื•ื•ืึธืก ืึทื“ืึทืคึผืฅ ื“ื™ Cluster API ืคึฟื•ืŸ ื“ื™ Kubernetes ืงื”ืœ ืื•ืŸ ื ื™ืฆื˜ ื ืึธื“ืขืึทื“ื ืื•ืŸ ืขื˜ืงื“ื“ื ืฆื• ืกื™ืžืœืึทืกืœื™ ืฆื•ืฉื˜ืขืœืŸ ืื•ืŸ ื˜ื™ื™ึทื ืขืŸ ื”ืขื›ืกื˜ ื‘ื ื™ืžืฆื Kubernetes ืงืœืึทืกื˜ืขืจื– ืื™ืŸ ืœืึธืงืึทืœ ืื•ืŸ ืืคื™ืœื• ืคื™ื–ื™ืงืœื™ ืืคื’ืขื–ื•ื ื“ืขืจื˜ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ.

ืฆื•ื–ืึทืžืขืŸ, ื“ื™ ื“ืจื™ื™ ืžื›ืฉื™ืจื™ื ื“ื•ืจื›ืคื™ืจืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื˜ืึทืกืงืก:

  • ืœื™ื™ื›ื˜ ืฆื•ืฉื˜ืขืœืŸ ืื•ืŸ ืคื™ืจืŸ ืึท ื”ืขื›ืกื˜ ื‘ื ื™ืžืฆื ืขื˜ืง ืงื ื•ื™ืœ ืื•ืŸ Kubernetes ื“ืึทืฉื‘ืึธืจื“ ืื™ืŸ ืคื™ื–ื™ืงืœื™ ืืคื’ืขื–ื•ื ื“ืขืจื˜ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ ืื™ืŸ ืœืึธืงืึทืœ ื“ื•ืจืš ื“ื™ Cluster API.
  • ืจื™ืกื˜ืึธืจื™ื ื’ ื“ื™ ืงื ื•ื™ืœ ืงืึธื ื˜ืจืึธืœ ื˜ืึทืคืœื™ืข ื ืึธืš ืึท ื“ื•ืจื›ืคืึทืœ ื ื™ืฆืŸ ืขื˜ืง ื‘ืึทืงืึทืคึผ.
  • ืคึผืึทืงืงืึทื’ื™ื ื’ ืึทืœืข ืึทืจื˜ืึทืคืึทืงืฅ ื“ืืจืฃ ืฆื• ืฆื•ืฉื˜ืขืœืŸ Kubernetes ืื™ืŸ ืคื™ื–ื™ืงืœื™ ืืคื’ืขื–ื•ื ื“ืขืจื˜ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ.

ืงืœื•ืกื˜ืขืจืงื™ื˜ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ

  • ืžื•ืœื˜ื™-ื‘ืขืœ ืฉื˜ื™ืฆืŸ (ื”ืึท ืงื ื•ื™ืœ ืง8ืก).
  • ืขืงืกืคึผืจืขืก ืื•ืŸ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืคื•ืŸ ื–ื™ื›ืขืจ ืขื˜ืง ืงืœืึทืกื˜ืขืจื–.
  • ืืจื‘ืขื˜ืŸ ืื™ืŸ ืคื™ื–ื™ืงืœื™ ืืคื’ืขื–ื•ื ื“ืขืจื˜ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ.
  • ืฉื˜ื™ืฆื˜ ืจืึธื•ืœื™ื ื’ ืึทืคึผื’ืจื™ื™ื“ื– ืื•ืŸ ืจืึธื•ืœื‘ืึทืงืงืก.
  • ืคืœืึทื ืึทืœ (ื•ื•ืงืกืœืึทืŸ) ื•ื•ื™ CNI ืคึฟืึทืจ ื“ื™ ื‘ืึทืงืขื ื“; ืขืก ื–ืขื ืขืŸ ืคึผืœืึทื ื– ืฆื• ืฉื˜ื™ืฆืŸ ืื ื“ืขืจืข CNIs.
  • ื‘ืึทืงืงื•ืคึผ ืื•ืŸ ืจืขืกื˜ืขืจื™ื™ืฉืึทืŸ ืคื•ืŸ ืขื˜ืง ืงืœืึทืกื˜ืขืจื– ื ืึธืš ืึธื ื•ื•ืขืจ ืคื•ืŸ ืงื•ื•ืึธืจื.
  • ืคึผืจืึทื˜ืขืงืฅ ื“ื™ ืงืึธื ื˜ืจืึธืœ ื˜ืึทืคืœื™ืข ืคื•ืŸ โ€‹โ€‹ืคืœื™ืกื ื“ื™ืง ืื•ื™ืก ืคื•ืŸ ื–ื›ึผืจื•ืŸ ืื•ืŸ ืงืคึผื• ืฆื™ื™ื˜.

ืงืœื•ืกื˜ืขืจืงื™ื˜ ืกืึทืœื•ืฉืึทืŸ ืึทืจื˜ืฉื™ื˜ืขืงื˜ื•ืจืข

KlusterKit

ืคึฟืึทืจ ืฉื•ืœื“ ื˜ืึธืœืขืจืึทื ืฅ ืื•ืŸ ืคึผืึทืฉื˜ืขืก, Klusterkit ื ื™ืฆื˜ ืึท ืื™ื™ืŸ cctl-state.yaml ื˜ืขืงืข ืฆื• ืงืจืึธื Kubernetes ืงื ื•ื™ืœ ืžืขื˜ืึทื“ืึทื˜ืึท. ื“ื•ืจืš ื“ื™ cctl CLI ืื™ืจ ืงืขื ืขืŸ ืคื™ืจืŸ ื“ื™ ืœื™ื™ืคืกื™ื™ืง ืคื•ืŸ ืึท Kubernetes ืงื ื•ื™ืœ ืื•ื™ืฃ ืงื™ื™ืŸ ืžืึทืฉื™ืŸ ื•ื•ืึธืก ื”ืื˜ ื“ืขื ืฉื˜ืึทื˜ ื˜ืขืงืข. ื“ืึธืก ืงืขืŸ ื–ื™ื™ืŸ ืึท ืœืึทืคึผื˜ืึทืคึผ ืคื•ืŸ ืึท ืึธืคึผืขืจืึทื˜ืึธืจ ืึธื“ืขืจ ืงื™ื™ืŸ ืื ื“ืขืจืข ืงืึธืžืคึผื™ื•ื˜ืขืจ ื•ื•ืึธืก ืื™ื– ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ Kubernetes ืงื ื•ื™ืœ.

Cctl ื™ืžืคึผืœืึทืžืึทื ืฅ ืื•ืŸ ืจื•ืคื˜ ื“ื™ ืงื ื•ื™ืœ-ืึทืคึผื™ ืฆื•ื‘ื™ื ื“ ืคึฟื•ืŸ ืึทืคึผืกื˜ืจื™ื ื•ื•ื™ ืึท ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืคึฟืึทืจ CRUD ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืื•ื™ืฃ ืงืœืึทืกื˜ืขืจื–. ืขืจ ื ื™ืฆื˜ ssh-provider, ืึทืŸ ืึธืคึฟืŸ-ืžืงื•ืจ ื ืึทืงืขื˜ ืžืขื˜ืึทืœ ืงื ื•ื™ืœ-ืึทืคึผื™ ืคึผืจืึทื•ื•ื™ื™ื“ืขืจื– ืคึฟื•ืŸ Platform9, ื•ื•ืึธืก ืื™ืŸ ืงืขืจ ืจื•ืคื˜ ืขื˜ืงื“ืึทื ืื•ืŸ ื ืึธื“ืขืึทื“ื ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืื•ื™ืฃ ื“ืขื ืงื ื•ื™ืœ.

ื•ื•ื™ ืฆื• ื ื•ืฆืŸ 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 - ื“ื™ ืขืงืกืขืงื•ื˜ืึทื‘ืœืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืคึผืึทืงื™ื“ื–ืฉื“ ืื•ืŸ ืงืึทืคึผื™ื“ ืฆื• ื“ื™ ืฆื™ืœ ืžืืฉื™ื ืขืŸ ื•ื•ื• ื“ื™ ื”ืขื›ืกื˜ ื‘ื ื™ืžืฆื Kubernetes ืงื ื•ื™ืœ ื–ืึธืœ ื–ื™ื™ืŸ ืคืœื™ืกื ื“ื™ืง. ืฉื˜ืขืœืŸ ื“ื™ ื ืึธื“ืขืึทื“ื ืื•ืŸ ืขื˜ืงื“ืึทื“ื ื˜ืขืงืขืก ืื™ืŸ ื“ื™ ื•ื•ืขืจืกื™ืข ื“ื™ื™ืจืขืงื˜ืขืจื™ื–:

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

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

3 - ืื•ื™ื‘ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึธืจืงืขืกื˜ืจื™ืจืŸ ืึท Kubernetes ืงื ื•ื™ืœ ืœืึธื•ืงืึทืœื™, ืื™ืŸ ืึท ืคื™ื–ื™ืงืœื™ ืืคื’ืขื–ื•ื ื“ืขืจื˜ ืกื•ื•ื™ื•ื•ืข, ื“ื™ ื ื•ื™ื˜ื™ืง ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– ืงืขื ืขืŸ ื–ื™ื™ืŸ ืœื™ื™ื›ื˜ ื“ืึทื•ื ืœืึธื•ื“ื™ื“ ืื™ืŸ ืฉื˜ื™ื™ึทื’ืŸ ืื•ื™ืฃ ืึท ืงืึธืžืคึผื™ื•ื˜ืขืจ ืžื™ื˜ ืื™ื ื˜ืขืจื ืขื˜ ืึทืงืกืขืก ื ื™ืฆืŸ ื“ื™ Nodeadm ืื•ืŸ Etcdadm ืืจืืคืงืืคื™ืข ื‘ืึทืคึฟืขืœ. ื“ืขืจื ืึธืš ื“ื™ ื“ืึทื•ื ืœืึธื•ื“ื™ื“ ื™ื™ื˜ืึทืžื– (ื“"ื” ืงื•ื‘ืขืœืขื˜ ืื•ืŸ ืงื•ื‘ืขืœืขื˜ ืึทืคึผืึทืจืึทื˜ ื˜ืขืงืข ืคึฟืึทืจ ืกื™ืกื˜ืขืž, CNI ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ื˜ืขืงืขืก, ืงื•ื‘ืขื“ื ื˜ืขืงืข, ืึทืœืข ืงืึทื ื˜ื™ื™ื ืขืจ ื‘ื™ืœื“ืขืจ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืงื•ื‘ืขืจื ืขื˜ืขืก, ืงืขืขืึทืœื™ื•ื•ืขื“ ื‘ื™ืœื“ ืื•ืŸ ืกื™ืกื˜ืขื ื˜ืขืงืข, ืขื˜ืง ืงืึทื ื˜ื™ื™ื ืขืจ ื‘ื™ืœื“ ืื•ืŸ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื˜ืขืงืขืก) ืงืขื ืขืŸ ื–ื™ื™ืŸ ืœื™ื™ื›ื˜ ืงืึทืคึผื™ื“ ืฆื• ืคื™ื–ื™ืงืœื™ ืืคื’ืขื–ื•ื ื“ืขืจื˜ ืžื—ื ื•ืช ืฆื•ื–ืืžืขืŸ. ืžื™ื˜ cctl, nodeadm ืื•ืŸ etcdadm. (ื–ืขืŸ ืคืจื˜ื™ื ืื™ืŸ ื•ื•ื™ืงื™).

4 - ืึทืžืึธืœ ืึทืœืฅ ืื™ื– ืื™ืŸ ืคึผืœืึทืฅ, ืื™ืจ ืงืขื ืขืŸ ืžืึทื›ืŸ ื“ื™ ืขืจืฉื˜ืขืจ Kubernetes ืงื ื•ื™ืœ ืžื™ื˜ ืึท ืคึผืึธืจ ืคื•ืŸ ืงืึทืžืึทื ื“ื–:

- ืขืจืฉื˜ืขืจ ืฉืึทืคึฟืŸ ืงืจืึทื“ืขื ื˜ืฉืึทืœื– ืคึฟืึทืจ ื“ืขื ืงื ื•ื™ืœ.

$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

ืœื™ื™ืขื ืขืŸ ืžืขืจ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ื‘ื™ื™ึท ื’ื™ื˜ื”ื•ื‘.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’