diff --git a/k8s/butane.yml b/k8s/butane.yml new file mode 100644 index 0000000..cb6d3df --- /dev/null +++ b/k8s/butane.yml @@ -0,0 +1,55 @@ +variant: fcos +version: 1.5.0 +passwd: + users: + - name: core + ssh_authorized_keys: + - "ssh-rsa YOUR_PUBLIC_SSH_KEY_HERE" + +storage: + files: + # 1. Load required kernel modules for Kubernetes/CRI-O + - path: /etc/modules-load.d/k8s.conf + mode: 0644 + contents: + inline: | + overlay + br_netfilter + + # 2. Configure Sysctl for networking + - path: /etc/sysctl.d/k8s.conf + mode: 0644 + contents: + inline: | + net.bridge.bridge-nf-call-iptables = 1 + net.bridge.bridge-nf-call-ip6tables = 1 + net.ipv4.ip_forward = 1 + +systemd: + units: + # 3. Ensure CRI-O (Container Runtime) is enabled and started + - name: crio.service + enabled: true + + # 4. Kubelet Service definition + - name: kubelet.service + enabled: true + contents: | + [Unit] + Description=Kubernetes Kubelet + Documentation=https://github.com/kubernetes/kubernetes + After=crio.service + Requires=crio.service + + [Service] + ExecStartPre=/usr/bin/mkdir -p /etc/kubernetes/manifests + ExecStart=/usr/bin/kubelet \ + --container-runtime-endpoint=unix:///var/run/crio/crio.sock \ + --register-node=true \ + --v=2 + Restart=always + StartLimitInterval=0 + RestartSec=10 + + [Install] + WantedBy=multi-user.target