# Kubernetes Troubleshooting

## RKE2

### RKE2 startet nicht "cluster-cidr: [x.x.x.x/16 201:db8::/56] and node-ip: [y.y.y.y], must share the same IP version (IPv4, IPv6 or dual-stack)"

RKE2 hat die IPv6 der Node nicht erkannt. Durch eine zusätzliche
Konfigurationsdatei in `/etc/rancher/rke2/config.yaml.d/` kann die bestehende
Konfiguration ergänzt werden:

```json
# node-ip.yaml
{
  "node-ip": "y.y.y.y,201:db8:1::1/643"
}
```

### Cluster meldet "Waiting fpr probes: kube-controller-manager, kube-scheduler"

Die Meldung deutet darauf hin, dass es ein Problem mit den Zertifikaten gibt
und dieses erneuter werden müssen.

Das folgende Script zeigt ob die Zertifikate aktuell sind:

```bash
$ curl  --cacert /var/lib/rancher/rke2/server/tls/kube-controller-manager/kube-controller-manager.crt \
  https://127.0.0.1:10257/healthz >/dev/null 2>&1 \
  && echo "[OK] Kube Controller probe" \
  || echo "[FAIL] Kube Controller probe"

$ curl --cacert /var/lib/rancher/rke2/server/tls/kube-scheduler/kube-scheduler.crt \
  https://127.0.0.1:10259/healthz >/dev/null 2>&1  \
  && echo "[OK] Scheduler probe" \
  || echo "[FAIL] Scheduler probe"
```

Falls bei diesem Test ein Fehler ausgegeben wird, können mit dem folgenden
Script die Zertifikate gelöscht und erneuert werden:

```bash
export CRI_CONFIG_FILE=/var/lib/rancher/rke2/agent/etc/crictl.yaml
export CONTAINERD_ADDRESS=unix:///run/k3s/containerd/containerd.sock
export PATH=$PATH:/var/lib/rancher/rke2/bin

echo "Rotating kube-controller-manager certificate"
rm -f /var/lib/rancher/rke2/server/tls/kube-controller-manager/kube-controller-manager.{crt,key}
crictl rm -f $(crictl ps -q --name kube-controller-manager)

echo "Rotating kube-scheduler certificate"
rm -f /var/lib/rancher/rke2/server/tls/kube-scheduler/kube-scheduler.{crt,key}
crictl rm -f $(crictl ps -q --name kube-scheduler)
```
