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ı.
Azure Kubernetes Service