Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
HostProcess-Container/privilegierte Container erweitern das Windows-Containermodell, um eine größere Bandbreite von Kubernetes-Clusterverwaltungsszenarien zu ermöglichen. HostProcess-Container werden direkt auf dem Host ausgeführt und verwalten das Verhalten und den Zugriff ähnlich wie bei einem regulären Prozess. Mit HostProcess-Containern können Benutzer Verwaltungsvorgänge und -funktionen packen und verteilen, die Hostzugriff erfordern, während die von Containern bereitgestellten Versionsverwaltungs- und Bereitstellungsmethoden beibehalten werden.
Ein privilegierter DaemonSet kann Änderungen durchführen oder einen Linux-Host auf Kubernetes überwachen, aber keine Windows-Hosts. HostProcess-Container sind das Windows-Äquivalent zur Rechteerweiterung bei Hosts.
Einschränkungen
- HostProcess-Container erfordern Kubernetes 1.23 oder höher.
- HostProcess-Container erfordern eine Containerlaufzeit von
containerd1.6 oder höher. - HostProcess-Pods können aufgrund einer Einschränkung des Windows-Betriebssystems nur HostProcess-Container enthalten. Nicht privilegierte Windows-Container können keine vNIC gemeinsam mit dem Host-IP-Namespace verwenden.
- HostProcess-Container werden als Prozess auf dem Host ausgeführt. Die einzige Isolierung, die diese Container vom Host haben, sind die Ressourceneinschränkungen, die dem HostProcess-Benutzerkonto auferlegt werden.
- Dateisystemisolierung und Hyper-V-Isolierung werden für HostProcess-Container nicht unterstützt.
- Volumeeinbindungen werden unterstützt und unter dem Containervolume eingebunden. Siehe „Volumeeinbindungen“.
- Standardmäßig ist eine begrenzte Gruppe von Hostbenutzerkonten für HostProcess-Container verfügbar. Siehe „Auswählen eines Benutzerkontos“.
- Ressourcengrenzwerte wie Datenträger, Arbeitsspeicher und CPU-Anzahl funktionieren auf dieselbe Weise wie Prozesse auf dem Host.
- Benannte Pipebereitstellungen und Unix-Domänensockets werden nicht direkt unterstützt, aber über ihren Hostpfad kann darauf zugegriffen werden, z. B.
\\.\pipe\*.
Ausführen einer HostProcess-Workload
Um HostProcess-Features mit Ihrer Bereitstellung zu verwenden, legen Sie hostProcess: true und hostNetwork: true fest:
spec:
...
securityContext:
windowsOptions:
hostProcess: true
...
hostNetwork: true
containers:
...
Um eine Beispielworkload auszuführen, die HostProcess-Features für einen vorhandenen AKS-Cluster mit Windows-Knoten verwendet, erstellen Sie hostprocess.yaml mit folgenden Inhalten:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: privileged-daemonset
namespace: kube-system
labels:
app: privileged-daemonset
spec:
selector:
matchLabels:
app: privileged-daemonset
template:
metadata:
labels:
app: privileged-daemonset
spec:
nodeSelector:
kubernetes.io/os: windows
securityContext:
windowsOptions:
hostProcess: true
runAsUserName: "NT AUTHORITY\\SYSTEM"
hostNetwork: true
containers:
- name: powershell
image: mcr.microsoft.com/windows/nanoserver:ltsc2019 # or nanoserver:ltsc2022
command:
- powershell.exe
- -Command
- Start-Sleep -Seconds 2147483
terminationGracePeriodSeconds: 0
Verwenden Sie kubectl, um die Beispielworkload auszuführen:
kubectl apply -f hostprocess.yaml
Die folgende Ausgabe wird angezeigt:
$ kubectl apply -f hostprocess.yaml
daemonset.apps/privileged-daemonset created
Überprüfen Sie, ob Ihre Workload die Features von HostProcess-Containern nutzt, indem Sie die Protokolle des Pods anzeigen.
Verwenden Sie kubectl, um den Namen des Pods im kube-system-Namespace zu suchen.
$ kubectl get pods --namespace kube-system
NAME READY STATUS RESTARTS AGE
...
privileged-daemonset-12345 1/1 Running 0 2m13s
Verwenden Sie kubectl log, um die Protokolle des Pods anzuzeigen und zu überprüfen, ob der Pod über Administratorrechte verfügt:
$ kubectl logs privileged-daemonset-12345 --namespace kube-system
InvalidOperation: Unable to find type [Security.Principal.WindowsPrincipal].
Process has admin rights:
Nächste Schritte
Weitere Informationen zu HostProcess-Containern und Microsofts Beitrag zu Kubernetes Upstream finden Sie unter Alpha in v1.22: Windows-HostProcess-Container.