KlusterKit

KlusterKit: et sæt værktøjer med åben kildekode til forenkling af Kubernetes-deployeringer og drift i fysisk isolerede lokale miljøer

KlusterKit

I dag er vi glade for at annoncere, at Platform9 åbner kildekoderne til Klusterkit, et sæt af tre værktøjer, under Apache v2.0-licensen på GitHub.

Vores kunder implementerer software i private datacentre, der ofte ikke er forbundet til internettet (af sikkerhedsmæssige eller andre årsager). Disse store virksomheder ønsker at udnytte fordelene ved Kubernetes og modernisere deres applikationer, mens de implementerer dem i forskellige datacentre, som ofte ikke har forbindelse til omverdenen. Her kommer Klusterkit til hjælp, da det forenkler levering og administration af K8s-klynger i fysisk isolerede miljøer.

Klusterkit inkluderer tre uafhængige værktøjer, der kan bruges sammen eller hver for sig til at administrere livscyklussen for en production-klynge af Kubernetes:

  1. etcdadm, et CLI til forenklet administration af etcd-klyngen.
  2. nodeadm, et CLI til administration af noder, der supplerer kubeadm og håndterer afhængigheder, som kubeadm har brug for.
  3. cctl, et livscycle management-værktøj, der benytter Cluster API fra Kubernetes-samfundet og bruger nodeadm og etcdadm til problemfrit at levere og vedligeholde højtilgængelige Kubernetes-klynger i lokale og også fysisk isolerede miljøer.

Sammen udfører disse tre værktøjer følgende opgaver:

  • Nem levering og administration af en højtilgængelig etcd-klynge og Kubernetes kontrolpanel i fysisk isolerede lokale miljøer via Cluster API.
  • Gendannelse af klyngens kontrolpanel efter et nedbrud ved hjælp af etcd-backup.
  • Pakning af alle artefakter, der kræves for levering af Kubernetes, i fysisk isolerede miljøer.

Mulighederne ved Klusterkit

  • Understøttelse af flere mestre (HA-klynge K8s).
  • Levering af sikre etcd-klynger og administration af dem.
  • Drift i fysisk isolerede miljøer.
  • Understøttelse af sekventielle opdateringer og tilbageskydning.
  • Flannel (vxlan) som CNI til backend; understøttelse af andre CNI planlægges.
  • Sikring og gendannelse af etcd-klynger efter tab af quorum.
  • Beskyttelse af kontrolpanelet mod manglende hukommelse og CPU-tid.

Arkitekturen for Klusterkit-løsningen

KlusterKit

For fault tolerance and simplicity, Klusterkit uses a single file cctl-state.yaml to store the Kubernetes cluster metadata. The cctl CLI can manage the lifecycle of a Kubernetes cluster on any machine that has this state file. This could be the operator's laptop or any other computer that is part of the Kubernetes cluster.

Cctl implements and calls the upstream cluster-api interface as a CRUD operations library for clusters. It uses ssh-provider, an open-source cluster-api provider for bare metal from Platform9, which in turn calls etcdadm and nodeadm to perform operations on the cluster.

How to use Klusterkit and its components:

1 – Any of the three tools can be easily assembled using the go get command:

go get -u github.com/platform9/cctl

go get -u github.com/platform9/nodeadm

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

2 – These binaries can then be packaged and copied to the target machines where the highly available Kubernetes cluster should run. Place the nodeadm and etcdadm files into the version directories:

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

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

3 – If you need to orchestrate a Kubernetes cluster locally in a physically isolated environment, necessary dependencies can easily be preloaded on an internet-connected computer using the download command for nodeadm and etcdadm. Then the downloaded components (i.e., kubelet and kubelet unit file for systemd, CNI binaries, kubeadm file, all container images including Kubernetes, keepalived image and systemd file, etcd container image, and corresponding configuration files) can be easily copied to physically isolated hosts along with cctl, nodeadm, and etcdadm. (For details, see wiki).

4 – When everything is in place, the first Kubernetes cluster can be created with a couple of commands:

– First, create the credentials for the cluster.

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

– Then create the cluster object. –help triggers a list of supported parameters.

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

– Finally, create the first machine in the cluster.

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

Read more documentation at GitHub.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster