Marken
Trainingskategorien
Microsoft-Technik
Microsoft-Endbenutzer
In diesem Modul des Online-CKA-Vorbereitungskurses Broad Skills behandeln wir die im CNCF-CKA-Prüfungscurriculum identifizierten Themen zu Clusterarchitektur, Installation und Konfiguration. Wenn Sie mit dem Curriculum noch nicht vertraut sind, nehmen Sie sich einen Moment Zeit, um sich vertraut zu machen, da Sie jedes der Themen kennen müssen, um den Test zu bestehen.
Rollen, ClusterRoles, RoleBinding und ClusterRoleBindings steuern Benutzerkontoberechtigungen, die steuern, wie sie mit im Cluster bereitgestellten Ressourcen interagieren. ClusterRoles und ClusterRoleBindings sind Ressourcen ohne Namespace. Roles and RoleBindings legt Berechtigungen und Bindungsberechtigungen in einem bestimmten Namespace fest. Kubernetes verwendet rollenbasierte Zugriffssteuerungsmechanismen (RBAC), um die Fähigkeit von Benutzern zu steuern, eine bestimmte Aufgabe an Kubernetes-Objekten auszuführen. Bei Clustern, die mit kubeadm gebootet werden, ist RBAC standardmäßig aktiviert. Berechtigungen für API-Ressourcen werden mithilfe von Roles und ClusterRoles erteilt (der einzige Unterschied besteht darin, dass clusterRoles für den gesamten Cluster gelten, während reguläre Rollen für ihren Namespace gelten). Berechtigungen gelten für API-Ressourcen und -Objekte unter den API-Ressourcen. Verben steuern, welche Operationen von jeder Rolle ausgeführt werden können. Rollen können zwingend mit kubectl create role erstellt werden. Sie können die API-Ressourcen und Verben angeben, die den Berechtigungen zugeordnet sind, die die Rolle gewährt:
$ kubectl create role default-appmanager --resource pod,deploy,svc,ingresses --verb get,list,watch,create -o yaml
apiVersion: rbac.authorization.k8s.io/v1
Art: Rolle
Metadaten:
Name: default-appmanager
Namensraum: Standard
Regeln:
- apiGruppen:
- ""
Ressourcen:
- Schoten
- Dienstleistungen
Verben:
- werden
- aufführen
- sehen
- schaffen
- löschen
- apiGruppen:
- Apps
Ressourcen:
- Bereitstellungen
Verben:
- werden
- aufführen
- sehen
- schaffen
- löschen
$
Rollen und ClusterRoles werden Benutzern und Prozessen mithilfe von RoleBindings und ClusterRoleBindings zugewiesen. RoleBindings verknüpfen einen Benutzer wie ein Dienstkonto mit einer Rolle. Alle von einer Rolle gewährten Berechtigungen werden über die RoleBinding an den Benutzer weitergegeben. Rollenbindungen können auch zwingend mit kubectl create rolebinding erstellt werden. Rolebindings binden Rollen mit dem Flag --user und serviceAccounts mit dem Flag --serviceaccount an Benutzer. Im folgenden Beispiel wird die Rolle default-appmanager an das Standarddienstkonto des Standard-Namespace gebunden:
$ kubectl create rolebinding default-appmanager-rb \
--serviceaccount default:default\
--role default-appmanager
rolebinding.rbac.authorization.k8s.io/default-appmanager-rb erstellt
$
Cluster-Upgrades beinhalten die Aktualisierung der Version der Kubernetes-Steuerungsebenenkomponenten und der Kubelets, die auf jedem Knoten im Cluster ausgeführt werden. Im Allgemeinen bestimmt der API-Server die Version des Kubernetes-Clusters. Das Kubelet ist möglicherweise zwei kleinere Versionen älter als der API-Server. Die anderen Komponenten der Steuerungsebene können bis zu einer Nebenversion älter als der API-Server sein. Der kubectl-Client kann eine Version neuer oder älter als der API-Server sein.
Die Details der Versionsunterstützungsrichtlinie finden Sie auf der Seite Versionsverzerrungsrichtlinie in der Kubernetes-Dokumentation.
Um den Steuerungsebenenknoten zu aktualisieren, müssen wir Folgendes tun:
Im Folgenden finden Sie ein Beispiel für das Upgrade eines Kubernetes-Steuerungsebenenknotens von Kubernetes v1.18.0 auf v.19.0 unter Ubuntu 18.04:
Aktualisieren Sie das apt-Repository:
Aktualisieren Sie das apt-Repository:
$ sudo apt-Update
…
$
Installieren Sie die neuere kubeadm-Version zB v1.19.0:
$ sudo apt install kubeadm=1.19.0-00
…
$
Entleeren Sie den Kontrollplanknoten
$ kubectl drain --ignore-daemonsets
…
$
Führen Sie den kubeadm-Upgradeplan mit sudo aus, um aktualisierte Komponenten der Steuerungsebene zu überprüfen und abzurufen:
$ sudo kubeadm Upgrade-Plan
…
Komponenten, die manuell aktualisiert werden müssen, nachdem Sie die Steuerungsebene mit 'kubeadm upgrade apply' aktualisiert haben:
KOMPONENTENSTROM VERFÜGBAR
Kubelet 1 x v1.18.0 v1.19.1
Upgrade auf die neueste stabile Version:
KOMPONENTENSTROM VERFÜGBAR
Cube-Apiserver v1.18.0 v1.19.1
Cube-Controller-Manager v1.18.0 v1.19.1
be-scheduler v1.18.0 v1.19.1
Kube-Proxy v1.18.0 v1.19.1
CoreDNS 1.6.7 1.7.0
uswd 3.4.3-0 3.4.9-1
Sie können das Upgrade jetzt anwenden, indem Sie den folgenden Befehl ausführen:
kubeadm-Upgrade anwenden v1.19.1
Hinweis: Bevor Sie dieses Upgrade durchführen können, müssen Sie kubeadm auf v1.19.1 aktualisieren.
______________________________________________________________________
Die folgende Tabelle zeigt den aktuellen Status der Komponentenkonfigurationen, wie er von dieser Version von kubeadm verstanden wird.
Konfigurationen, die in der Spalte „MANUELLES UPGRADE ERFORDERLICH“ mit einem „Ja“ markiert sind, erfordern ein manuelles Konfigurations-Upgrade oder
Zurücksetzen auf die kubeadm-Standardeinstellungen, bevor ein erfolgreiches Upgrade durchgeführt werden kann. Die Version zum manuellen
Upgrade auf wird in der Spalte "BEVORZUGTE VERSION" angezeigt.
API-GRUPPE AKTUELLE VERSION BEVORZUGTE VERSION MANUELLES UPGRADE ERFORDERLICH
kubeproxy.config.k8s.io v1alpha1 v1alpha1 nein
kubelet.config.k8s.io v1beta1 v1beta1 nein
______________________________________________________________________
$
Beachten Sie, dass das Kubelet nach dem Upgrade der Steuerungsebene manuell aktualisiert werden muss.
Wir sehen, dass v1.19.1 verfügbar ist, aber lassen Sie uns auf v1.19.0 aktualisieren:
$ sudo kubeadm upgrade anwenden v1.19.0
…
[Upgrade/erfolgreich] ERFOLG! Ihr Cluster wurde auf "v1.19.0" aktualisiert. Genießen!
[upgrade/kubelet] Nachdem Ihre Kontrollebene aktualisiert wurde, fahren Sie bitte mit dem Upgrade Ihrer Kubelets fort, falls Sie dies noch nicht getan haben.
$
Installieren Sie die entsprechenden Versionen von kubelet und kubectl:
$ sudo apt install kubelet = 1.19.0-00 kubectl = 1.19.0-00
…
Kubelet einrichten (1.19.0-00) ...
kubectl (1.19.0-00) einrichten ...
$
Den Kontrollplanknoten aufheben:
$ kubectl uncordon
Knoten / unkordoniert
$
Der Zustand eines Kubernetes-Clusters ist in den etcd-Instanzen enthalten, die den Cluster unterstützen. Beim Sichern eines Kubernetes-Clusters müssen Sie die etcd-Instanz(en) sichern.
Eine Möglichkeit, eine Sicherung durchzuführen, ist die Verwendung des Befehls etcdctl:
$ ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/etc/etcd/ca.crt --cert=/etc/etcd/server.crt --key=/etc/etcd/server.key \
Snapshot speichern /var/lib/etcd/backup.db
$
Dieser Befehl stellt eine Verbindung zu einem etcd-Cluster her und speichert seinen Inhalt in einer Datenbankdatei. Diese Datenbankdatei wird dann verwendet, um den gesamten Cluster auf einem neuen Satz von Knoten wiederherzustellen.
Dieser Befehl stellt eine Verbindung zu einem etcd-Cluster her und speichert seinen Inhalt in einer Datenbankdatei. Diese Datenbankdatei wird dann verwendet, um den gesamten Cluster auf einem neuen Satz von Knoten wiederherzustellen.