KlusterKit: ืขืจื›ืช ื›ืœื™ื ื‘ืงื•ื“ ืคืชื•ื— ืœืคื™ืฉื•ื˜ ืคืจื™ืกื•ืช Kubernetes ื•ื”ืคืขืœื” ื‘ืกื‘ื™ื‘ื•ืช ืžืงื•ืžื™ื•ืช ืžื‘ื•ื“ื“ื•ืช ืคื™ื–ื™ืช

KlusterKit

ื”ื™ื•ื ืื ื• ื ืจื’ืฉื™ื ืœื”ื›ืจื™ื– ืฉ-Platform9 ื”ื™ื ืžืงื•ืจื•ืช ืคืชื•ื—ื™ื ืœ-Klusterkit, ื—ื‘ื™ืœื” ืฉืœ ืฉืœื•ืฉื” ื›ืœื™ื, ืชื—ืช ืจื™ืฉื™ื•ืŸ Apache v2.0 ื‘-GitHub.

ื”ืœืงื•ื—ื•ืช ืฉืœื ื• ืžืคื™ืฆื™ื ืชื•ื›ื ื•ืช ื‘ืžืจื›ื–ื™ ื ืชื•ื ื™ื ืคืจื˜ื™ื™ื ืฉืœืขื™ืชื™ื ืื™ื ื ืžื—ื•ื‘ืจื™ื ืœืื™ื ื˜ืจื ื˜ (ืžืกื™ื‘ื•ืช ืื‘ื˜ื—ื” ืื• ืื—ืจื•ืช). ื—ื‘ืจื•ืช ื’ื“ื•ืœื•ืช ืืœื• ืจื•ืฆื•ืช ืœื ืฆืœ ืืช Kubernetes ื•ืœื—ื“ืฉ ืืช ื”ืืคืœื™ืงืฆื™ื•ืช ืฉืœื”ืŸ ื•ื‘ืžืงื‘ื™ืœ ืœื’ืœื’ืœ ืื•ืชืŸ ื‘ืžืจื›ื–ื™ ื ืชื•ื ื™ื ืฉื•ื ื™ื, ืฉืœืขื™ืชื™ื ืื™ื ื ืžื—ื•ื‘ืจื™ื ืœืขื•ืœื ื”ื—ื™ืฆื•ืŸ. ื›ืืŸ ื ื›ื ืก ืœืชืžื•ื ื” Klusterkit, ืžื” ืฉืžืงืœ ืขืœ ืืกืคืงื” โ€‹โ€‹ื•ื ื™ื”ื•ืœ ืฉืœ ืืฉื›ื•ืœื•ืช K8s ื‘ืกื‘ื™ื‘ื•ืช ืžื‘ื•ื“ื“ื•ืช ืคื™ื–ื™ืช.

Klusterkit ื›ื•ืœืœ ืฉืœื•ืฉื” ื›ืœื™ื ืขืฆืžืื™ื™ื ืฉื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื”ื ื‘ื™ื—ื“ ืื• ื‘ื ืคืจื“ ื›ื“ื™ ืœื ื”ืœ ืืช ืžื—ื–ื•ืจ ื”ื—ื™ื™ื ืฉืœ ืืฉื›ื•ืœ ื™ื™ืฆื•ืจ Kubernetes:

  1. ื•ื›ื•'ื“ื, CLI ืœื ื™ื”ื•ืœ ืืฉื›ื•ืœื•ืช ืžืคื•ืฉื˜ ื•ื›ื•'.
  2. nodeadm, CLI ืœื ื™ื”ื•ืœ ืฆื•ืžืช ืฉืžืจื—ื™ื‘ ืืช kubeadm ื•ืคื•ืจืก ืืช ื”ืชืœื•ืช ื”ื“ืจื•ืฉื•ืช ืœ-kubeadm.
  3. cctl, ื›ืœื™ ืœื ื™ื”ื•ืœ ืžื—ื–ื•ืจ ื—ื™ื™ื ืฉืœ ืืฉื›ื•ืœื•ืช ื”ืžืืžืฆืช ืืช Cluster API ืžืงื”ื™ืœืช Kubernetes ื•ืžืฉืชืžืฉ ื‘-nodeadm ื•-etcdadm ื›ื“ื™ ืœืกืคืง ื•ืœืชื—ื–ืง ื‘ืฆื•ืจื” ื—ืœืงื” ืืฉื›ื•ืœื•ืช Kubernetes ื–ืžื™ื ื™ื ื‘ืžื™ื•ื—ื“ ื‘ืกื‘ื™ื‘ื•ืช ืžืงื•ืžื™ื•ืช ื•ืืคื™ืœื• ืžื‘ื•ื“ื“ื•ืช ืคื™ื–ื™ืช.

ื™ื—ื“, ืฉืœื•ืฉืช ื”ื›ืœื™ื ื”ืœืœื• ืžื‘ืฆืขื™ื ืืช ื”ืžืฉื™ืžื•ืช ื”ื‘ืื•ืช:

  • ื”ืงืฆืื” ื•ื ื™ื”ื•ืœ ื‘ืงืœื•ืช ืฉืœ ืืฉื›ื•ืœ ื•ื›ื•' ื–ืžื™ืŸ ืžืื•ื“ ื•ืœื•ื— ืžื—ื•ื•ื ื™ื ืฉืœ Kubernetes ื‘ืกื‘ื™ื‘ื•ืช ืžืงื•ืžื™ื•ืช ืžื‘ื•ื“ื“ื•ืช ืคื™ื–ื™ืช ื‘ืืžืฆืขื•ืช ื”-Cluster API.
  • ืฉื—ื–ื•ืจ ืœื•ื— ื”ื‘ืงืจื” ืฉืœ ื”ืืฉื›ื•ืœ ืœืื—ืจ ืชืงืœื” ื‘ืืžืฆืขื•ืช ื’ื™ื‘ื•ื™ ื•ื›ื•'.
  • ืืจื™ื–ืช ื›ืœ ื”ื—ืคืฆื™ื ื”ื“ืจื•ืฉื™ื ื›ื“ื™ ืœืกืคืง Kubernetes ืœืชื•ืš ืกื‘ื™ื‘ื•ืช ืžื‘ื•ื“ื“ื•ืช ืคื™ื–ื™ืช.

ืชื›ื•ื ื•ืช Klusterkit

  • ืชืžื™ื›ื” ื‘ืจื™ื‘ื•ื™ ืžืืกื˜ืจ (HA cluster K8s).
  • ืืกืคืงื” โ€‹โ€‹ื•ื ื™ื”ื•ืœ ืฉืœ ืืฉื›ื•ืœื•ืช ื•ื›ื•' ืžืื•ื‘ื˜ื—ื™ื.
  • ืขื‘ื•ื“ื” ื‘ืกื‘ื™ื‘ื•ืช ืžื‘ื•ื“ื“ื•ืช ืคื™ื–ื™ืช.
  • ืชื•ืžืš ื‘ืฉื“ืจื•ื’ื™ื ืžืชื’ืœื’ืœื™ื ื•ื”ื—ื–ืจื•ืช.
  • ืคืœื ืœ (vxlan) ื›-CNI ืขื‘ื•ืจ ื”ืงืฆื” ื”ืื—ื•ืจื™; ื™ืฉ ืชื•ื›ื ื™ื•ืช ืœืชืžื•ืš ื‘-CNIs ืื—ืจื™ื.
  • ื’ื™ื‘ื•ื™ ื•ืฉื—ื–ื•ืจ ืฉืœ ืืฉื›ื•ืœื•ืช ื•ื›ื•' ืœืื—ืจ ืื•ื‘ื“ืŸ ื”ืžื ื™ื™ืŸ.
  • ืžื’ืŸ ืขืœ ืœื•ื— ื”ื‘ืงืจื” ืžืคื ื™ ืื•ื–ืœ ืฉืœ ื–ื™ื›ืจื•ืŸ ื•ื–ืžืŸ ืžืขื‘ื“.

ืืจื›ื™ื˜ืงื˜ื•ืจืช ืคืชืจื•ื ื•ืช Klusterkit

KlusterKit

ืขื‘ื•ืจ ืกื•ื‘ืœื ื•ืช ืชืงืœื•ืช ื•ืคืฉื˜ื•ืช, Klusterkit ืžืฉืชืžืฉ ื‘ืงื•ื‘ืฅ cctl-state.yaml ื™ื—ื™ื“ ื›ื“ื™ ืœืื—ืกืŸ ืžื˜ื ื ืชื•ื ื™ื ืฉืœ ืืฉื›ื•ืœ Kubernetes. ื“ืจืš cctl CLI ืืชื” ื™ื›ื•ืœ ืœื ื”ืœ ืืช ืžื—ื–ื•ืจ ื”ื—ื™ื™ื ืฉืœ ืืฉื›ื•ืœ Kubernetes ื‘ื›ืœ ืžื—ืฉื‘ ืฉื™ืฉ ืœื• ืงื•ื‘ืฅ ืžืฆื‘ ื–ื”. ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžื—ืฉื‘ ื ื™ื™ื“ ืฉืœ ืžืคืขื™ืœ ืื• ื›ืœ ืžื—ืฉื‘ ืื—ืจ ืฉื”ื•ื ื—ืœืง ืžืืฉื›ื•ืœ Kubernetes.

Cctl ืžื™ื™ืฉืžืช ื•ืงื•ืจืืช ืœืžืžืฉืง cluster-api ืžืžืขืœื” ื”ื–ืจื ื›ืกืคืจื™ื™ื” ืœืคืขื•ืœื•ืช CRUD ืขืœ ืืฉื›ื•ืœื•ืช. ื”ื•ื ืžืฉืชืžืฉ ssh-ืกืคืง, ืกืคืง ืงื•ื“ ืคืชื•ื— ื—ืฉื•ืฃ ืžืชื›ืช cluster-api ืž-Platform9, ืืฉืจ ื‘ืชื•ืจื• ืงื•ืจื ืœ-etcdadm ื•ืœ-nodeadm ื›ื“ื™ ืœื‘ืฆืข ืคืขื•ืœื•ืช ืขืœ ื”ืืฉื›ื•ืœ.

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-Klusterkit ื•ืžืจื›ื™ื‘ื™ื•:

1 - ื ื™ืชืŸ ืœืืกื•ืฃ ื‘ืงืœื•ืช ื›ืœ ืื—ื“ ืžืฉืœื•ืฉืช ื”ื›ืœื™ื ืขื ื”ืคืงื•ื“ื” go get:

go get -u github.com/platform9/cctl

go get -u github.com/platform9/nodeadm

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

2 - ืœืื—ืจ ืžื›ืŸ ื ื™ืชืŸ ืœืืจื•ื– ื•ืœื”ืขืชื™ืง ืืช ืงื•ื‘ืฆื™ ื”ื”ืคืขืœื” ื”ืœืœื• ืœืžื›ื•ื ื•ืช ื”ื™ืขื“ ืฉื‘ื”ื ืืžื•ืจ ืœืคืขื•ืœ ืืฉื›ื•ืœ Kubernetes ื”ื–ืžื™ืŸ ื‘ื™ื•ืชืจ. ืžืงื ืืช ืงื‘ืฆื™ nodeadm ื•-etcdadm ื‘ืกืคืจื™ื•ืช ื”ื’ืจืกื”:

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

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

3 โ€“ ืื ืืชื” ืฆืจื™ืš ืœืชื–ืžืจ ืืฉื›ื•ืœ Kubernetes ื‘ืื•ืคืŸ ืžืงื•ืžื™, ื‘ืกื‘ื™ื‘ื” ืžื‘ื•ื“ื“ืช ืคื™ื–ื™ืช, ื ื™ืชืŸ ืœื”ื•ืจื™ื“ ื‘ืงืœื•ืช ืžืจืืฉ ืืช ื”ืชืœื•ืช ื”ื ื“ืจืฉืช ื‘ืžื—ืฉื‘ ืขื ื’ื™ืฉื” ืœืื™ื ื˜ืจื ื˜ ื‘ืืžืฆืขื•ืช ืคืงื•ื“ืช ื”ื”ื•ืจื“ื” nodeadm ื•-etcdadm. ืœืื—ืจ ืžื›ืŸ ื ื™ืชืŸ ืœื”ืขืชื™ืง ื‘ืงืœื•ืช ืืช ื”ืคืจื™ื˜ื™ื ืฉื”ื•ืจื“ืช (ื›ืœื•ืžืจ ืงื•ื‘ืฅ kubelet ื•-kubelet ืขื‘ื•ืจ systemd, ืงื‘ืฆื™ ื”ืคืขืœื” CNI, ืงื•ื‘ืฅ kubeadm, ื›ืœ ืชืžื•ื ื•ืช ื”ืžื›ื™ืœื™ื ื›ื•ืœืœ Kubernetes, Keepalved image ื•-systemd, ืชืžื•ื ืช ืžื™ื›ืœ ื•ื›ื•' ื•ืงื‘ืฆื™ ืชืฆื•ืจื” ืžืชืื™ืžื™ื) ืœืžืืจื—ื™ื ืžื‘ื•ื“ื“ื™ื ืคื™ื–ื™ืช. ืขื cctl, nodeadm ื•- etcdadm. (ืจืื” ืคืจื˜ื™ื ื‘ ื•ื™ืงื™).

4 - ื‘ืจื’ืข ืฉื”ื›ืœ ื‘ืžืงื•ื, ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืืช ืืฉื›ื•ืœ Kubernetes ื”ืจืืฉื•ืŸ ืขื ื›ืžื” ืคืงื•ื“ื•ืช:

โ€“ ืจืืฉื™ืช ืฆื•ืจ ืื™ืฉื•ืจื™ื ืขื‘ื•ืจ ื”ืืฉื›ื•ืœ.

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

- ืœืื—ืจ ืžื›ืŸ ืฆื•ืจ ืื•ื‘ื™ื™ืงื˜ ืืฉื›ื•ืœ. -help ืžืขืœื” ืจืฉื™ืžื” ืฉืœ ืืคืฉืจื•ื™ื•ืช ื ืชืžื›ื•ืช.

$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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”