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.
Volumes sind die primäre Möglichkeit, Speicher für Apps zu konfigurieren, die unter Kubernetes ausgeführt werden. Volumes werden auf Pod-Ebene deklariert und dann auf Container-Ebene gemountet, wie unten gezeigt:
apiVersion: v1
Art: Pod
Metadaten:
Name: cka-volumes
spezifikation:
restartPolicy: OnFailure
Behälter:
- name: cka-volumen
Bild: alpin
Befehl:
- oben
volumeMounts:
- Name: Applogs
mountPath: /logs
Bände:
- Name: Applogs
hostPfad:
Pfad: /tmp/app/logs
Die meisten Volume-Lebensdauern sind an die Pods gebunden, für die sie konfiguriert sind, und laufen normalerweise ab, wenn der Pod entfernt wird. Um Speicher von Pod-Lebenszyklen zu entkoppeln, verfügt Kubernetes über PersistentVolume-Objekte. PersistentVolumes sind Ressourcen innerhalb des Clusters, die Speicher bereitstellen, der außerhalb der Pod-Lebensdauer erhalten bleibt.
$ kubectl bekomme pv
NAME KAPAZITÄT ZUGRIFFSMODI RECLAIM POLICY STATUS ANSPRUCH SPEICHERKLASSE GRUND ALTER
app-log-pv 1Gi RWO,ROX Retain Bound default/app-log-pvc 89m
fivegigpv 5Gi RWO Retain Verfügbar 78m
$
Pods können PersistentVolumes (PVs) direkt verwenden, aber eine andere Möglichkeit, PVs zu verwenden, sind PersistentVolumeClaims (PVCs). PVCs sind abstrakte Speicheranforderungen, die persistente Volumes beanspruchen. Wenn eine PVC eine vorhandene PV findet, die ihre Anforderungen (Zugriffsmodus und Kapazität) erfüllt, dann wird diese PV an die PVC gebunden. PVCs können PVs auch als Vorlagen beschreiben, die PVs dynamisch aus den gewünschten Spezifikationen bereitstellen.
$ kubectl get pvc
NAME STATUS LAUTSTÄRKE KAPAZITÄT ZUGRIFFSMODI SPEICHERKLASSE ALTER
app-log-pvc Gebunden app-log-pv 1Gi RWO,ROX 85m
$
StorageClasses ermöglichen PVCs die dynamische Bereitstellung von PVs. Jedes StorageClass-Objekt verwendet ein Plugin, das für das Back-End eines Speicheranbieters spezifisch ist, um eine neue PV zu erstellen. Das folgende Beispiel zeigt eine grundlegende gp2-StorageClass für AWS:
apiVersion: storage.k8s.io/v1
Art: StorageClass
Metadaten:
Name: mod4-aws-storageclass
Provisionen: kubernetes.io/aws-ebs
Parameter:
Typ: gp2
Ein persistentes Volume ist ein Speicherobjekt, das von der Infrastruktur des Clusters bereitgestellt und vom Kubernetes-Cluster verwaltet wird. Persistente Volumes ermöglichen, dass der Speicher über die Lebensdauer eines einzelnen Pods hinaus verbleibt. Persistente Volumes beschreiben Details einer Speicherimplementierung für den Cluster, einschließlich:
Das folgende Beispiel zeigt ein statisch bereitgestelltes persistentes Volume. Dieses Volume ist an das Dateisystem des Hosts unter /tmp/pvc gebunden und beansprucht 50 Gigabyte Speicherplatz.
apiVersion: v1
Art: PersistentVolume
Metadaten:
Name: fivegigpv
spezifikation:
Kapazität:
Speicher: 5Gi
Zugriffsmodi:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Beibehalten
hostPfad:
Pfad: /tmp/pvc
PersistentVolumes sind als Ressourcen im Cluster vorhanden, die jeder Pod mithilfe eines standardmäßigen Volume-Mounts oder über einen PersistentVolumeClaim beanspruchen kann.
Persistente Volumes verwenden das accesModes-Array, um sicherzustellen, dass das resultierende Volume auf eine Weise gemountet wird, die vom Dateisystem des Ressourcenanbieters unterstützt wird.
Kubernetes unterstützt drei Zugriffsmodi:
Unten sehen Sie ein Beispiel für ein PersistentVolume, das die Zugriffsmodi ReadWriteOnce und ReadOnlyMany ermöglicht
apiVersion: v1
Art: PersistentVolume
Metadaten:
Name: app-pv
spezifikation:
Kapazität:
Lagerung: 50Gi
Zugriffsmodi:
- ReadWriteOnce
- ReadOnlyMany
persistentVolumeReclaimPolicy: Beibehalten
hostPfad:
Pfad: "/app/logs"
Ein PersistentVolumeClaim ist eine Speicheranforderung und eine Abstraktion von persistenten Volumes. PersistentVolumeClaims binden sich an PersistentVolumes aufgrund einer Reihe von Faktoren wie Labelselektoren, Speicherklassenname, Speicherkapazität und Zugriffsmodus. PersistentVolumeClaims binden an vorhandene PersistentVolumes im Cluster, die ihre Anforderungen erfüllen, oder erstellen dynamisch PersistentVolumes unter Verwendung einer vorhandenen StorageClass. Unten ist ein Beispiel für einen PersistentVolumeClaim, der an das oben gezeigte PersistentVolume-Beispiel bindet:
apiVersion: v1
Art: PersistentVolumeClaim
Metadaten:
Name: app-pvc
spezifikation:
Zugriffsmodi:
- ReadWriteOnce
Ressourcen:
Anfragen:
Lagerung: 50Gi
Der PersistentVolumeClaim muss in seinem Manifest ein PersistentVolume mit bis zu 50 Gigabyte Speicher und den ReadWriteOnce-Zugriffsmodus finden.
Das Volume-Array unter einem Pod-Manifest und das volumeMounts-Array in einem Container-Manifest konfigurieren, wie Anwendungen, die unter Kubernetes ausgeführt werden, persistenten Speicher verwenden.
Einträge unter dem Volume-Array in einem Pod-Manifest geben an, welche Speicher-Plugins oder -Objekte ein Pod für seine Container zur Verwendung als Speicher zur Verfügung hat. Bestimmte Volume-Typen, PersistentVolumes, PersistentVolumeClaims, ConfigMaps und Secrets sind alle gültige Einträge unter dem Volume-Array. Jeder Volume-Eintrag erhält einen Namen.
Container unter Pods verwenden das volumeMounts-Array, um alle Volumes bereitzustellen, die vom Pod verfügbar gemacht werden. Der Container referenziert das Volume anhand des auf Pod-Ebene konfigurierten Namens.
Das folgende Beispiel zeigt einen Pod, der so konfiguriert ist, dass er ein Hostverzeichnis verfügbar macht, und das obige PersistentVolumeClaim-Beispiel für die zu verwendenden Container:
apiVersion: v1
Art: Pod
Metadaten:
Name: cka-volumes
spezifikation:
restartPolicy: OnFailure
Behälter:
- Name: cka-volumes
Bild: alpin
Befehl:
- oben
volumeMounts:
- Name: App-Logs
mountPath: /logs
- Name: App-Zertifikate
mountPath: /certs
Bände:
- Name: App-Logs
persistentVolumeClaim:
ClaimName: app-log-pvc
- Name: App-Zertifikate
hostPfad:
Pfad: /etc/ssl/certs
In diesem Beispiel wird ein PersistentVolumeClaim verwendet, um Anwendungsprotokolldaten zu speichern, und stellt außerdem einen hostPath bereit, um Zertifikate seines Hosts zu verwenden.
Erstellen Sie einen Pod, der centos/httpd ausführt und sein Protokollverzeichnis unter /var/log/httpd unter /tmp/httpd/ auf dem Host speichert.