Kubernetes mit kubespray installieren

Schritt-für-Schritt-Anweisungen

Inhaltsverzeichnis

Howto: Kubernetes mit Kubespray installieren, einschließlich der Umgebungseinstellungen, der Konfiguration der Inventardatei und der Ausführung der Ansible-Playbooks.

Arbeiter sprühen den Würfel in dem alten Fabrikgebäude

Voraussetzungen

Hardware- und Softwareanforderungen

  • Stellen Sie sicher, dass Sie mehrere Maschinen (mindestens 3 Knoten: 1 Master und 2 Worker) mit folgenden Spezifikationen haben:
    • Ubuntu 16.04/18.04 oder CentOS 7 installiert.
    • Mindestens 2 GB RAM pro Maschine (mehr RAM wird für größere Cluster empfohlen).
    • Netzwerkverbindung und SSH-Zugriff von der Kubespray-Steuerungsmaschine zu jedem Knoten.
    • Für Hochverfügbarkeit sollten Knoten mit 16 GB RAM, 100 GB Festplatte und 6 CPU-Kernen in Betracht gezogen werden.

Einrichtung der Steuerungsmaschine

  • Installieren Sie Git, falls noch nicht vorhanden:

    sudo apt install git-all
    
  • Installieren Sie Python (2.7 oder 3.5+) und pip:

    sudo apt update
    sudo apt install python3 python3-pip
    
  • Installieren Sie Ansible und andere Abhängigkeiten. Kubespray bietet ein Skript, um dies zu ermöglichen:

    git clone https://github.com/kubernetes-sigs/kubespray.git
    cd kubespray
    git checkout release-2.20  # Optional: Ein stabilerer Release auswählen
    python3 -m venv venv  # Erstellen Sie eine Python- virtuelle Umgebung
    source venv/bin/activate  # Aktivieren Sie die virtuelle Umgebung
    pip install -r requirements.txt  # Installieren Sie Ansible und andere Abhängigkeiten
    

Inventar konfigurieren

  • Kopieren Sie das Beispiel-Inventar:

    cp -r inventory/sample inventory/mycluster
    
  • Bearbeiten Sie die Datei inventory/mycluster/hosts.ini, um Ihre Knoten hinzuzufügen:

    [all]
    node1 ansible_host=10.10.1.3 ansible_user=ubuntu
    node2 ansible_host=10.10.1.4 ansible_user=ubuntu
    node3 ansible_host=10.10.1.5 ansible_user=ubuntu
    
    [kube-master]
    node1
    
    [kube-node]
    node2
    node3
    
  • Wenn Sie einen anderen Benutzer verwenden, ersetzen Sie ubuntu durch Ihren Benutzernamen.

  • Sie können auch das Skript inventory_builder verwenden, um die Inventar-Datei zu generieren:

    declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
    HOST_PREFIX=dcm-cp- KUBE_CONTROL_HOSTS=3 CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
    

Konfiguration anpassen

  • Passen Sie die Kubernetes-Cluster-Einstellungen in der Datei inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml an. Beispiel:

    kube_network_plugin: flannel
    kubeconfig_localhost: true
    
  • Für Hochverfügbarkeit konfigurieren Sie eine VIP und einen Lastenausgleicher:

    # In inventory/mycluster/group_vars/all/all.yml
    kube_vip_arp_enabled: true
    kube_vip_enabled: true
    kube_vip_controlplane_enabled: true
    kube_vip_address: 10.7.12.250  # Aktualisieren Sie mit der richtigen VIP
    kube_vip_interface: eno1  # Aktualisieren Sie mit der richtigen Schnittstelle
    

Cluster bereitstellen

  • Führen Sie das Ansible-Playbook aus, um Kubernetes zu bereitstellen:
    ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml -b -v --become --become-user=root --private-key=~/.ssh/private_key
    

Nach der Bereitstellung

  • Nach Abschluss der Bereitstellung finden Sie eine kubeconfig-Datei im Verzeichnis inventory/mycluster/artifacts. Diese Datei ist erforderlich, um mit Ihrem Kubernetes-Cluster über kubectl zu interagieren.
    export KUBECONFIG=inventory/mycluster/artifacts/admin.conf
    kubectl get nodes
    

Fehlerbehebung und Zugriff

  • Um Probleme zu beheben oder auf Ihren Cluster zuzugreifen, stellen Sie sicher, dass das kubectl-Binary auf Ihrer Steuerungsmaschine oder auf einem anderen Rechner installiert ist, von dem aus Sie den Cluster verwalten möchten.
  • Falls Sie Probleme wie nicht bereitgestellte Worker-Knoten oder andere Pod-Planungsschwierigkeiten begegnen, prüfen Sie die Protokolle und passen Sie die Konfiguration entsprechend an.