استخدام حاويات Windows HostProcess
تقوم HostProcess / الحاويات المميزة بتوسيع نموذج حاوية Windows لتمكين مجموعة أوسع من سيناريوهات إدارة نظام مجموعة Kubernetes. تعمل حاويات HostProcess مباشرة على المضيف، وتحافظ على السلوك والوصول المشابهين لعملية عادية. حاويات HostProcess تسمح للمستخدمين بحزم وتوزيع عمليات الإدارة والوظائف التي تتطلب وصول المضيف مع الاحتفاظ بأساليب الإصدار والتوزيع التي توفرها الحاويات.
يمكن لـ DaemonSet المميز إجراء تغييرات أو مراقبة مضيف Linux على Kubernetes، ولكن ليس مضيفي Windows. حاويات HostProcess هي مكافئ Windows لرفع المضيف.
القيود
- حاويات HostProcess Kubernetes تتطلب الإصدار 1.23 أو أحدث.
containerd
حاويات HostProcess تتطلب وقت تشغيل حاوية 1.6 أو أعلى.- يمكن أن تحتوي حاويات HostProcess على حاويات HostProcess فقط بسبب وجود قيود على نظام التشغيل Windows. حاويات Windows غير المميزة لا يمكنها مشاركة vNIC باستخدام مساحة اسم IP المضيف.
- حاويات HostProcess تعمل كعملية على المضيف. العزل الوحيد الذي تتمتع به هذه الحاويات من المضيف هو قيود الموارد المفروضة على حساب مستخدم HostProcess.
- عزل نظام الملفات وعزل Hyper-V غير مدعومين لحاويات HostProcess.
- عمليات تحميل وحدة التخزين يتم دعمها وتحميلها ضمن وحدة تخزين الحاوية. راجع تحميلات وحدة التخزين.
- مجموعة محدودة من حسابات المستخدمين المضيفين تتوفر لحاويات عملية المضيف بشكل افتراضي. راجع اختيار حساب مستخدم.
- حدود الموارد، مثل القرص والذاكرة وعدد وحدات المعالجة المركزية، تعمل بنفس طريقة عمل العمليات على المضيف.
- لا يتم دعم عمليات تحميل الأنابيب المسماة ومآخذ توصيل مجال Unix مباشرة، ولكن يمكن الوصول إليها على مسار المضيف الخاص بها، على سبيل المثال
\\.\pipe\*
.
قم بتشغيل حمل العمل HostProcess
لاستخدام ميزات HostProcess مع التوزيع الخاص بك، قم بتعيين hostProcess: true و hostNetwork : true:
spec:
...
securityContext:
windowsOptions:
hostProcess: true
...
hostNetwork: true
containers:
...
لتشغيل مثال حمل العمل الذي يستخدم ميزات HostProcess على نظام مجموعة AKS موجود مع عقد Windows، قم بإنشاء 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
استخدم kubectl
لتشغيل مثال على حمل العمل:
kubectl apply -f hostprocess.yaml
ينبغي أن تشاهد المخرج التالي:
$ kubectl apply -f hostprocess.yaml
daemonset.apps/privileged-daemonset created
تحقق من أن حمل العمل الخاص بك يستخدم ميزات حاويات HostProcess عن طريق عرض سجلات الجراب.
استخدم kubectl
للعثور على اسم الجراب في مساحة الاسم kube-system
.
$ kubectl get pods --namespace kube-system
NAME READY STATUS RESTARTS AGE
...
privileged-daemonset-12345 1/1 Running 0 2m13s
استخدم kubectl log
لعرض سجلات الجراب والتحقق من أن للجراب حقوق المسؤول:
$ kubectl logs privileged-daemonset-12345 --namespace kube-system
InvalidOperation: Unable to find type [Security.Principal.WindowsPrincipal].
Process has admin rights:
الخطوات التالية
لمزيد من المعلومات حول حاويات HostProcess ومساهمة Microsoft في المنبع Kubernetes، راجع Alpha in v1.22: Windows HostProcess Containers.
Azure Kubernetes Service