Sdílet prostřednictvím


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.