Windows HostProcess kapsayıcılarını kullanma

HostProcess / Privileged kapsayıcıları, Daha geniş bir Kubernetes kümesi yönetim senaryoları yelpazesini etkinleştirmek için Windows kapsayıcı modelini genişletir. HostProcess kapsayıcıları doğrudan ana bilgisayar üzerinde çalışır ve normal bir işlemine benzer davranış ve erişimi korur. HostProcess kapsayıcıları, kullanıcıların kapsayıcılar tarafından sağlanan sürüm oluşturma ve dağıtım yöntemlerini korurken konak erişimi gerektiren yönetim işlemlerini ve işlevlerini paketleyip dağıtmalarını sağlar.

Ayrıcalıklı bir DaemonSet, Kubernetes'te bir Linux konağında değişiklikleri gerçekleştirebilir veya izleyebilir, ancak Windows konaklarını izleyemez. HostProcess kapsayıcıları, konak yükseltmesinin Windows eşdeğeridir.

Sınırlamalar

  • HostProcess kapsayıcıları Kubernetes 1.23 veya üzerini gerektirir.
  • HostProcess kapsayıcıları, containerd 1.6 veya daha yüksek bir kapsayıcı çalışma zamanı gerektirir.
  • HostProcess podları yalnızca Windows işletim sistemindeki bir sınırlama nedeniyle HostProcess kapsayıcılarını içerebilir. Ayrıcalıklı olmayan Windows kapsayıcıları bir vNIC'yi konak IP ad alanıyla paylaşamaz.
  • HostProcess kapsayıcıları ana bilgisayarda bir süreç olarak çalışır. Bu kapsayıcıların konaktan tek yalıtımı, HostProcess kullanıcı hesabına uygulanan kaynak kısıtlamalarıdır.
  • HostProcess kapsayıcıları için dosya sistemi yalıtımı ve Hyper-V yalıtımı desteklenmez.
  • Birim bağlamaları desteklenir ve kapsayıcı biriminin altına bağlanır. Bkz. Birim Bağlamaları.
  • Host Process kapsayıcıları için varsayılan olarak sınırlı sayıda ana bilgisayar kullanıcı hesabı mevcuttur. Bkz. Kullanıcı Hesabı Seçme.
  • Disk, bellek ve cpu sayısı gibi kaynak sınırları, konak üzerindeki işlemler gibi aynı şekilde çalışır.
  • Adlandırılmış kanal bağlamaları ve Unix etki alanı yuvaları doğrudan desteklenmez, fakat barındırıcı yolu üzerinden erişilebilir, örneğin \\.\pipe\*.

HostProcess iş yükünü çalıştırma

HostProcess özelliklerini dağıtımınızla birlikte kullanmak için hostProcess: true ve hostNetwork: true değerini ayarlayın:

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

Windows düğümleri olan mevcut bir AKS kümesinde HostProcess özelliklerini kullanan örnek bir iş yükünü çalıştırmak için aşağıdaki içeriklerle hostprocess.yaml dosyasını oluşturun:

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

Örnek iş yükünü çalıştırmak için kullanın kubectl :

kubectl apply -f hostprocess.yaml

Aşağıdaki çıkışı görmeniz gerekir:

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

Podun günlüklerini görüntüleyerek iş yükünüzün HostProcess kapsayıcılarının özelliklerini kullandığını doğrulayın.

kubectl adını, kube-system isim alanındaki podda bulmak için kullanın.

$ kubectl get pods --namespace kube-system

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

Podun günlüklerini görüntülemek ve podun yönetici haklarına sahip olduğunu doğrulamak için kullanın kubectl log :

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

Sonraki adımlar

HostProcess kapsayıcıları ve Microsoft'un Kubernetes yukarı akışına katkısı hakkında daha fazla bilgi için bkz: v1.22'de Alfa: Windows HostProcess Kapsayıcıları.