久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Kubernetes Windows Pod

2023-12-25 106

Windows HostProcess容器是一種能夠在Windows主機上運行容器化負載的解決方案。這類容器以普通的進程形式運行,但具有適當(dāng)?shù)挠脩籼貦?quán),可以訪問主機的網(wǎng)絡(luò)命名空間、存儲和設(shè)備。通過使用HostProcess容器,可以在Windows節(jié)點上部署各種網(wǎng)絡(luò)插件、存儲配置、設(shè)備插件、kube-proxy以及其他組件,而無需配置專用代理或直接安裝主機服務(wù)。這樣可以簡化容器的部署和管理,并提供更高的靈活性和可擴展性。

類似于安裝安全補丁、事件日志收集等這類管理性質(zhì)的任務(wù)可以在不需要集群操作員登錄到每個 Windows 節(jié)點的前提下執(zhí)行。HostProcess 容器可以以主機上存在的任何用戶賬號來運行, 也可以以主機所在域中的用戶賬號運行,這樣管理員可以通過用戶許可權(quán)限來限制資源訪問。 盡管文件系統(tǒng)和進程隔離都不支持,在啟動容器時會在主機上創(chuàng)建一個新的卷, 為其提供一個干凈的、整合的工作空間。

HostProcess 容器也可以基于現(xiàn)有的 Windows 基礎(chǔ)鏡像來制作,并且不再有 Windows 服務(wù)器容器所帶有的那些 兼容性需求, 這意味著基礎(chǔ)鏡像的版本不必與主機操作系統(tǒng)的版本匹配。 不過,仍然建議像使用 Windows 服務(wù)器容器負載那樣,使用相同的基礎(chǔ)鏡像版本, 這樣就不會有一些未使用的鏡像占用節(jié)點上的存儲空間。HostProcess 容器也支持 在容器卷內(nèi)執(zhí)行卷掛載。

Windows HostProcess應(yīng)用場景:

  • 當(dāng)準備執(zhí)行需要訪問主機上網(wǎng)絡(luò)名字空間的任務(wù)時,HostProcess 容器能夠訪問主機上的網(wǎng)絡(luò)接口和 IP 地址;
  • 當(dāng)需要訪問主機上的資源,如文件系統(tǒng)、事件日志等等;
  • 需要安裝特定的設(shè)備驅(qū)動或者 Windows 服務(wù)時;
  • 需要對管理任務(wù)和安全策略進行整合時。使用 HostProcess 容器能夠縮小 Windows 節(jié)點上所需要的特權(quán)范圍。

一、準備

Kubernetes v1.29 中,HostProcess 容器功能特性默認是啟用的。 kubelet 會直接與 containerd 通信,通過 CRI 將主機進程標志傳遞過去。 可以使用 containerd 的最新版本(v1.6+)來運行 HostProcess 容器。

二、限制

以下限制是與 Kubernetes v1.29 相關(guān)的:

  • HostProcess 容器需要 containerd 1.6 或更高版本的 容器運行時, 推薦 containerd 1.7;
  • HostProcess Pods 只能包含 HostProcess 容器。這是在 Windows 操作系統(tǒng)上的約束; 非特權(quán)的 Windows 容器不能與主機 IP 名字空間共享虛擬網(wǎng)卡(vNIC);
  • HostProcess 在主機上以一個進程的形式運行,除了通過 HostProcess 用戶賬號所實施的資源約束外,不提供任何形式的隔離。HostProcess 容器不支持文件系統(tǒng)或 Hyper-V 隔離;
  • 卷掛載是被支持的,并且要花在到容器卷下;
  • 默認情況下有一組主機用戶賬號可供 HostProcess 容器使用;
  • 對資源約束(磁盤、內(nèi)存、CPU 個數(shù))的支持與主機上進程相同;
  • 不支持命名管道或者 UNIX 域套接字形式的掛載,需要使用主機上的路徑名來訪問 (例如,\\.\pipe\*)。

三、HostProcess Pod配置需求

啟用 Windows HostProcess Pod 需要在 Pod 安全配置中設(shè)置合適的選項。 在 Pod 安全標準中所定義的策略中, HostProcess Pod 默認是不被 basline 和 restricted 策略支持的。因此建議 HostProcess 運行在與 privileged 模式相看齊的策略下。

當(dāng)運行在 privileged 策略下時,下面是要啟用 HostProcess Pod 創(chuàng)建所需要設(shè)置的選項:

控制 策略
securityContext.windowsOptions.hostProcess Windows Pods 提供運行 HostProcess 容器的能力,這類容器能夠具有對 Windows 節(jié)點的特權(quán)訪問權(quán)限。

可選值

  • true
hostNetwork 可選值

  • TRUE
  • TRUE
securityContext.windowsOptions.runAsUserName 關(guān)于 HostProcess 容器所要使用的用戶的規(guī)約,需要設(shè)置在 Pod 的規(guī)約中。

可選值

  • NT AUTHORITY\SYSTEM
  • NT AUTHORITY\Local service
  • NT AUTHORITY\NetworkService
  • 本地用戶組名稱
runAsNonRoot 因為 HostProcess 容器有訪問主機的特權(quán),runAsNonRoot 字段不可以設(shè)置為 true。

可選值

  • 未定義/Nil
  • FALSE

配置清單示例(片段)

spec:
securityContext:
windowsOptions:
hostProcess: true
runAsUserName: "NT AUTHORITY\\Local service"
hostNetwork: true
containers:
- name: test
image: image1:latest
command:
- ping
- -t
- 127.0.0.1
nodeSelector:
"kubernetes.io/os": windows

四、卷掛載

HostProcess 容器支持在容器卷空間中掛載卷的能力。 卷掛載行為將因節(jié)點所使用的 containerd 運行時版本而異。

1、containerd v1.6

在容器內(nèi)運行的應(yīng)用能夠通過相對或者絕對路徑直接訪問卷掛載。 環(huán)境變量 $CONTAINER_SANDBOX_MOUNT_POINT 在容器創(chuàng)建時被設(shè)置為指向容器卷的絕對主機路徑。 相對路徑是基于 .spec.containers.volumeMounts.mountPath 配置來推導(dǎo)的。

容器內(nèi)支持通過下面的路徑結(jié)構(gòu)來訪問服務(wù)賬號令牌:

.\var\run\secrets\kubernetes.io\serviceaccount\
$CONTAINER_SANDBOX_MOUNT_POINT\var\run\secrets\kubernetes.io\serviceaccount\

2、containerd v1.7(及更高版本)

容器內(nèi)運行的應(yīng)用可以通過 volumeMount 指定的 mountPath 直接訪問卷掛載 (就像 Linux 和非 HostProcess Windows 容器一樣)。

為了向后兼容性,卷也可以通過使用由 containerd v1.6 配置的相同相對路徑進行訪問。

例如,要在容器中訪問服務(wù)帳戶令牌,將使用以下路徑之一:

c:\var\run\secrets\kubernetes.io\serviceaccount
/var/run/secrets/kubernetes.io/serviceaccount/
$CONTAINER_SANDBOX_MOUNT_POINT\var\run\secrets\kubernetes.io\serviceaccount\

五、資源限制

資源限制(磁盤、內(nèi)存、CPU 個數(shù))作用到任務(wù)之上,并在整個任務(wù)上起作用。 例如,如果內(nèi)存限制設(shè)置為 10MB,任何 HostProcess 任務(wù)對象所分配的內(nèi)存不會超過 10MB。 這一行為與其他 Windows 容器類型相同。資源限制的設(shè)置方式與編排系統(tǒng)或容器運行時無關(guān)。 唯一的區(qū)別是用來跟蹤資源所進行的磁盤資源用量的計算,出現(xiàn)差異的原因是因為 HostProcess 容器啟動引導(dǎo)的方式造成的。

六、選擇用戶賬號

1、系統(tǒng)賬號

默認情況下,HostProcess 容器支持以三種被支持的 Windows 服務(wù)賬號之一來運行:

  • LocalSystem
  • LocalService
  • NetworkService

應(yīng)該為每個 HostProcess 容器選擇一個合適的 Windows 服務(wù)賬號,嘗試限制特權(quán)范圍, 避免給主機代理意外的(甚至是惡意的)傷害。LocalSystem 服務(wù)賬號的特權(quán)級 在三者之中最高,只有在絕對需要的時候才應(yīng)該使用。只要可能,應(yīng)該使用 LocalService 服務(wù)賬號,因為該賬號在三者中特權(quán)最低。

2、本地賬號

取決于配置,HostProcess 容器也能夠以本地用戶賬號運行, 從而允許節(jié)點操作員為工作負載提供細粒度的訪問權(quán)限。

要以本地用戶運行 HostProcess 容器,必須首先在節(jié)點上創(chuàng)建一個本地用戶組, 并在部署中在 runAsUserName 字段中指定該本地用戶組的名稱。 在初始化 HostProcess 容器之前,將創(chuàng)建一個新的臨時本地用戶賬號,并加入到指定的用戶組中, 使用這個賬號來運行容器。這樣做有許多好處,包括不再需要管理本地用戶賬號的密碼。 作為服務(wù)賬號運行的初始 HostProcess 容器可用于準備用戶組,以供后續(xù)的 HostProcess 容器使用。

注意:以本地用戶賬號運行 HostProcess 容器需要 containerd v1.7+。

例如:

(1)在節(jié)點上創(chuàng)建本地用戶組(這可以在另一個 HostProcess 容器中完成)。

net localgroup hpc-localgroup /add

(2)為本地用戶組授予訪問所需資源的權(quán)限。這可以通過使用 icacls 這類工具達成。

(3)針對 Pod 或個別容器,將 runAsUserName 設(shè)置為本地用戶組的名稱。

securityContext:
windowsOptions:
hostProcess: true
runAsUserName: hpc-localgroup

(4)調(diào)度 Pod!

七、HostProcess容器基礎(chǔ)鏡像

HostProcess 容器可以基于任何現(xiàn)有的 Windows Container 基礎(chǔ)鏡像進行構(gòu)建。此外,還專為 HostProcess 容器創(chuàng)建了一個新的基礎(chǔ)鏡像!

八、HostProcess容器故障排查

HostProcess 容器因 failed to create user process token: failed to logon user: Access is denied.: unknown 啟動失敗。確保 containerd 以 LocalSystem 或 LocalService 服務(wù)帳戶運行。 用戶賬號(即使是管理員賬號)沒有權(quán)限為任何支持的用戶賬號創(chuàng)建登錄令牌。

  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請注明出處“站長百科”和原文地址。