Aracılığıyla paylaş


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, Değişiklikleri gerçekleştirebilir veya Kubernetes'te bir Linux konağı izleyebilir ancak Windows konaklarını izleyebilir. 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ı 1.6 veya üzeri kapsayıcı çalışma zamanı gerektirir containerd .
  • 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ı konakta bir işlem 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ı.
  • Konak İşlemi kapsayıcıları için varsayılan olarak sınırlı bir konak kullanıcı hesabı kümesi kullanılabilir. Bkz. Kullanıcı Hesabı Seçme.
  • Disk, bellek ve cpu sayısı gibi kaynak sınırları, konak üzerindeki işlemlerle aynı şekilde çalışır.
  • Adlandırılmış kanal bağlamaları ve Unix etki alanı yuvaları doğrudan desteklenmez, ancak konak yolundan 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üğümleriyle var olan bir AKS kümesinde HostProcess özelliklerini kullanan örnek bir iş yükünü çalıştırmak için aşağıdaki içeriklerle oluşturun hostprocess.yaml :

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

Ö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.

Ad alanında podun kube-system adını bulmak için kullanınkubectl.

$ 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ı.