kubeadm ist ein Tool, das die Einrichtung und Konfiguration eines Kubernetes-Clusters erleichtert. Es automatisiert viele der komplexen Prozesse, die für die Installation und Verwaltung eines Clusters erforderlich sind. In diesem Kapitel wird beschrieben, wie man einen Kubernetes-Cluster mit kubeadm installiert und konfiguriert.
Bevor Sie mit der Installation beginnen, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
Führen Sie die folgenden Schritte auf allen Maschinen (Master und Worker) aus:
Swap-Speicher deaktivieren:
sudo swapoff -aDocker installieren:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce
sudo systemctl enable docker
sudo systemctl start dockerkubeadm, kubelet und kubectl installieren:
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectlKernel-Module laden:
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --systemFühren Sie den folgenden Befehl auf der Master-Node aus, um den Cluster zu initialisieren:
sudo kubeadm init --pod-network-cidr=192.168.0.0/16Nach erfolgreicher Initialisierung:
kubectl.kubeadm join-Befehl hinzu.Konfigurieren Sie kubectl:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/configInstallieren Sie ein Netzwerk-Plugin, z. B. Calico, auf der Master-Node:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yamlFühren Sie den folgenden Befehl auf jeder Worker-Node aus (verwenden
Sie den kubeadm join-Befehl, der bei der Initialisierung
der Master-Node angezeigt wurde):
sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>Überprüfen Sie den Status der Nodes:
kubectl get nodesDie Ausgabe sollte die Master- und Worker-Nodes mit dem Status
Ready anzeigen.
Überprüfen Sie die Pods im kube-system
Namespace:
kubectl get pods -n kube-systemAlle Pods sollten im Status Running sein.
Um sicherzustellen, dass der Cluster ordnungsgemäß funktioniert, erstellen Sie ein einfaches Nginx-Deployment:
Erstellen Sie eine Deployment-Datei
nginx-deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80Wenden Sie die Deployment-Datei an:
kubectl apply -f nginx-deployment.yamlÜberprüfen Sie den Status des Deployments:
kubectl get deployments
kubectl get pods
kubectl get servicesDie Installation eines Kubernetes-Clusters mit kubeadm ist eine bewährte Methode, um schnell und effizient einen produktionsreifen Cluster aufzusetzen. kubeadm automatisiert viele komplexe Prozesse und bietet eine solide Grundlage für die weitere Konfiguration und Verwaltung des Clusters. Durch die Befolgung dieser Schritte können Sie sicherstellen, dass Ihr Cluster stabil und betriebsbereit ist.
System aktualisieren und notwendige Pakete installieren
sudo apt update
sudo apt-get install -y apt-transport-https ca-certificates curl gpgKubernetes-APT-Repository hinzufügen
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt updateKubernetes-Komponenten und Containerd installieren
sudo apt-get install -y kubelet kubeadm kubectl containerd
sudo apt-mark hold kubelet kubeadm kubectl containerdCNI-Plugins installieren
sudo apt-get install -y containernetworking-pluginsKubelet aktivieren
sudo systemctl enable --now kubeletIP-Weiterleitung aktivieren
sudo sysctl -w net.ipv4.ip_forward=1
sudo sh -c "echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf"
sudo sysctl -pSwap deaktivieren
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstabContainerd konfigurieren
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerdKubernetes-Cluster initialisieren
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --cri-socket=unix:///run/containerd/containerd.sockKubeconfig-Datei für den Benutzer einrichten
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/configkubectl Autovervollständigung laden
echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrcFlannel-Netzwerk-Plugin installieren
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlKnotenstatus überprüfen
kubectl get nodesPod-Status überprüfen
kubectl get pods -n kube-systemDas regelmäßige Aktualisieren eines Kubernetes-Clusters ist entscheidend, um von neuen Funktionen, Sicherheitsupdates und Leistungsverbesserungen zu profitieren. Ein Cluster-Upgrade umfasst das Aktualisieren der Control Plane-Komponenten (API-Server, Controller-Manager, Scheduler) sowie der Worker-Nodes. In diesem Kapitel werden die Schritte beschrieben, die erforderlich sind, um einen Kubernetes-Cluster sicher und effektiv zu aktualisieren.
Bevor Sie mit dem Upgrade beginnen, stellen Sie sicher, dass folgende Voraussetzungen erfüllt sind:
Ready sind.Erstellen Sie ein Backup der etcd-Datenbank auf der Master-Node:
ETCDCTL_API=3 etcdctl snapshot save snapshot.db --endpoints=<etcd-endpoint> --cacert=<path-to-cafile> --cert=<path-to-certfile> --key=<path-to-keyfile>a. Aktualisieren der Paketlisten und Installation der neuen Versionen von kubeadm, kubelet und kubectl:
sudo apt-get update
sudo apt-get install -y kubeadm=<version>b. Upgrade des Control Plane:
sudo kubeadm upgrade plan
sudo kubeadm upgrade apply <version>c. Aktualisieren von kubelet und kubectl:
sudo apt-get install -y kubelet=<version> kubectl=<version>
sudo systemctl daemon-reload
sudo systemctl restart kubeleta. Aktualisieren von kubeadm auf jedem Worker-Node:
sudo apt-get update
sudo apt-get install -y kubeadm=<version>b. Upgrade von kubelet und kubectl auf jedem Worker-Node:
sudo kubeadm upgrade node
sudo apt-get install -y kubelet=<version> kubectl=<version>
sudo systemctl daemon-reload
sudo systemctl restart kubeletÜberprüfen Sie den Status der Nodes:
kubectl get nodesAlle Nodes sollten im Status Ready und auf der neuen
Version sein.
Hier ist ein Beispiel für das Upgrade eines Clusters von Version 1.20.x auf 1.21.x:
Backup der etcd-Datenbank:
ETCDCTL_API=3 etcdctl snapshot save snapshot.db --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.keyMaster-Node upgraden:
sudo apt-get update
sudo apt-get install -y kubeadm=1.21.0-00
sudo kubeadm upgrade plan
sudo kubeadm upgrade apply v1.21.0
sudo apt-get install -y kubelet=1.21.0-00 kubectl=1.21.0-00
sudo systemctl daemon-reload
sudo systemctl restart kubeletWorker-Nodes upgraden:
for node in worker1 worker2 worker3; do
ssh $node "sudo apt-get update && sudo apt-get install -y kubeadm=1.21.0-00 && sudo kubeadm upgrade node && sudo apt-get install -y kubelet=1.21.0-00 kubectl=1.21.0-00 && sudo systemctl daemon-reload && sudo systemctl restart kubelet"
doneCluster-Status überprüfen:
kubectl get nodesDas Upgrade eines Kubernetes-Clusters erfordert sorgfältige Planung und Ausführung, um Ausfallzeiten zu minimieren und die Integrität des Clusters zu gewährleisten. Durch das Befolgen der beschriebenen Schritte und die regelmäßige Überprüfung des Cluster-Status können Administratoren sicherstellen, dass ihre Kubernetes-Umgebung auf dem neuesten Stand bleibt und von den neuesten Verbesserungen und Sicherheitsupdates profitiert.