Bagikan melalui


Menggunakan kontainer Windows HostProcess

Kontainer HostProcess / Privileged memperluas model kontainer Windows untuk mengaktifkan berbagai skenario manajemen kluster Kubernetes. Kontainer HostProcess berjalan langsung di host dan mempertahankan perilaku dan akses yang mirip dengan proses reguler. Kontainer HostProcess memungkinkan pengguna untuk mengemas dan mendistribusikan operasi dan fungsionalitas manajemen yang memerlukan akses host sekaligus mempertahankan metode penerapan versi dan penyebaran yang disediakan oleh kontainer.

DaemonSet hak istimewa dapat melakukan perubahan atau memantau host Linux di Kubernetes tetapi tidak host Windows. Kontainer HostProcess adalah elevasi host setara Windows.

Batasan

  • Kontainer HostProcess memerlukan Kubernetes 1.23 atau yang lebih tinggi.
  • Kontainer HostProcess memerlukan runtime kontainer containerd 1.6 atau lebih tinggi.
  • Pod HostProcess hanya dapat berisi kontainer HostProcess karena batasan pada sistem operasi Windows. Kontainer Windows non-hak istimewa tidak dapat berbagi vNIC dengan namespace layanan IP host.
  • Kontainer HostProcess berjalan sebagai proses di host. Satu-satunya isolasi yang dimiliki kontainer dari host adalah batasan sumber daya yang diberlakukan pada akun pengguna HostProcess.
  • Isolasi Filesystem dan isolasi Hyper-V tidak didukung untuk kontainer HostProcess.
  • Pemasangan volume didukung dan dipasang di bawah volume kontainer. Lihat Pemasangan Volume.
  • Serangkaian akun pengguna host terbatas tersedia untuk kontainer HostProcess secara default. Lihat Memilih Akun Pengguna.
  • Batas sumber daya seperti disk, memori, dan jumlah CPU, bekerja seperti halnya proses di host.
  • Pemasangan pipa bernama dan soket domain Unix tidak didukung secara langsung, tetapi dapat diakses di jalur host mereka, misalnya \\.\pipe\*.

Menjalankan beban kerja HostProcess

Untuk menggunakan fitur HostProcess dengan penyebaran Anda, atur hostProcess: true dan hostNetwork: true: true:

    spec:
      ...
      securityContext:
         windowsOptions:
           hostProcess: true
           ...
      hostNetwork: true
      containers:
      ...

Untuk menjalankan contoh beban kerja yang menggunakan fitur HostProcess pada kluster AKS yang ada dengan simpul Windows, buat hostprocess.yaml dengan konten berikut:

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

Gunakan kubectl untuk menjalankan contoh beban kerja:

kubectl apply -f hostprocess.yaml

Anda akan menemukan output berikut:

$ kubectl apply -f hostprocess.yaml
daemonset.apps/privileged-daemonset created

Verifikasi bahwa beban kerja Anda menggunakan fitur kontainer HostProcess dengan melihat log pod.

Gunakan kubectl untuk menemukan nama pod di namespace layanan kube-system.

$ kubectl get pods --namespace kube-system

NAME                                  READY   STATUS    RESTARTS   AGE
...
privileged-daemonset-12345            1/1     Running   0          2m13s

Gunakan kubectl log untuk melihat log pod dan pastikan pod memiliki hak administrator:

$ kubectl logs privileged-daemonset-12345 --namespace kube-system
InvalidOperation: Unable to find type [Security.Principal.WindowsPrincipal].
Process has admin rights:

Langkah berikutnya

Untuk informasi selengkapnya tentang kontainer HostProcess dan kontribusi Microsoft ke kubernetes upstream, lihat Alpha di v1.22: Windows HostProcess Containers.