Worker Node Setup
Ziel
In diesem Projekt konfigurieren Sie die Worker Nodes eines Kubernetes-Clusters manuell. Dabei werden Sie:
- containerd
und runc
installieren
- Zertifikate und Konfigurationsdateien erstellen
- kubelet
und kube-proxy
konfigurieren und starten
- die Worker Nodes mit der Control Plane verbinden
Aufgabe 1: Installation von containerd
In dieser Aufgabe installieren Sie containerd
und runc
auf den Worker Nodes.
- Erstellen Sie ein Shell-Skript
install-containerd.sh
, das die Installation voncontainerd
durchführt:
CONTAINERD_VERSION=2.0.2
RUNC_VERSION=1.2.4
# Install Containerd
wget https://github.com/containerd/containerd/releases/download/v${CONTAINERD_VERSION}/containerd-${CONTAINERD_VERSION}-linux-amd64.tar.gz
tar Cxzvf /usr/local containerd-${CONTAINERD_VERSION}-linux-amd64.tar.gz
rm containerd-${CONTAINERD_VERSION}-linux-amd64.tar.gz
mkdir -p /usr/local/lib/systemd/system/
wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service -O /usr/local/lib/systemd/system/containerd.service
systemctl daemon-reload
systemctl enable --now containerd
# Install runc
wget https://github.com/opencontainers/runc/releases/download/v${RUNC_VERSION}/runc.amd64
install -m 755 runc.amd64 /usr/local/sbin/runc
- Führen Sie das Skript aus:
bash install-containerd.sh
Aufgabe 2: Zertifikate erstellen
In dieser Aufgabe erstellen Sie die benötigten Zertifikate für die Worker Nodes.
- Erstellen Sie ein Shell-Skript
generate-worker-certificates.sh
, das die Zertifikate generiert:
#!/bin/bash
# Kubelet Client Zertifikat
openssl genrsa -out /etc/kubernetes/pki/kubelet-client.key 2048
openssl req -new -key /etc/kubernetes/pki/kubelet-client.key \
-subj "/CN=system:node:<WORKER_NODE_NAME>/O=system:nodes" \
-out /etc/kubernetes/pki/kubelet-client.csr
openssl x509 -req -in /etc/kubernetes/pki/kubelet-client.csr \
-CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial \
-days 10000 -out /etc/kubernetes/pki/kubelet-client.crt
# Kube Proxy Zertifikat
openssl genrsa -out /etc/kubernetes/pki/kube-proxy.key 2048
openssl req -new -key /etc/kubernetes/pki/kube-proxy.key \
-subj "/CN=system:kube-proxy" \
-out /etc/kubernetes/pki/kube-proxy.csr
openssl x509 -req -in /etc/kubernetes/pki/kube-proxy.csr \
-CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial \
-days 10000 -out /etc/kubernetes/pki/kube-proxy.crt
- Führen Sie das Skript aus:
bash generate-worker-certificates.sh
- Überprüfen Sie die generierten Zertifikate:
ls -l /etc/kubernetes/pki/
Die folgenden Zertifikate sollten vorhanden sein:
- kubelet-client.crt
, kubelet-client.key
- kube-proxy.crt
, kube-proxy.key
Aufgabe 3: Kubelet konfigurieren und starten
In dieser Aufgabe konfigurieren und starten Sie kubelet
.
- Erstellen Sie eine Datei
/etc/systemd/system/kubelet.service
mit folgendem Inhalt:
[Unit]
Description=Kubernetes Kubelet
Documentation=https://kubernetes.io/docs/home/
After=network.target
[Service]
ExecStart=/usr/bin/kubelet --container-runtime=remote --container-runtime-endpoint=/run/containerd/containerd.sock --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml
Restart=always
StartLimitInterval=0
RestartSec=10
[Install]
WantedBy=multi-user.target
- Erstellen Sie die Kubelet-Konfigurationsdatei
/etc/kubernetes/kubelet.conf
:
kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/pki/ca.crt \
--server=https://<CONTROL_PLANE_IP>:6443 \
--kubeconfig=/etc/kubernetes/kubelet.conf
kubectl config set-credentials kubelet \
--client-certificate=/etc/kubernetes/pki/kubelet-client.crt \
--client-key=/etc/kubernetes/pki/kubelet-client.key \
--kubeconfig=/etc/kubernetes/kubelet.conf
kubectl config set-context default \
--cluster=kubernetes --user=kubelet --kubeconfig=/etc/kubernetes/kubelet.conf
kubectl config use-context default \
--kubeconfig=/etc/kubernetes/kubelet.conf
- Starten Sie den Kubelet-Dienst:
sudo systemctl daemon-reload
sudo systemctl enable kubelet
sudo systemctl start kubelet
Aufgabe 4: Kube Proxy konfigurieren und starten
In dieser Aufgabe konfigurieren und starten Sie kube-proxy
.
- Erstellen Sie die Kube Proxy-Konfigurationsdatei
/etc/kubernetes/kube-proxy.conf
:
kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/pki/ca.crt \
--server=https://<CONTROL_PLANE_IP>:6443 \
--kubeconfig=/etc/kubernetes/kube-proxy.conf
kubectl config set-credentials kube-proxy \
--client-certificate=/etc/kubernetes/pki/kube-proxy.crt \
--client-key=/etc/kubernetes/pki/kube-proxy.key \
--kubeconfig=/etc/kubernetes/kube-proxy.conf
kubectl config set-context default --cluster=kubernetes \
--user=kube-proxy --kubeconfig=/etc/kubernetes/kube-proxy.conf
kubectl config use-context default \
--kubeconfig=/etc/kubernetes/kube-proxy.conf
- Erstellen Sie eine Datei
kube-proxy-daemonset.yaml
:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: kube-proxy
namespace: kube-system
labels:
k8s-app: kube-proxy
spec:
selector:
matchLabels:
k8s-app: kube-proxy
template:
metadata:
labels:
k8s-app: kube-proxy
spec:
hostNetwork: true
containers:
- name: kube-proxy
image: k8s.gcr.io/kube-proxy:v1.24.0
command:
- /usr/local/bin/kube-proxy
- --config=/var/lib/kube-proxy/config.conf
volumeMounts:
- name: kube-proxy-config
mountPath: /var/lib/kube-proxy
volumes:
- name: kube-proxy-config
hostPath:
path: /etc/kubernetes/kube-proxy
- Wenden Sie die Konfiguration an:
kubectl apply -f kube-proxy-daemonset.yaml
Aufgabe 5: Worker Nodes mit der Control Plane verbinden
- Überprüfen Sie, ob die Worker Nodes erfolgreich mit der Control Plane verbunden sind:
kubectl get nodes
Die Worker Nodes sollten als Ready
angezeigt werden.
Aufgabe 6: Überprüfung
- Überprüfen Sie, ob die Pods für
kube-proxy
auf den Worker Nodes laufen:
kubectl get pods -n kube-system -o wide | grep kube-proxy
- Überprüfen Sie, ob die Worker Nodes im Cluster korrekt funktionieren:
```bash kubectl get nodes -o wide