91 lines
3.3 KiB
Markdown
91 lines
3.3 KiB
Markdown
# Cluster Node Setup
|
|
|
|
Cluster node setup is WIP. Any kubernetes setup will do. Currently, we have a working cluster using each of these methods and are moving towards Talos.
|
|
|
|
## k3s cluster node setup
|
|
|
|
K3s provides a fully-compliant Kubernetes distribution in a small footprint.
|
|
|
|
To set up control nodes:
|
|
|
|
```bash
|
|
# Install K3s without the default load balancer (we'll use MetalLB)
|
|
curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode=644 --disable servicelb --disable metallb
|
|
|
|
# Set up kubectl configuration
|
|
mkdir -p ~/.kube
|
|
sudo cat /etc/rancher/k3s/k3s.yaml > ~/.kube/config
|
|
chmod 600 ~/.kube/config
|
|
```
|
|
|
|
Set up the infrastructure services after these are running, then you can add more worker nodes with:
|
|
|
|
```bash
|
|
# On your master node, get the node token
|
|
NODE_TOKEN=`sudo cat /var/lib/rancher/k3s/server/node-token`
|
|
MASTER_IP=192.168.8.222
|
|
# On each new node, join the cluster
|
|
|
|
curl -sfL https://get.k3s.io | K3S_URL=https://$MASTER_IP:6443 K3S_TOKEN=$NODE_TOKEN sh -
|
|
```
|
|
|
|
## Talos cluster node setup
|
|
|
|
This is a new experimental method for setting up cluster nodes. We're currently working through the simplest bootstrapping experience.
|
|
|
|
Currently, though, all these steps are manual.
|
|
|
|
Copy this entire directory to your personal cloud folder and modify it as necessary as you install. We suggest putting it in `cluster/bootstrap`.
|
|
|
|
```bash
|
|
|
|
# Install kubectl
|
|
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
|
|
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
|
|
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
|
|
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
|
|
|
|
# Install talosctl
|
|
curl -sL https://talos.dev/install | sh
|
|
|
|
# In your LAN Router (which is your DHCP server),
|
|
|
|
CLUSTER_NAME=test-cluster
|
|
VIP=192.168.8.20 # Non-DHCP
|
|
|
|
# Boot your nodes with the ISO and put their IP addresses here. Pin in DHCP.
|
|
# Nodes must all be on the same switch.
|
|
# TODO: How to set these static on boot?
|
|
CONTROL_NODE_1=192.168.8.21
|
|
CONTROL_NODE_2=192.168.8.22
|
|
CONTROL_NODE_3=192.168.8.23
|
|
|
|
# Generate cluster config files (including pki and tokens)
|
|
cd generated
|
|
talosctl gen secrets -o secrets.yaml
|
|
talosctl gen config --with-secrets secrets.yaml $CLUSTER_NAME https://$VIP:6443
|
|
talosctl config merge ./talosconfig
|
|
cd ..
|
|
|
|
# If the disk you want to install Talos on isn't /dev/sda, you should
|
|
# update to the disk you want in patch/controlplane.yml and patch/worker.yaml. If you have already attempted to install a node and received an error about not being able to find /dev/sda, you can see what disks are available on it with:
|
|
#
|
|
# talosctl -n $VIP get disks --insecure
|
|
|
|
# See https://www.talos.dev/v1.10/talos-guides/configuration/patching/
|
|
talosctl machineconfig patch generated/controlplane.yaml --patch @patch/controlplane.yaml -o final/controlplane.yaml
|
|
talosctl machineconfig patch generated/worker.yaml --patch @patch/worker.yaml -o final/worker.yaml
|
|
$
|
|
|
|
# Apply control plane config
|
|
talosctl apply-config --insecure -n $CONTROL_NODE_1,$CONTROL_NODE_2,$CONTROL_NODE_3 --file final/controlplane.yaml
|
|
|
|
# Bootstrap cluster on control plan
|
|
talosctl bootstrap -n $VIP
|
|
|
|
# Merge new cluster information into kubeconfig
|
|
talosctl kubeconfig
|
|
|
|
# You are now ready to use both `talosctl` and `kubectl` against your new cluster.
|
|
```
|