Wenn Sie Fragen haben, schauen Sie sich die Dokumentation auf kubespray.io an und besuchen Sie uns im Kubernetes-Slack, Kanal #kubespray . Hier können Sie Ihre Einladung erhalten
Im Folgenden finden Sie mehrere Möglichkeiten, Kubespray zum Bereitstellen eines Kubernetes-Clusters zu verwenden.
Installieren Sie Ansible gemäß der Ansible-Installationsanleitung und führen Sie dann die folgenden Schritte aus:
# Copy ` ` inventory/sample ` ` as ` ` inventory/mycluster ` `
cp -rfp inventory/sample inventory/mycluster
# Update Ansible inventory file with inventory builder
declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
# Review and change parameters under ` ` inventory/mycluster/group_vars ` `
cat inventory/mycluster/group_vars/all/all.yml
cat inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml
# Clean up old Kubernetes cluster with Ansible Playbook - run the playbook as root
# The option ` --become ` is required, as for example cleaning up SSL keys in /etc/,
# uninstalling old packages and interacting with various systemd daemons.
# Without --become the playbook will fail to run !
# And be mind it will remove the current kubernetes cluster (if it ' s running)!
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root reset.yml
# Deploy Kubespray with Ansible Playbook - run the playbook as root
# The option ` --become ` is required, as for example writing SSL keys in /etc/,
# installing packages and interacting with various systemd daemons.
# Without --become the playbook will fail to run !
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
Hinweis: Wenn Ansible bereits über Systempakete auf dem Steuerknoten installiert ist, werden über sudo pip install -r requirements.txt
installierte Python-Pakete in einen anderen Verzeichnisbaum verschoben (z. B. /usr/local/lib/python2.7/dist-packages
). unter Ubuntu) von Ansible (z. B. /usr/lib/python2.7/dist-packages/ansible
immer noch unter Ubuntu). Infolgedessen schlägt der Befehl ansible-playbook
fehl mit:
ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.
Dies deutet wahrscheinlich darauf hin, dass eine Aufgabe von einem Modul abhängt, das in requirements.txt
vorhanden ist.
Eine Möglichkeit, dies zu beheben, besteht darin, das Ansible-Systempaket zu deinstallieren und dann Ansible über pip
neu zu installieren. Dies ist jedoch nicht immer möglich und man muss auf die Paketversionen achten. Eine Problemumgehung besteht darin, die Umgebungsvariablen ANSIBLE_LIBRARY
und ANSIBLE_MODULE_UTILS
jeweils auf die Unterverzeichnisse ansible/modules
und ansible/module_utils
des pip
Installationsspeicherorts festzulegen. Dies ist der Location
, der durch Ausführen pip show [package]
vor der Ausführung ansible-playbook
angezeigt wird.
Eine einfache Möglichkeit, sicherzustellen, dass Sie die richtige Version von Ansible erhalten, besteht darin, das vorgefertigte Docker-Image von Quay zu verwenden. Anschließend müssen Sie Bind-Mounts verwenden, um auf das Inventar und den SSH-Schlüssel im Container zuzugreifen, etwa so:
git checkout v2.26.0
docker pull quay.io/kubespray/kubespray:v2.26.0
docker run --rm -it --mount type=bind,source="$(pwd)"/inventory/sample,dst=/inventory
--mount type=bind,source="${HOME}"/.ssh/id_rsa,dst=/root/.ssh/id_rsa
quay.io/kubespray/kubespray:v2.26.0 bash
# Inside the container you may now run the kubespray playbooks:
ansible-playbook -i /inventory/inventory.ini --private-key /root/.ssh/id_rsa cluster.yml
Sehen Sie hier, wenn Sie dieses Repository als Ansible-Sammlung verwenden möchten
Für Vagrant müssen wir Python-Abhängigkeiten für Bereitstellungsaufgaben installieren. Überprüfen Sie, ob Python
und pip
installiert sind:
python -V && pip -V
Wenn dadurch die Version der Software zurückgegeben wird, können Sie loslegen. Wenn nicht, laden Sie Python hier herunter und installieren Sie es: https://www.python.org/downloads/source/
Installieren Sie Ansible gemäß der Ansible-Installationsanleitung und führen Sie dann den folgenden Schritt aus:
vagrant up
Hinweis: Upstart/SysV-Init-basierte Betriebssystemtypen werden nicht unterstützt.
ansible_become
oder die Befehlsparameter --become or -b
angegeben werden.Hardware: Diese Grenzen werden durch Kubespray sichergestellt. Die tatsächlichen Anforderungen an Ihr Arbeitspensum können abweichen. Eine Anleitung zur Größenbestimmung finden Sie im Leitfaden „Building Large Clusters“.
Sie können zwischen zehn Netzwerk-Plugins wählen. (Standard: calico
, außer Vagrant verwendet flannel
)
Flanell: gre/vxlan (Schicht 2) Netzwerk.
Calico ist ein Netzwerk- und Netzwerkrichtlinienanbieter. Calico unterstützt eine Reihe flexibler Netzwerkoptionen, die darauf ausgelegt sind, Ihnen die effizienteste Vernetzung in einer Reihe von Situationen zu ermöglichen, einschließlich Nicht-Overlay- und Overlay-Netzwerken, mit oder ohne BGP. Calico verwendet dieselbe Engine, um Netzwerkrichtlinien für Hosts, Pods und (bei Verwendung von Istio und Envoy) Anwendungen auf der Service-Mesh-Ebene durchzusetzen.
cilium: Layer 3/4-Netzwerk (sowie Layer 7 zum Schutz und zur Sicherung von Anwendungsprotokollen), unterstützt das dynamische Einfügen von BPF-Bytecode in den Linux-Kernel, um Sicherheitsdienste, Netzwerk- und Sichtbarkeitslogik zu implementieren.
Weave: Weave ist ein leichtes Container-Overlay-Netzwerk, das keinen externen K/V-Datenbankcluster erfordert. (Weitere Informationen finden Sie in der Dokumentation weave
Fehlerbehebung.)
kube-ovn: Kube-OVN integriert die OVN-basierte Netzwerkvirtualisierung mit Kubernetes. Es bietet eine fortschrittliche Container Network Fabric für Unternehmen.
kube-router: Kube-router ist ein L3-CNI für Kubernetes-Netzwerke, das auf betriebliche Einfachheit und hohe Leistung abzielt: Es verwendet IPVS, um Kube Services Proxy (falls als Ersatz für kube-proxy eingerichtet), iptables für Netzwerkrichtlinien und BGP für ods bereitzustellen L3-Netzwerk (optional mit BGP-Peering mit BGP-Peers außerhalb des Clusters). Optional können auch Routen zu CIDRs, ClusterIPs, ExternalIPs und LoadBalancerIPs von Kubernetes-Cluster-Pods angekündigt werden.
macvlan: Macvlan ist ein Linux-Netzwerktreiber. Pods haben ihre eigene eindeutige Mac- und IP-Adresse und sind direkt mit dem physischen Netzwerk (Schicht 2) verbunden.
Multus: Multus ist ein Meta-CNI-Plugin, das Pods mehrere Netzwerkschnittstellen unterstützt. Für jede Schnittstelle delegiert Multus CNI-Aufrufe an sekundäre CNI-Plugins wie Calico, Macvlan usw.
custom_cni: Sie können einige Manifeste angeben, die auf die Cluster angewendet werden, um Ihr eigenes CNI bereitzustellen und von Kubespray nicht unterstützte Manifeste zu verwenden. Ein Beispiel mit einem von einem Helm-Chart bereitgestellten CNI finden Sie unter tests/files/custom_cni/README.md
und tests/files/custom_cni/values.yaml
.
Das zu verwendende Netzwerk-Plugin wird durch die Variable kube_network_plugin
definiert. Es besteht auch die Möglichkeit, stattdessen das integrierte Netzwerk eines Cloud-Anbieters zu nutzen. Siehe auch Netzwerkprüfer.
nginx: der NGINX-Ingress-Controller.
metallb: der MetalLB-Bare-Metal-Service-LoadBalancer-Anbieter.
CI/End-to-End-Tests gesponsert von: CNCF, Equinix Metal, OVHcloud, ELASTX.
Einzelheiten finden Sie in der Testmatrix.