Mit Kubernetes v1.33: Image Volumes jetzt im Beta-Stadium!
Erfahren Sie, was die Beta-Gradierung von Image Volumes in Kubernetes v1.33 für Ihre Container-Strategie bedeutet.
Image Volumes wurden mit der Kubernetes-Version v1.31 als Alpha-Feature eingeführt und sind nun in der Version v1.33 auf Beta-Status hochgestuft worden. Dies ist Teil von KEP-4639.
Es ist wichtig zu beachten, dass das Feature standardmäßig deaktiviert ist, da noch nicht alle Container-Runtimes vollständige Unterstützung bieten. CRI-O unterstützt das ursprüngliche Feature seit Version v1.31 und wird in v1.33 die Unterstützung für Image Volumes als Beta hinzufügen. containerd hat die Unterstützung für das Alpha-Feature integriert, das Teil der Version v2.1.0 sein wird, und arbeitet an der Beta-Unterstützung im Rahmen von PR #11578.
Was ist neu?
Die größte Neuerung bei der Beta-Gradierung der Image Volumes ist die Unterstützung von subPath
und subPathExpr
Mounts für Container über spec.containers[*].volumeMounts.[subPath,subPathExpr]
. Dies ermöglicht es Endbenutzern, ein bestimmtes Unterverzeichnis eines Image Volumes zu montieren, das nach wie vor als schreibgeschützt (noexec
) bereitgestellt wird. Das bedeutet, dass nicht vorhandene Unterverzeichnisse standardmäßig nicht gemountet werden können. Kubernetes wird zudem sicherstellen, dass keine absoluten oder relativen Pfadkomponenten Teil des angegebenen Unterpfades sind. Container-Runtimes sind ebenfalls verpflichtet, diese Anforderungen aus Sicherheitsgründen zu überprüfen. Wenn ein angegebenes Unterverzeichnis in einem Volume nicht existiert, sollten die Runtimes bei der Containererstellung fehlschlagen und dem Benutzer Rückmeldung über bestehende Kubelet-Events geben.
Darüber hinaus sind drei neue Kubelet-Metriken für Image Volumes verfügbar:
kubelet_image_volume_requested_total
: Zeigt die Anzahl der angeforderten Image Volumes an.
kubelet_image_volume_mounted_succeed_total
: Zählt die Anzahl der erfolgreichen Mounts von Image Volumes.
kubelet_image_volume_mounted_errors_total
: Dokumentiert die Anzahl der fehlgeschlagenen Mounts von Image Volumes.
Praktisches Beispiel
Um ein vorhandenes Unterverzeichnis für ein bestimmtes Image Volume zu verwenden, nutzen Sie es einfach als subPath
(oder subPathExpr
) Wert in den volumeMounts
der Container:
apiVersion: v1
kind: Pod
metadata:
name: image-volume
spec:
containers:
- name: shell
command: ["sleep", "infinity"]
image: debian
volumeMounts:
- name: volume
mountPath: /volume
subPath: dir
volumes:
- name: volume
image:
reference: quay.io/crio/artifact:v2
pullPolicy: IfNotPresent
Erstellen Sie nun den Pod in Ihrem Cluster:
kubectl apply -f image-volumes-subpath.yaml
Jetzt können Sie sich mit dem Container verbinden:
kubectl attach -it image-volume bash
Und den Inhalt der Datei aus dem dir
Unterverzeichnis im Volume überprüfen:
Die Ausgabe sollte ähnlich sein:
none
1
Vielen Dank, dass Sie bis zum Ende dieses Blogbeitrags gelesen haben! SIG Node ist stolz darauf, diese Funktion als Teil von Kubernetes v1.33 bereitzustellen.
Als Autor dieses Blogbeitrags möchte ich meinen besonderen Dank an alle beteiligten Personen aussprechen!
Wenn Sie Feedback oder Vorschläge haben, zögern Sie nicht, sich über den Kubernetes Slack (#sig-node) Kanal oder die SIG Node Mailingliste an SIG Node zu wenden.
Weiterführende Links
Quelle: Kubernetes Blog