Kubernetes ist ein kostenloses Open-Source-Container-Orchestrierungstool. Es wird verwendet, um Container-basierte Anwendungen automatisch in einer Cluster-Umgebung bereitzustellen, abgesehen davon, dass es auch zur Verwaltung von Docker-Containern verwendet wird über die Kubernetes-Cluster-Hosts hinweg. Kubernetes ist auch als K8s bekannt .
In diesem Artikel zeige ich, wie man Kubernetes mit zwei Knoten installiert und konfiguriert (1.13) mit kubeadm auf Ubuntu 18.04 / 18.10-Systemen. Im Folgenden sind die Details meines Laboraufbaus aufgeführt:
Ich werde drei Ubuntu 18.04 LTS-Systeme verwenden, wobei ein System als Kubernetes-Master-Knoten fungiert und die anderen beiden Knoten fungieren als Slave-Knoten e und wird dem Kubernetes-Cluster beitreten. Ich gehe davon aus, dass auf diesen drei Systemen mindestens 18.04 LTS installiert ist.
- Kubernetes-Masterknoten – (Hostname:k8s-master , IP :192.168.1.70, Betriebssystem :Minimal Ubuntu 18.04 LTS)
- Kubernetes-Slave-Knoten 1 – (Hostname:k8s-worker-node1, IP:192.168.1.80 , OS:Minimal Ubuntu 18.04 LTS)
- Kubernetes-Slave-Knoten 2 – (Hostname:k8s-worker-node2, IP:192.168.1.90 , OS:Minimal Ubuntu 18.04 LTS)
Hinweis: Der Kubernetes-Slave-Knoten ist auch als Worker-Knoten bekannt
Lassen Sie uns zu den Installations- und Konfigurationsschritten von k8s springen.
Schritt:1) Hostnamen festlegen und Hostdatei aktualisieren
Melden Sie sich beim Master-Knoten an und konfigurieren Sie seinen Hostnamen mit dem Befehl hostnamectl
[E-Mail-geschützt]:~$ sudo hostnamectl set-hostname "k8s-master"[E-Mail-geschützt]:~$ exec bash[E-Mail-geschützt]:~$
Melden Sie sich bei Slave-/Worker-Knoten an und konfigurieren Sie deren Hostnamen jeweils mit dem Befehl hostnamectl,
[email protected]:~$ sudo hostnamectl set-hostname k8s-worker-node1[email protected]:~$ exec bash[email protected]:~$[email protected]:~$ sudo hostnamectl set-hostname k8s- worker-node2[E-Mail-geschützt]:~$ exec bash[E-Mail-geschützt]:~$
Fügen Sie auf allen drei Systemen die folgenden Zeilen zur Datei /etc/hosts hinzu,
192.168.1.70 k8s-master192.168.1.80 k8s-worker-node1192.168.1.90 k8s-worker-node2
Schritt:2) Docker-Dienst auf Master- und Slave-Knoten installieren und starten
Führen Sie den folgenden apt-get-Befehl aus, um Docker auf dem Master-Knoten zu installieren,
[email protected]:~$ sudo apt-get install docker.io -y
Führen Sie den folgenden apt-get-Befehl aus, um Docker auf Slave-Knoten zu installieren,
[email protected]:~$ sudo apt-get install docker.io -y[email protected]:~$ sudo apt-get install docker.io -y
Sobald die Docker-Pakete auf allen drei Systemen installiert sind, starten und aktivieren Sie den Docker-Dienst mit den folgenden systemctl-Befehlen. Diese Befehle müssen auf Master- und Slave-Knoten ausgeführt werden.
~$ sudo systemctl start docker~$ sudo systemctl enable dockerSynchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.Executing:/lib/systemd/systemd-sysv-install enable docker ~$
Verwenden Sie den folgenden Docker-Befehl, um zu überprüfen, welche Docker-Version auf diesen Systemen installiert wurde,
~$ docker --versionDocker-Version 18.06.1-ce, Build e68fc7a~$
Schritt:3) Konfigurieren Sie das Kubernetes-Paket-Repository auf Master- und Slave-Knoten
Hinweis: Alle Befehle in diesem Schritt müssen auf Master- und Slave-Knoten ausgeführt werden
Lassen Sie uns zuerst einige erforderliche Pakete installieren und die folgenden Befehle auf allen Knoten ausführen, einschließlich des Master-Knotens
~$ sudo apt-get install apt-transport-https curl -y
Fügen Sie nun den Kubernetes-Paket-Repository-Schlüssel mit dem folgenden Befehl hinzu:
:~$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key addOK:~$
Konfigurieren Sie jetzt das Kubernetes-Repository mit den folgenden apt-Befehlen. Zu diesem Zeitpunkt ist das Kubernetes-Paket-Repository von Ubuntu 18.04 (bionic weaver) nicht verfügbar, daher verwenden wir das Xenial Kubernetes-Paket-Repository.
:~$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
Schritt:4) Deaktivieren Sie Swap und installieren Sie Kubeadm auf allen Knoten
Hinweis: Alle Befehle in diesem Schritt müssen auf Master- und Slave-Knoten ausgeführt werden
Kubeadm ist eine der am häufigsten verwendeten Methoden zum Bereitstellen von Kubernetes-Clustern oder mit anderen Worten, wir können sagen, dass es zum Bereitstellen mehrerer Knoten in einem Kubernetes-Cluster verwendet wurde.
Gemäß der offiziellen Kubernetes-Website wird empfohlen, den Swap auf allen Knoten einschließlich des Master-Knotens zu deaktivieren.
Führen Sie den folgenden Befehl aus, um den Swap temporär zu deaktivieren,
:~$ sudo swapoff -a
Um den Swap dauerhaft zu deaktivieren, kommentieren Sie den Eintrag Swapfile oder Swap-Partition in der Datei /etc/fstab aus.
Installieren Sie jetzt das Kubeadm-Paket auf allen Knoten, einschließlich master.
:~$ sudo apt-get install kubeadm -y
Nachdem die kubeadm-Pakete erfolgreich installiert wurden, überprüfen Sie die kubeadm-Version mit dem Befehl below.
:~$ kubeadm versionkubeadm version:&version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.2", GitCommit:"cff46ab41ff0bb44d8584413b598ad8360ec1def", GitTreeState:"clean", BuildDate:"2019 -01-10T23:33:30Z", GoVersion:"go1.11.4", Compiler:"gc", Plattform:"linux/amd64"}:~$
Schritt:5) Initialisieren und starten Sie den Kubernetes-Cluster auf dem Master-Knoten mit Kubeadm
Verwenden Sie den folgenden kubeadm-Befehl nur auf dem Master-Knoten, um Kubernetes zu initialisieren
[email protected]:~$ sudo kubeadm init --pod-network-cidr=172.168.10.0/24
Im obigen Befehl können Sie dasselbe Pod-Netzwerk verwenden oder Ihr eigenes Pod-Netzwerk auswählen, das zu Ihrer Umgebung passt. Sobald der Befehl erfolgreich ausgeführt wurde, erhalten wir die Ausgabe in etwa wie unten,
Die obige Ausgabe bestätigt, dass der Master-Knoten erfolgreich initialisiert wurde. Um den Cluster zu starten, führen Sie also die folgenden Befehle nacheinander aus,
[E-Mail-geschützt]:~$ mkdir -p $HOME/.kube[E-Mail-geschützt]:~$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config[E-Mail-geschützt]:~ $ sudo chown $(id -u):$(id -g) $HOME/.kube/config[email protected]:~$
Überprüfen Sie den Status des Master-Knotens mit dem folgenden Befehl:
[email protected]:~$ kubectl get nodesNAME STATUS ROLLEN AGE VERSIONk8s-master NotReady master 18m v1.13.2[email protected]:~$
Wie wir in der obigen Befehlsausgabe sehen können, ist unser Master-Knoten nicht bereit, da wir bis jetzt noch keinen Pod bereitgestellt haben.
Stellen wir das Pod-Netzwerk bereit. Das Pod-Netzwerk ist das Netzwerk, über das unsere Cluster-Knoten miteinander kommunizieren. Wir werden Flanell einsetzen Als unser Pod-Netzwerk wird Flannel das Overlay-Netzwerk bereitstellen zwischen Clusterknoten.
Schritt:6) Stellen Sie Flannel als Pod-Netzwerk vom Master-Knoten bereit und überprüfen Sie die Pod-Namespaces
Führen Sie das folgende kubectl aus Befehl zum Bereitstellen des Pod-Netzwerks vom Master-Knoten
[email protected]:~$ sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Die Ausgabe des obigen Befehls sollte in etwa so aussehen wie unten
clusterrole.rbac.authorization.k8s.io/flannel createdclusterrolebinding.rbac.authorization.k8s.io/flannel createdserviceaccount/flannel createdconfigmap/kube-flannel-cfg createddaemonset.extensions/kube-flannel-ds-amd64 createddaemonset.extensions/ kube-flannel-ds-arm64 createddaemonset.extensions/kube-flannel-ds-arm createddaemonset.extensions/kube-flannel-ds-ppc64le createddaemonset.extensions/kube-flannel-ds-s390x created[email protected]:~$Überprüfen Sie nun den Status des Master-Knotens und die Pod-Namespaces mit dem Befehl kubectl,
[email protected]:~$ sudo kubectl get nodesNAME STATUS ROLLEN ALTER VERSIONk8s-master Bereit master 78m v1.13.2[email protected]:~$[email protected]:~$ sudo kubectl get pods --all-namespacesNAMESPACE NAME Bereitschaftsstatus Neustarts Alterskube-System COREDNS-86C58D9DF4-PX4SJ 1/1 Ausführen 0 79mkube-System COREDNS-86C58D9DF4-WZDZK 1/1 Laufen 0 79mkube-System etcd-k8s-Master 1/1 Laufen 1 79mkube-System Kube-Apiserver-K8s -Master 1/1 Laufen 1 79mkube-System Kube-Controller-Manager-K8S-Master 1/1 Laufen 1 79mkube-System Kube-Flanell-DS-AMD64-9TN8Z 1/1 Laufen 0 14mkube-System Kube-Proxy-CJZZ2 1 /1 Wird ausgeführt 1 79mkube-system kube-scheduler-k8s-master 1/1 Wird ausgeführt 1 79 m [email protected]:~$Wie wir in der obigen Ausgabe sehen können, hat sich der Status unseres Master-Knotens in „Bereit“ geändert “ und alle Namespaces des Pods befinden sich im Ausführungsstatus, was bestätigt, dass sich unser Master-Knoten in einem fehlerfreien Zustand befindet und bereit ist, einen Cluster zu bilden.
Schritt:7) Slave- oder Worker-Knoten zum Cluster hinzufügen
Hinweis: In Schritt 5, kubeadm-Befehlsausgabe, haben wir den vollständigen Befehl erhalten, den wir auf dem Slave- oder Worker-Knoten verwenden müssen, um einem Cluster beizutreten
Melden Sie sich beim ersten Slave-Knoten (k8s-worker-node1) an und führen Sie den folgenden Befehl aus, um dem Cluster beizutreten,
[email protected]:~$ sudo kubeadm join 192.168.1.70:6443 --token cwxswk.hbkuu4jua82o80d1 --discovery-token-ca-cert-hash sha256:ff1b0cfe5aec94f90a42bdb45d2b8bfde34006017c0e3f308Die Ausgabe des obigen Befehls sollte in etwa so aussehen:
Führen Sie auf ähnliche Weise denselben kubeadm join-Befehl auf dem zweiten Worker-Knoten aus,
[email protected]:~$ sudo kubeadm join 192.168.1.70:6443 --token cwxswk.hbkuu4jua82o80d1 --discovery-token-ca-cert-hash sha256:ff1b0cfe5aec94f90a42bdb45d2b8bfde34006017c0e3f308Die Ausgabe von oben sollte so etwas wie unten sein,
Gehen Sie nun zum Master-Knoten und führen Sie den folgenden Befehl aus, um den Status des Master- und Slave-Knotens zu überprüfen
[E-Mail geschützt]:~ $ KUBECTL Holen Sie sich NODESNAME Status Rollen AltersversionK8s-Master Ready Master 100m V1.13.2K8S-Arbeiter-Knoten1 READY10M V1.13.2K8S-Arbeiter-Node2 Bereit 4m6s V1. 13.2[E-Mail-geschützt]:~$ Der obige Befehl bestätigt, dass wir unsere beiden Worker-Knoten erfolgreich zum Cluster hinzugefügt haben und ihr Status „Bereit“ ist. Dies bedeutet, dass wir den Kubernetes-Cluster mit zwei Knoten erfolgreich auf Ubuntu 18.04-Systemen installiert und konfiguriert haben.
Lesen Sie mehr zu:Pod, Replication Controller und Service in Kubernetes bereitstellen