GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So installieren Sie Kubernetes unter CentOS 7, Ubuntu 18.04 / 16.04 und Debian 9

Kubernetes ist ein Open-Source-Container-Orchestrierungstool auf Produktionsniveau, das dabei hilft, die Bereitstellung, Skalierung und Verwaltung containerisierter Anwendungen zu automatisieren. Google hat Kubernetes ursprünglich entwickelt und wird jetzt von der Cloud Native Computing Foundation verwaltet.

Sie können Kubernetes aufrufen ist ein Cluster-Manager für Docker , und es bietet fast dieselben Funktionen wie Docker Swarm . Mit Kubernetes können Sie eine beliebige Anzahl von Containerreplikaten auf einem Knotencluster bereitstellen, und Kubernetes kümmert sich um die verbleibenden (wo Container hochgefahren werden) für Sie.

Wir können Kubernetes auf dem lokalen Computer mit den folgenden Methoden ausführen,

1. MinKube – Ein Kubernetes-Cluster mit einem Knoten für Entwicklung und Tests.
2. Kubeadm-dind (Kuberadm) – Ein Kubernetes-Cluster mit mehreren Knoten

Alle Methoden können Sie hier nachlesen .

Hier werden wir einen Kubernetes-Cluster mit mehreren Knoten mithilfe von kubeadm bereitstellen. In diesem Multi-Node-Setup haben wir einen Master-Node und mehrere Worker-Nodes (Minions).

Komponenten

Master-Knoten

kube-API-Server: Es ist ein API-Server, der auf dem Master-Knoten ausgeführt wird, der die Kubernetes-API
etcd: verfügbar macht Ein Schlüsselspeicher, der Kubenetes-Clusterdaten speichert
kube-scheduler: Es ist ein Planer, der auf dem Master-Knoten ausgeführt wird, der neu erstellte Pods überwacht und diese Pods abhängig von der Ressourcenverfügbarkeit auf ausgewählten Knoten ausführt.
kube-controller-manager: Es ist ein Steuerungsmanager, der auf dem Manager ausgeführt wird, der für die Überwachung der Knoten und die Aufrechterhaltung der Pod-Replikation verantwortlich ist.
cloud-controller-manager: Ein Cloud Control Manager, der mit zugrunde liegenden Cloud-Anbietern interagiert (z. B. DigitalOcean, Rancher usw.).

Worker-Knoten

kubelet: Es wird auf allen Worker-Knoten ausgeführt und übernimmt Aufgaben wie das Starten von Pods und Containern.
kube-proxy: Es ist ein Kubernetes-Netzwerk-Proxy, der eingehende TCP/UDP-Anforderungen an den Back-End-Container weiterleitet.
Container-Laufzeit: Es ist eine Container-Software (Docker)

Umgebung

Knoten Hostname IP-Adresse Betriebssystem Prozessor RAM
Master-Knoten master.itzgeek.local 192.168.1.10 CentOS 7 / RHEL 7 2 2 GB
Minion-Knoten 1 node1.itzgeek.local 192.168.1.20 Ubuntu 18.04 / 16.04 2 2 GB
Minion-Knoten 2 node2.itzgeek.local 192.168.1.30 Debian 9 2 2 GB
Sie müssen Swap deaktivieren, damit Kubernetes ordnungsgemäß funktioniert

Hier verwende ich eine gemischte Umgebung für diese Demo. Ich bitte Sie jedoch, das ähnliche Betriebssystem nur zur einfacheren Fehlerbehebung zu verwenden.

Voraussetzungen

Werden Sie Root-Benutzer.

su -

ODER

sudo su -

Hostnamen festlegen

Legen Sie einen eindeutigen Hostnamen für alle Ihre Knoten fest. Beispiel:

hostnamectl set-hostname master.itzgeek.local

Machen Sie einen Host-Eintrag oder DNS Eintrag zum Auflösen des Hostnamens für alle Knoten.

vi /etc/hosts

Eintrag:

192.168.1.10 master.itzgeek.local master192.168.1.20 node1.itzgeek.local node1192.168.1.30 node2.itzgeek.local node2

Firewall

Konfigurieren Sie die Firewall für Kubernetes so, dass sie ordnungsgemäß funktioniert.

Auf Masterknoten

FirwallD:

firewall-cmd --permanent --add-port=6443/tcpfirewall-cmd --permanent --add-port=2379-2380/tcpfirewall-cmd --permanent --add-port=10250/tcpfirewall-cmd --permanent --add-port=10251/tcpfirewall-cmd --permanent --add-port=10252/tcpfirewall-cmd --permanent --add-port=10255/tcpfirewall-cmd --reload

UFW:

ufw zulassen 6443/tcpufw zulassen 2379tcpufw zulassen 2380/tcpufw zulassen 10250/tcpufw zulassen 10251/tcpufw zulassen 10252/tcpufw zulassen 10255/tcpufw neu laden

Auf Worker-Knoten

FirwallD:

firewall-cmd --permanent --add-port=10251/tcpfirewall-cmd --permanent --add-port=10255/tcpfirewall-cmd --reload

UFW:

ufw zulassen 10251/tcpufw zulassen 10255/tcpufw neu laden

SELinux

Erwägen Sie, SELinux auf CentOS 7/RHEL 7 zu deaktivieren Knoten.

setenforce 0sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

Kernel-Einstellungen

In RHEL 7/CentOS 7 , setzen Sie net.bridge.bridge-nf-call-iptables in Ihrer sysctl-Konfiguration auf 1.

cat < /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables =1net.bridge.bridge-nf-call-iptables =1EOFsysctl -p

Docker installieren

Installieren Sie Docker auf allen Ihren Knoten (Master und Minions). Docker-Version v18.06 wird empfohlen, aber v1.11, v1.12, v1.13 und 17.03 funktionieren auch gut mit Kubernetes.

CentOS 7 / RHEL 7

### Installieren Sie Docker aus dem CentOS/RHEL-Repository ### yum install -y dockersystemctl docker aktivieren systemctl docker starten ODER ### Docker CE 18.06 aus den CentOS-Repositories von Docker installieren #### Voraussetzungen installieren  yum install -y yum-utils device-mapper-persistent-data lvm2# Docker-Repository hinzufügen yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # Dockeryum installieren updateyum install -y docker-ce-18.06.1.ce# Docker-Verzeichnis erstellen mkdir /etc/docker# Docker Daemoncat einrichten> /etc/docker/daemon.json < 

Ubuntu 18.04 / Ubuntu 16.04

### Installieren Sie Docker aus den Repositories von Ubuntu ### apt-get updateapt-get install -y docker.ioODER ### Installieren Sie Docker CE 18.06 aus den Docker-Repositories für Ubuntu #### Installationsvoraussetzungen apt-get updateapt-get install -y apt-transport-https ca-certificates curl software-properties-common# GPG-Schlüssel herunterladen curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -# Docker-Repository hinzufügen  add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"# Docker installieren apt-get updateapt-get install -y docker-ce=18.06.0~ce~3-0~ubuntu# Setup Daemon cat> /etc/docker/daemon.json <# Docker Daemon neu starten systemctl daemon-reloadsystemctl docker neu starten

Debian 9

### Installieren Sie Docker aus den Debian-Repositories ### apt-get updateapt-get install -y docker.ioODER ### Installieren Sie Docker CE 18.06 aus den Docker-Repositories für Debian ### # Installationsvoraussetzung sapt-get updateapt-get install -y apt-transport-https ca-certificates curl software-properties-common# GPG-Schlüssel herunterladen  curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -# Docker-Repository hinzufügen add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/debian \ $(lsb_release -cs) \ stable"# Docker installieren apt-get updateapt-get install -y docker-ce=18.06.0~ce~3-0~debian# Setup Daemon cat> /etc/docker/daemon.json <# Docker Daemon neu starten systemctl daemon-reloadsystemctl docker neu starten

Kubernetes-Repository konfigurieren

Kubernetes Pakete sind nicht in OS-Repositorys verfügbar, daher müssen Sie die folgenden Schritte ausführen, um das Repository auf allen Ihren Knoten zu konfigurieren.

### CentOS 7 / RHEL 7 ###cat < /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://packages.cloud.google.com/ yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum /doc/rpm-package-key.gpgexclude=kube*EOF### Ubuntu 18.04 / 16.05 &Debian 9 ###apt-get updateapt-get install -y curl apt-transport-httpscurl -s https://packages. cloud.google.com/apt/doc/apt-key.gpg | apt-key add -echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

Installieren Sie kubeadm, kubelet und kubectl

Führen Sie auf allen Ihren Knoten die folgenden Befehle aus, um die erforderlichen Pakete zu installieren.

kubeadm:Der Befehl zum Erstellen des Clusters.

kubelet:Läuft auf allen Maschinen in Ihrem Cluster und erledigt Dinge wie das Starten von Pods und Containern.

kubectl:das Befehlszeilendienstprogramm zum Verwalten Ihres Clusters.

### CentOS 7 / RHEL 7 ###yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetssystemctl enable kubelet systemctl start kubelet### Ubuntu 16.04 / Debian 9 ###apt-get updateapt-get install - und kubelet kubeadm kubectl

Kubernetes-Master initialisieren

Führen Sie auf dem Master-Knoten den Befehl kubeadm init im Terminal aus, um den Cluster zu initialisieren.

Abhängig vom Netzwerk-Add-on Sie verwenden, müssen Sie möglicherweise --pod-network-cidr festlegen auf einen bestimmten Wert. Hier verwende ich das Wave-Pod-Netzwerk, das keine zusätzlichen Argumente erfordert.
kubeadm init

Ausgabe:

[init] Verwendung von Kubernetes Version:v1.13.0[preflight] Ausführen von Preflight-Checks [WARNUNG Firewalld]:Firewalld ist aktiv, bitte stellen Sie sicher, dass die Ports [6443 10250] offen sind oder Ihr Cluster möglicherweise nicht richtig funktioniert[preflight] Pulling Bilder, die zum Einrichten eines Kubernetes-Clusters erforderlich sind[Preflight] Dies kann je nach Geschwindigkeit Ihrer Internetverbindung ein oder zwei Minuten dauern[Preflight] Sie können diese Aktion auch im Voraus mit „kubeadm config images pull“ ausführen[kubelet-start] Schreiben der kubelet-Umgebungsdatei mit Flags in die Datei „/var/lib/kubelet/kubeadm-flags.env“[kubelet-start] Schreiben der kubelet-Konfiguration in die Datei „/var/lib/kubelet/config.yaml“[kubelet-start] Aktivieren the kubelet service[certs] Using certificateDir folder „/etc/kubernetes/pki“[certs] Generating „ca“ certificate and key[certs] Generating „apiserver-kubelet-client“ certificate and key. . .. . .. . .[bootstraptoken] konfigurierte RBAC-Regeln, um die Zertifikatsrotation für alle Knoten-Client-Zertifikate im Cluster zuzulassen[bootstraptoken] erstellte die „cluster-info“-ConfigMap im „kube-public“-Namespace[addons] Angewandtes wesentliches Add-on:CoreDNS[addons] Angewendet Essential Add-on:kube-proxyIhr Kubernetes-Master wurde erfolgreich initialisiert!Um Ihren Cluster zu verwenden, müssen Sie Folgendes als normaler Benutzer ausführen: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin .conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config Sie sollten jetzt ein Pod-Netzwerk im Cluster bereitstellen. Führen Sie „kubectl apply -f [podnetwork].yaml“ mit einer der unter https://kubernetes.io/docs/concepts/cluster-administration/addons/You aufgeführten Optionen aus  kubeadm beitreten 192.168.1.10:6443 --token d1dyaj.31zxywbg93s1ywjy --discovery-token-ca-cert-Hash sha256:71a91721595fde66b6382908d801266602a14de8e16bdb7a3cede21509427009  können nun mit dem folgenden auf jeder nodeas Wurzel eine beliebige Anzahl von Maschinen verbinden 

Cluster verwalten

Führen Sie diese Befehle im Terminal aus, um den Cluster als normaler Benutzer zu verwalten und zu bearbeiten.

mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config 

Führen Sie den Befehl kubectl get pods –all-namespaces aus, um den Status des Clusters zu überprüfen.

kubectl get pods --all-namespaces

Ausgabe:

Sie können diese Coredns sehen Pod befindet sich im Wartezustand und der Status sollte sich ändern, sobald Sie das Pod-Netzwerk installieren.

Pod-Netzwerk einrichten

Wir müssen ein Pod-Netzwerk-Add-On auf dem Cluster einrichten, damit Pods miteinander kommunizieren können. Es gibt mehrere Projekte, die Kubernetes-Pod-Netzwerke bereitstellen nämlich Kaliko, Kanal, Flanell usw.

Hier verwenden wir das Wave-Pod-Netzwerk für diese Demo.

export kubever=$(kubectl version | base64 | tr -d '\n')kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"

Ausgabe:

Dienstkonto/weave-net createdclusterrole.rbac.authorization.k8s.io/weave-net createdclusterrolebinding.rbac.authorization.k8s.io/weave-net createdrole.rbac.authorization.k8s.io/weave-net createdrolebinding.rbac .authorization.k8s.io/weave-net erstelltdaemonset.extensions/weave-net erstellt

Überprüfen Sie den Clusterstatus noch einmal. Der coredns-Pod sollte jetzt im Status running sein.

kubectl get pods --all-namespaces

Ausgabe:

Arbeiterknoten mit dem Kuberenete-Cluster verbinden

Wenn Sie sich erinnern, gab es in der Ausgabe des Befehls kubeadm init ein Token zum Verbinden von Knoten. Verwenden Sie das Token und treten Sie allen Ihren Worker-Knoten bei.

kubeadm join 192.168.1.10:6443 --token d1dyaj.31zxywbg93s1ywjy --discovery-token-ca-cert-hash sha256:71a91721595fde66b6382908d801266602a14de8e16bdb7a3cede27094pre> 

Ausgabe:

[preflight] Preflight-Prüfungen werden ausgeführt[discovery] Versucht, eine Verbindung zum API-Server „192.168.1.10:6443“ herzustellen[discovery] Cluster-Info-Discovery-Client erstellt, Informationen von „https://192.168.1.10:6443 „[Erkennung] Fordern von Informationen von „https://192.168.1.10:6443“ erneut an, um TLS anhand des angehefteten öffentlichen Schlüssels zu validieren[Erkennung] Signatur und Inhalte der Clusterinformationen sind gültig und das TLS-Zertifikat wird anhand der angehefteten Wurzeln validiert, wird den API-Server verwenden“ 192.168.1.10:6443"[discovery] Erfolgreich hergestellte Verbindung mit API Server "192.168.1.10:6443"[join] Lese Konfiguration aus dem Cluster...[join] FYI:Sie können sich diese Konfigurationsdatei mit 'kubectl -n kube-system get cm kubeadm-config -oyaml'[kubelet] Herunterladen der Konfiguration für das kubelet aus der ConfigMap "kubelet-config-1.13" im kube-system-Namespace[kubelet-start] Schreiben der kubelet-Konfiguration in die Datei "/var/lib /kubelet/config.yaml"[kubelet-start] Schreiben der kubelet-Umgebungsdatei mit Flags in die Datei "/var/lib/kubelet/kubeadm-fl ags.env"[kubelet-start] Aktivieren des Kubelet-Dienstes[tlsbootstrap] Warten, bis das Kubelet den TLS-Bootstrap ausführt...[patchnode] Hochladen der CRI-Socket-Informationen "/var/run/dockershim.sock" in die Knoten-API Objekt "node1.itzgeek.local" als Anmerkung Dieser Knoten ist dem Cluster beigetreten:* Zertifikatsignierungsanforderung wurde an apiserver gesendet und eine Antwort wurde empfangen.* Das Kubelet wurde über die neuen sicheren Verbindungsdetails informiert. Führen Sie "kubectl get nodes" aus den Master, um zu sehen, wie dieser Knoten dem Cluster beitritt.

Die obige Ausgabe bestätigt, dass der Knoten erfolgreich zum Cluster hinzugefügt wurde.

Überprüfen Sie nun den Status der Worker-Knoten auf dem Master-Knoten mit dem folgenden Befehl.

kubectl erhält Knoten

Ausgabe:

Sie sollten sehen, dass Worker-Knoten bereit sind.

In unserem nächsten Artikel werden wir Pods, Dienste und Replikationscontroller in Kubernetes bereitstellen.

Das ist alles.


Cent OS
  1. So installieren Sie Kubernetes unter Ubuntu 18.04

  2. So installieren Sie Spotify unter Ubuntu und Debian

  3. So installieren Sie Apache Hadoop unter CentOS 7, Ubuntu 18.04 und Debian 9

  4. So installieren Sie Ansible unter CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 und Debian 9

  5. So installieren Sie Python Pip unter CentOS/Debian/Ubuntu

So installieren Sie SpamAssassin unter Ubuntu/Debian

So installieren Sie PrestaShop unter Ubuntu/Debian

So installieren Sie Kubernetes auf CentOS 8

So installieren Sie Mongoku auf Ubuntu 20.04 / Debian 11

Wie installiere ich ODBC unter Ubuntu 20.04 / Debian 11?

So installieren Sie Kubernetes-Cluster auf CentOS 8