Použití kontejnerů Windows HostProcess
Kontejnery HostProcess / Privileged rozšiřují model kontejneru Windows, aby umožňovaly širší škálu scénářů správy clusterů Kubernetes. Kontejnery HostProcess běží přímo na hostiteli a zachovávají si podobné chování a přístup jako běžné procesy. Kontejnery HostProcess umožňují uživatelům zabalit a distribuovat operace správy a funkce, které vyžadují přístup hostitele při zachování metod správy verzí a nasazení poskytovaných kontejnery.
Privileged DaemonSet může provádět změny nebo monitorovat hostitele Linuxu v Kubernetes, ale ne na hostitelích s Windows. Kontejnery HostProcess jsou ekvivalentem zvýšení oprávnění hostitele systému Windows.
Omezení
- Kontejnery HostProcess vyžadují Kubernetes 1.23 nebo vyšší.
- Kontejnery HostProcess vyžadují
containerd
modul runtime kontejneru 1.6 nebo vyšší. - Pody HostProcess můžou obsahovat pouze kontejnery HostProcess z důvodu omezení operačního systému Windows. Neprivilegované kontejnery Windows nemůžou sdílet virtuální síťovou kartu s oborem názvů IP hostitele.
- Kontejnery HostProcess běží jako proces na hostiteli. Jedinou izolací, kterou tyto kontejnery mají od hostitele, jsou omezení prostředků uložená na uživatelském účtu HostProcess.
- Izolace systému souborů a izolace Technologie Hyper-V nejsou podporovány pro kontejnery HostProcess.
- Připojení svazků jsou podporována a jsou připojena pod svazek kontejneru. Viz Připojení svazků.
- Pro kontejnery hostitelských procesů je ve výchozím nastavení k dispozici omezená sada uživatelských účtů hostitele. Viz Volba uživatelského účtu.
- Omezení prostředků, jako jsou disk, paměť a počet procesorů, fungují stejně jako procesy na hostiteli.
- Pojmenované přípojné kanály a unixové sokety domény nejsou přímo podporovány, ale lze k nim přistupovat na cestě k hostiteli, například
\\.\pipe\*
.
Spuštění úlohy HostProcess
Pokud chcete s nasazením používat funkce HostProcess, nastavte hostProcess: true a hostNetwork: true: true:
spec:
...
securityContext:
windowsOptions:
hostProcess: true
...
hostNetwork: true
containers:
...
Pokud chcete spustit ukázkovou úlohu, která používá funkce HostProcess v existujícím clusteru AKS s uzly Windows, vytvořte hostprocess.yaml
následující obsah:
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/powershell:lts-nanoserver-1809 # or lts-nanoserver-ltsc2022
command:
- powershell.exe
- -Command
- Start-Sleep -Seconds 2147483
terminationGracePeriodSeconds: 0
Slouží kubectl
ke spuštění ukázkové úlohy:
kubectl apply -f hostprocess.yaml
Měl by se zobrazit následující výstup:
$ kubectl apply -f hostprocess.yaml
daemonset.apps/privileged-daemonset created
Ověřte, že vaše úloha používá funkce kontejnerů HostProcess, a to zobrazením protokolů podu.
Slouží kubectl
k vyhledání názvu podu kube-system
v oboru názvů.
$ kubectl get pods --namespace kube-system
NAME READY STATUS RESTARTS AGE
...
privileged-daemonset-12345 1/1 Running 0 2m13s
Umožňuje kubectl log
zobrazit protokoly podu a ověřit, že pod má práva správce:
$ kubectl logs privileged-daemonset-12345 --namespace kube-system
InvalidOperation: Unable to find type [Security.Principal.WindowsPrincipal].
Process has admin rights:
Další kroky
Další informace o kontejnerech HostProcess a příspěvku Microsoftu k upstreamu Kubernetes najdete v tématu Alfa v 1.22: Kontejnery Windows HostProcess.
Azure Kubernetes Service