Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pulcy/helix
Kubernetes HA Cluster Bootstrapper
https://github.com/pulcy/helix
amd64 arm coredns flannel high-availability kubernetes
Last synced: 12 days ago
JSON representation
Kubernetes HA Cluster Bootstrapper
- Host: GitHub
- URL: https://github.com/pulcy/helix
- Owner: pulcy
- License: apache-2.0
- Created: 2018-04-02T14:01:09.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-06-17T17:30:53.000Z (over 6 years ago)
- Last Synced: 2024-08-02T02:15:04.139Z (3 months ago)
- Topics: amd64, arm, coredns, flannel, high-availability, kubernetes
- Language: Go
- Homepage:
- Size: 9.8 MB
- Stars: 7
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Helix: Pulcy Light Weight Kubernetes Cluster Provisioner
Helix uses SSH connections to nodes to be to bootstrap a highly available
Kubernetes cluster on them.Helix supports nodes using different architectures.
So far, it supports `arm` and `amd64`.It will bootstrap:
- A multi-node ETCD cluster
- A multi-master Kubernetes control-plane
- Any number of Kubernetes worker nodesOn each node, Helix will create the following systemd services:
- `cni-installer`: A service that downloads CNI plugins and installs the locally
- `hyperkube`: A service that pull the hyperkube docker image and copys the hyperkube binary to local disk.
- `kubelet`: A service that runs kubelet (using hyperkube binary)Everything else is either creates a static pod in `etc/kubernetes/manifest` or
created using a normal Kubernetes resource.## Usage
First create DNS `A` records for the APIServer of the Kubernetes cluster.
Ensure that the IP addresses of all nodes on the control-plane are listed
under a single name.Make sure all IP addresses of nodes have a reverse DNS entry (find hostname from IP address).
Make sure your account has SSH access to all nodes.
The default SSH user is `pi`. To use a different username, set `--ssh-user=`.Then run:
```bash
helix init \
-c \
--members= \
--apiserver=
```The `conf-dir` is a path of a local directory that is used to store the root certificates
and secrets for the cluster. If you later want to rebuild or extend the cluster,
use the same directory.When the bootstrapping is complete, copy `/etc/kubernetes/admin.conf` from one
of the nodes of the control-plane to your local `kubeconfig`.It will take some time before all services are completely up and available.
To inspect the current status, run:```bash
kubectl get pods --all-namespaces
```## Cleanup
To remove everything installed by Helix from all nodes of a cluster, run:
```bash
helix reset \
--members=
```It may be needed to do a `reboot` on all nodes to clean left over docker containers.
## Components
Helix uses the following components to bootstrap the Kubernetes cluster:
- `ETCD`: As distributed key-value store (used by apiserver)
- `hyperkube`: As single binary for kubelet, kube-proxy, apiserver, controller-manager & scheduler.
- `flannel`: As network layer
- `CoreDNS`: As DNS server