Wie man

Installieren Sie den Kubernetes-Produktionscluster mit Rancher RKE

Installieren Sie den Kubernetes-Produktionscluster mit Rancher RKE

Wie kann ich RKE verwenden, um einen produktionsbereiten Kubernetes-Cluster bereitzustellen??. Kubernetes hat stark an Bedeutung gewonnen und ist jetzt die Standard-Orchestrierungsschicht für containerisierte Workloads. Wenn Sie ein Open-Source-System zur Automatisierung der Bereitstellung von containerisierten Anwendungen suchen, ohne sich um Skalierung und Verwaltung kümmern zu müssen, dann ist Kubernetes das richtige Tool für Sie.

Es gibt viele Standardmethoden für die Bereitstellung eines Kubernetes-Clusters der Produktionsklasse. Dazu gehören die Verwendung von Tools wie kops, kubespray oder der manuelle Aufbau eines Clusters mit kubeadm. Wir haben einige der Leitfäden, die Sie als Referenz verwenden können.

Bereitstellen eines produktionsbereiten Kubernetes-Clusters mit Ansible und Kubespray

Kubernetes-Cluster auf CentOS 7 / CentOS 8 mit Ansible und Calico CNI bereitstellen

Diese Anleitung führt Sie durch die einfachen Schritte zur Installation eines produktionstauglichen Kubernetes-Clusters mit RKE. Wir richten einen 5-Knoten-Cluster mit Rancher Kubernetes Engine (RKE) ein und installieren die Rancher-Karte mit dem Helm-Paketmanager.

Was ist RKE?

Rancher Kubernetes Engine (RKE) ist eine extrem einfache, blitzschnelle Kubernetes-Distribution, die vollständig in Containern ausgeführt wird. Rancher ist eine Container-Management-Plattform, die für Unternehmen entwickelt wurde, die Container in der Produktion bereitstellen. Rancher macht es einfach, Kubernetes überall auszuführen, IT-Anforderungen zu erfüllen und DevOps-Teams zu stärken.

Workstation-Maschine vorbereiten

Auf Ihrer Workstation, auf der die Bereitstellung erfolgt, sind eine Reihe von CLI-Tools erforderlich. Dies kann auch eine virtuelle Maschine sein, die auf Clusterknoten zugreifen kann.

  1. kubectl:
--- Linux --- curl -LO https://storage.googleapis.com/kubernetes-release/release/'curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt'/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl kubectl version --client --- macOS --- curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl" chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl kubectl-Version --client

2. rke

--- Linux --- curl -s https://api.github.com/repos/rancher/rke/releases/latest | grep download_url | grep amd64 | cut -d '"' -f 4 | wget -qi - chmod +x rke_linux-amd64 sudo mv rke_linux-amd64 /usr/local/bin/rke rke --version --- macOS --- curl -s https:/ /api.github.com/repos/rancher/rke/releases/latest | grep download_url | grep darwin-amd64 | cut -d '"' -f 4 | wget -qi - chmod +x rke_darwin-amd64 sudo mv rke_darwin-amd64 /usr/local/bin/rke rke --version 

3. Helm

--- Helm 3 --- curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.Sch ./get_helm.Sch

Kubernetes mit RKE installieren

Ich werde an 5 Knoten arbeiten:

Das sind die Spezifikationen für mein Setup.

Von RKE unterstützte Betriebssysteme

RKE läuft auf fast jedem Linux-Betriebssystem mit installiertem Docker. Rancher wurde getestet und wird unterstützt mit:

Schritt 1: Aktualisieren Sie Ihr Linux-System

Der erste Schritt besteht darin, Ihre Linux-Maschinen zu aktualisieren, die zum Erstellen des Clusters verwendet werden.

--- CentOS --- $ sudo yum -y update $ sudo reboot --- Ubuntu / Debian --- $ sudo apt-get update $ sudo apt-get upgrade $ sudo reboot

Schritt 2: rke-Benutzer erstellen

Wenn Sie Red Hat Enterprise Linux, Oracle Enterprise Linux oder CentOS verwenden, können Sie die Wurzel Benutzer als SSH-Benutzer wegen Bugzilla 1527565. Aus diesem Grund erstellen wir ein Benutzerkonto namens rke für Bereitstellungszwecke.

Ansible Playbook verwenden:

--- - name: rke-Benutzer mit passwortlosen Sudo-Hosts erstellen: rke-hosts remote_user: root-Aufgaben: - Name: RKE-Admin-Benutzer hinzufügen Benutzer: Name: rke-Shell: /bin/bash - Name: Sudo-Datei erstellen Datei: Pfad: /etc/sudoers.d/rke state: touch - name: Rke-Benutzer passwortlos geben sudo lineinfile: path: /etc/sudoers.d/rke state: aktuelle Zeile: 'rke ALL=(ALL:ALL) NOPASSWD: ALL' - name: Autorisierten Schlüssel aus Datei setzen authorisierter_key: user: rke state: vorhandener Schlüssel: " lookup('file', ' ~/.ssh/id_rsa.Kneipe') "

Benutzer manuell auf allen Hosts erstellen

Melden Sie sich bei jedem Ihrer Clusterknoten an und erstellen Sie rke Benutzer.

sudo useradd rke sudo passwd rke

Passwortloses Sudo für den Benutzer aktivieren:

$ sudo vim /etc/sudoers.d/rke rke ALL=(ALL:ALL) NOPASSWD: ALL

Kopieren Sie Ihren öffentlichen SSH-Schlüssel in den des Benutzers ~/.ssh/authorized_keys Datei.

für i in rke-master-01 rke-master-02 rke-master-03 rke-worker-01 rke-worker-02; ssh-copy-id tun [email protected]$i done

Bestätigen Sie, dass Sie sich von Ihrem Arbeitsplatz aus anmelden können:

$ ssh [e-Mail geschützt] Warnung: 'rke-master-01,x . dauerhaft hinzugefügt.x.x.x' (ECDSA) zur Liste der bekannten Hosts. [[email protected] ~]$ sudo su - # Keine Passwortabfrage Letzter Login: Mo 27 Jan 21:28:53 CET 2020 from y.ja.ja.y on pts/0 [[email protected] ~]# Ausfahrt [[email protected] ~]$ Ausfahrt logout Verbindung zu rke-master-01 geschlossen.

Schritt 3: Erforderliche Kernel-Module aktivieren:

Ansible verwenden:

Erstellen Sie ein Playbook mit den folgenden Inhalten und führen Sie es gegen das Inventar Ihres RKE-Servers aus.

--- - Name: Last RKE Kernel-Module Hosts: rke-Hosts remote_user: root Vars: kernel_modules: - br_netfilter - ip6_udp_tunnel - IP_SET - ip_set_hash_ip - ip_set_hash_net - iptable_filter - iptable_nat - iptable_mangle - iptable_raw - nf_conntrack_netlink - nf_conntrack - nf_conntrack_ipv4 - nf_defrag_ipv4 - nf_nat - nf_nat_ipv4 - nf_nat_masquerade_ipv4 - nfnetlink - udp_tunnel - veth - vxlan - x_tables - xt_addrtype - xt_conntrack - xt_comment - xt_mark - xt_multiport - xt_nat - xt_recent - xt_set - xt_statistic - xt_tcpudp-Aufgaben: -: Kernelmodul laden: Name für RKE: " state: present with_items: " kernel_modules " 

Der manuelle Weg

Melden Sie sich bei jedem Host an und aktivieren Sie die zum Ausführen von Kubernetes erforderlichen Kernelmodule modules.

für das Modul in br_netfilter ip6_udp_tunnel IP_SET ip_set_hash_ip ip_set_hash_net iptable_filter iptable_nat iptable_mangle iptable_raw nf_conntrack_netlink nf_conntrack nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat nf_nat_ipv4 nf_nat_masquerade_ipv4 nfnetlink udp_tunnel veth VXLAN x_tables xt_addrtype xt_conntrack xt_comment xt_mark xt_multiport xt_nat xt_recent xt_set xt_statistic xt_tcpudp; TU als ob ! lsmod | grep -q $modul; dann echo "Modul $modul ist nicht vorhanden"; fi;

Schritt 4: Swap deaktivieren und sysctl-Einträge ändern

Die Empfehlung von Kubernetes ist, Swap zu deaktivieren und einige sysctl-Werte hinzuzufügen.

Mit Ansible:

--- - name: Swap deaktivieren und Kernelmodule laden hosts: rke-hosts remote_user: root Aufgaben: - name: SWAP deaktivieren, da Kubernetes nicht mit aktiviertem Swap arbeiten kann (1/2) Shell: | swapoff -a - name: Deaktiviere SWAP in fstab, da Kubernetes mit aktiviertem Swap nicht funktionieren kann (2/2) Ersetzen: Pfad: /etc/fstab regexp: '^([^#].*?\sswap\s+.*)$' Ersetzen: '# \1' - Name: Sysctl-Einträge ändern sysctl: name: ' item.key ' Wert: ' item.value ' sysctl_set: yes state: present reload: yes with_items: - key: net.Brücke.bridge-nf-call-ip6tables, Wert: 1 - Schlüssel: net.Brücke.bridge-nf-call-iptables, Wert: 1 - Schlüssel: net.IPv4.ip_forward, Wert: 1

Manuell

Tauschen:

$ sudo vim /etc/fstab # Kommentar zur Swap-Zeile hinzufügen $ sudo swapoff -a

System:

$ sudo tee -a /etc/sysctl.d/99-kubernetes.conf <

Bestätigen ist deaktiviert:

$ free -h insgesamt verwendeter kostenloser geteilter Buff/Cache verfügbar Mem: 7.6G 180M 6.8G 8.5M 633M 7.2G-Austausch: 0B 0B 0B

Schritt 5: Unterstützte Version von Docker installieren Dock

Jede Kubernetes-Version unterstützt verschiedene Docker-Versionen. Die Kubernetes-Versionshinweise enthalten die aktuelle Liste der validierten Docker-Versionen.

Ab diesem Artikel werden folgende Docker-Versionen unterstützt:

Docker-VersionSkript installieren
19.03locken https://releases.Rancher.com/install-docker/19.03.sch | Sch
18.09curl https://releases.Rancher.com/install-docker/18.09.sch | Sch
18.06locken https://releases.Rancher.com/install-docker/18.06.sch | Sch
17.03locken https://releases.Rancher.com/install-docker/17.03.sch | Sch

Sie können entweder den Docker-Installationsanweisungen folgen oder eines der Installationsskripte von Rancher verwenden, um Docker zu installieren. Ich installiere die neueste unterstützte Version:

curl https://releases.Rancher.com/install-docker/19.03.sch | sudo bash -

Docker-Dienst starten und aktivieren:

sudo systemctl enable --now docker

Bestätigen Sie, dass eine von Kubernetes unterstützte Version von Docker auf Ihrem Computer installiert ist:

$ sudo docker-version --format '.Server.Version' 18.09.2

Hinzufügen rke Benutzer zu Docker-Gruppe.

$ sudo usermod -aG docker rke $ id rke uid=1000(rke) gid=1000(rke) groups=1000(rke),994(docker)

Schritt 6: Ports auf Firewall öffnen on

Überprüfen Sie alle verwendeten Ports auf der Seite mit den Anforderungen

Firewall-TCP-Ports:

für i in 22 80 443 179 5473 6443 8472 2376 8472 2379-2380 9099 10250 10251 10252 10254 30000-32767; do sudo Firewall-cmd --add-port=$i/tcp --permanent done sudo Firewall-cmd --reload

UDP-Ports mit Firewall:

für ich in 8285 8472 4789 30000-32767; do sudo Firewall-cmd --add-port=$i/udp --permanent done

Schritt 6: SSH-TCP-Weiterleitung zulassen

Sie müssen die systemweite TCP-Weiterleitung Ihres SSH-Servers aktivieren.

Öffnen Sie die ssh-Konfigurationsdatei unter /etc/ssh/sshd_config:

$ sudo vi /etc/ssh/sshd_config AllowTcpForwarding ja

Starten Sie den ssh-Dienst neu, nachdem Sie die Änderung vorgenommen haben.

--- CentOS --- $ sudo systemctl restart sshd --- Ubuntu --- $ sudo systemctl restart ssh

Schritt 7: RKE-Cluster-Konfigurationsdatei generieren.

RKE verwendet eine Cluster-Konfigurationsdatei, die als . bezeichnet wird Cluster.yml um zu bestimmen, welche Knoten sich im Cluster befinden und wie Kubernetes bereitgestellt wird.

Es gibt viele Konfigurationsoptionen, die im . eingestellt werden können Cluster.yml. Diese Datei kann aus  Minimalbeispielvorlagen erstellt oder mit dem rke-Konfiguration Befehl.

Lauf rke-Konfiguration Befehl zum Erstellen eines neuen Cluster.yml in Ihrem aktuellen Verzeichnis.

rke config --name Cluster.yml

Dieser Befehl fordert Sie zur Eingabe aller Informationen auf, die zum Erstellen eines Clusters erforderlich sind.

Wenn Sie eine leere Vorlage erstellen möchten Cluster.yml Geben Sie stattdessen die Datei an --leer Flagge.

rke config --empty --name Cluster.yml

So sieht meine Cluster-Konfigurationsdatei aus - Kopieren Sie das Einfügen nicht, sondern verwenden Sie es nur als Referenz um Ihre eigene Konfiguration zu erstellen.

# https://rancher.com/docs/rke/latest/en/config-options/ Knoten: - Adresse: 10.10.1.10 internal_address: hostname_override: rke-master-01 Rolle: [controlplane, etcd] Benutzer: rke - Adresse: 10.10.1.11 internal_address: hostname_override: rke-master-02 Rolle: [controlplane, etcd] Benutzer: rke - Adresse: 10.10.1.12 internal_address: hostname_override: rke-master-03 Rolle: [controlplane, etcd] Benutzer: rke - Adresse: 10.10.1.13 internal_address: hostname_override: rke-worker-01 Rolle: [worker] Benutzer: rke - Adresse: 10.10.1.114 internal_address: hostname_override: rke-worker-02 Rolle: [worker] user: rke # einen lokalen SSH-Agenten verwenden # Private SSH-Schlüssel mit einer Passphrase verwenden - eval 'ssh-agent -s' && ssh-add ssh_agent_auth: true # SSH Schlüssel, der auf alle Hosts in Ihrem Cluster zugreift ssh_key_path: ~/.ssh/id_rsa # Standardmäßig ist der Name Ihres Clusters lokal # Legen Sie einen anderen Clusternamen fest cluster_name: rke # Fehler bei Docker-Version, die von Kubernetes nicht unterstützt wird ignore_docker_version: false # prefix_path: /opt/custom_path # Kubernetes-Version für die Installation festlegen: https ://Rancher.com/docs/rke/latest/en/upgrades/#listing-supported-kubernetes-versions # Überprüfen Sie mit -> rke config --list-version --all kubernetes_version: # Etcd-Snapshots-Dienste: etcd: backup_config: interval_hours: 12 Aufbewahrung : 6 Snapshot: True Creation: 6h Retention: 24h kube-api: # IP-Bereich für alle auf Kubernetes erstellten Dienste # Dieser muss mit dem service_cluster_ip_range in kube-controller übereinstimmen service_cluster_ip_range: 10.43.0.0/16 # Offenlegen eines anderen Portbereichs für NodePort-Dienste service_node_port_range: 30000-32767 pod_security_policy: false kube-controller: # CIDR-Pool zum Zuweisen von IP-Adressen zu Pods im Cluster cluster_cidr: 10.42.0.0/16 # IP-Bereich für alle auf Kubernetes erstellten Dienste # # Dieser muss mit dem service_cluster_ip_range in kube-api service_cluster_ip_range übereinstimmen: 10.43.0.0/16 kubelet: # Basisdomäne für den Cluster cluster_domain: Cluster.local # IP-Adresse für den DNS-Dienst-Endpunkt cluster_dns_server: 10.43.0.10 # Fail if swap is on fail_swap_on: false # Setze max pods auf 150 statt auf Standard 110 extra_args: max-pods: 150 # Konfigurieren von Netzwerk-Plug-Ins # KE bietet die folgenden Netzwerk-Plug-Ins, die als Add-Ons bereitgestellt werden: Flanell, Calico, Weave und Canal # Nach dem Start des Clusters können Sie Ihren Netzanbieter nicht mehr ändern. # Festlegen des Netzwerk-Plug-Ins network: plugin: canal options: canal_flannel_backend_type: vxlan # DNS-Provider angeben (coredns oder kube-dns) dns: provider: coredns # Derzeit wird nur die Authentifizierungsstrategie x509 unterstützt supported. # Sie können optional zusätzliche SANs (Hostnamen oder IPs) erstellen, um sie # dem PKI-Zertifikat des API-Servers hinzuzufügen. # Dies ist nützlich, wenn Sie einen Load Balancer für die # Server der Steuerungsebene verwenden möchten. Authentifizierung: Strategie: x509 sans: - "k8s.Computerforgeeks.com" # Autorisierung des Autorisierungsmechanismus festlegen: # Verwenden Sie 'mode: none', um den Autorisierungsmodus zu deaktivieren: rbac # Derzeit wird nur der Nginx-Ingress-Anbieter unterstützt. # Um den Ingress-Controller zu deaktivieren, setzen Sie 'provider: none' # 'node_selector' steuert die Ingress-Platzierung und ist optional ingress: provider: nginx options: use-forwarded-headers: "true"

In meiner Konfiguration haben die Masterknoten nur etcd und Steuerebene Rollen. Sie können jedoch verwendet werden, um Pods durch Hinzufügen zu planen Arbeiter Rolle.

Rolle: [Steuerungsebene, etcd, Arbeiter]

Schritt 7: Kubernetes-Cluster mit RKE bereitstellen

Sobald Sie die erstellt haben Cluster.yml Datei können Sie Ihren Cluster mit einem einfachen Befehl bereitstellen.

rke auf

Dieser Befehl setzt die Cluster.yml Datei befindet sich im selben Verzeichnis, in dem Sie den Befehl ausführen. Wenn Sie einen anderen Dateinamen verwenden, geben Sie ihn wie unten an.

$ rke up --config ./rancher_cluster.yml

Verwenden eines privaten SSH-Schlüssels mit einer Passphrase - eval ssh-agent -s && ssh-add

Stellen Sie sicher, dass das Setup keine Fehler in seiner Ausgabe anzeigt:

… INFO[0181] [sync] Knoten werden synchronisiert Labels and Taints INFO[0182] [sync] Erfolgreich synchronisierte Knoten Labels and Taints INFO[0182] [network] Einrichten des Netzwerk-Plugins: canal INFO[0182] [addons] Speichern der ConfigMap für Addon rke-network-plugin zu Kubernetes INFO[0183] [addons] ConfigMap für Addon rke-network-plugin zu Kubernetes INFO[0183] [addons] erfolgreich gespeichert ConfigMap gespeichert rke-network-plugin INFO[0189] [addons] Einrichten coredns INFO[0189] [addons] ConfigMap für das Addon rke-coredns-addon in Kubernetes gespeichert INFO[0189] [addons] ConfigMap für das Addon rke-coredns-addon in Kubernetes INFO[0189] [addons] erfolgreich gespeichert Deploy-Job rke- coredns-addon INFO[0195] [addons] CoreDNS erfolgreich bereitgestellt… INFO[0195] [dns] DNS-Provider coredns erfolgreich bereitgestellt INFO[0195] [addons] Metrics Server einrichten INFO[0195] [addons] ConfigMap für Add-On rke- speichern Metriken-addon zu Kubernetes INFO[0196] [addons] ConfigMap für Addon rke-metrics-addon zu Kubernetes INFO erfolgreich gespeichert INFO[0196] [addons] Ausführen des Deploy-Jobs rke-metrics-addon INFO[0202] [addons] Metrics Server erfolgreich bereitgestellt INFO[ 0202] [ingress] nginx-ingress-controller einrichten INFO[0202] [addons] ConfigMap für das Add-on rke-ingress-controller in Kubernetes speichern INFO[0202] [addons] ConfigMap für das Add-on rke-ingress-controller in Kubernetes erfolgreich gespeichert INFO[020220 ] [addons] Ausführen des Deploy-Jobs rke-ingress-controller INFO[0208] [ingress] Ingress Controller nginx erfolgreich bereitgestellt INFO[0208] [addons] Einrichten von Benutzer-Addons INFO[0208] [Addons] keine Benutzer-Addons definiert INFO[0208] Erstellung des Kubernetes-Clusters erfolgreich abgeschlossen

Schritt 8: Auf Ihren Kubernetes-Cluster zugreifen

Als Teil des Kubernetes-Erstellungsprozesses, a kubeconfig Datei wurde erstellt und geschrieben unter kube_config_cluster.yml.

einstellen KUBECONFIG Variable an die generierte Datei.

export KUBECONFIG=./kube_config_cluster.yml

Liste der Knoten im Cluster prüfen.

$ kubectl get node NAME STATUS ROLES ALTER VERSION rke-master-01 Ready controlplane,etcd 16m v1.17.0 rke-master-02 Ready Controlplane, etc. 16m v1.17.0 rke-master-03 Ready Controlplane, etc. 16m v1.17.0 rke-worker-01 Bereit Arbeiter 6m33s v1.17.0 rke-worker-02 Bereit Arbeiter 16m v1.17.0

Sie können diese Datei kopieren nach $HOME/.kube/config wenn Sie keinen anderen Kubernetes-Cluster haben.

Schritt 9: Kubernetes-Dashboard installieren

Wenn Sie es vorziehen, containerisierte Anwendungen auf Kubernetes über ein Dashboard bereitzustellen, verwenden Sie unsere Anleitung unten.

So installieren Sie das Kubernetes-Dashboard mit NodePort

Lernkurse:Zertifizierter Kubernetes Administrator (CKA) mit PraxistestsZertifizierter Kubernetes Administrator (CKA) mit Praxistests$12.06$156.75auf LagerJETZT KAUFENUdemy.comKubernetes Certified Application Developer (CKAD) mit TestsKubernetes Certified Application Developer (CKAD) mit Tests$12.06$156.75auf LagerJETZT KAUFENUdemy.comKubernetes für absolute Anfänger - Hands-onKubernetes für absolute Anfänger - Hands-on$12.06$156.75auf LagerJETZT KAUFENUdemy.com

In unserem nächsten Leitfaden behandeln wir die Installation von Rancher - An Open-Source-Multi-Cluster-Orchestrierungsplattform mit dem Sie Ihr Kubernetes-Unternehmen einfach verwalten und schützen können.

Harvards neuer Akustikdrucker kann Bilder mit jeder Flüssigkeit erstellen
Wir haben seit den Tagen des Daisy-Wheel-Drucks einen langen Weg zurückgelegt. Es gab die Anfänge des Laserdrucks, des Tintenstrahldrucks und neuerdin...
Adware Doctor, als Anti-Malware-Tool getarnte Spyware, im Mac App Store erlaubt
Bei den Dingen, die über Apple und seine App Stores, sowohl macOS als auch iOS, gesagt werden, könnte man leicht glauben, dass sie alles im Griff habe...
Vizio Smart TV So intelligent, dass Sie das Unternehmen verklagen müssen
Wir leben in einer Zeit, in der alle unsere Geräte „smart“ werden, sogar unsere Fernseher. Ein Smart-TV von Vizio, der vor drei Jahren entdeckt wurde,...