W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
FEATURE STATE: Kubernetes v1.23 [beta]
Windows HostProcess 容器讓你能夠在 Windows 主機(jī)上運(yùn)行容器化負(fù)載。 這類(lèi)容器以普通的進(jìn)程形式運(yùn)行,但能夠在具有合適用戶(hù)特權(quán)的情況下, 訪問(wèn)主機(jī)網(wǎng)絡(luò)名字空間、存儲(chǔ)和設(shè)備。HostProcess 容器可用來(lái)在 Windows 節(jié)點(diǎn)上部署網(wǎng)絡(luò)插件、存儲(chǔ)配置、設(shè)備插件、kube-proxy 以及其他組件, 同時(shí)不需要配置專(zhuān)用的代理或者直接安裝主機(jī)服務(wù)。
類(lèi)似于安裝安全補(bǔ)丁、事件日志收集等這類(lèi)管理性質(zhì)的任務(wù)可以在不需要集群操作員登錄到每個(gè) Windows 節(jié)點(diǎn)的前提下執(zhí)行。HostProcess 容器可以以主機(jī)上存在的任何用戶(hù)賬戶(hù)來(lái)運(yùn)行, 也可以以主機(jī)所在域中的用戶(hù)賬戶(hù)運(yùn)行,這樣管理員可以通過(guò)用戶(hù)許可權(quán)限來(lái)限制資源訪問(wèn)。 盡管文件系統(tǒng)和進(jìn)程隔離都不支持,在啟動(dòng)容器時(shí)會(huì)在主機(jī)上創(chuàng)建一個(gè)新的卷, 為其提供一個(gè)干凈的、整合的工作空間。HostProcess 容器也可以基于現(xiàn)有的 Windows 基礎(chǔ)鏡像來(lái)制作,并且不再有 Windows 服務(wù)器容器所帶有的那些 兼容性需求, 這意味著基礎(chǔ)鏡像的版本不必與主機(jī)操作系統(tǒng)的版本匹配。 不過(guò),仍然建議你像使用 Windows 服務(wù)器容器負(fù)載那樣,使用相同的基礎(chǔ)鏡像版本, 這樣你就不會(huì)有一些未使用的鏡像占用節(jié)點(diǎn)上的存儲(chǔ)空間。HostProcess 容器也支持 在容器卷內(nèi)執(zhí)行卷掛載。
本任務(wù)指南是特定于 Kubernetes v1.24 的。
在 Kubernetes v1.24 中,HostProcess 容器功能特性默認(rèn)是啟用的。 kubelet 會(huì)直接與 containerd 通信,通過(guò) CRI 將主機(jī)進(jìn)程標(biāo)志傳遞過(guò)去。 你可以使用 containerd 的最新版本(v1.6+)來(lái)運(yùn)行 HostProcess 容器。
要 禁用 HostProcess 容器特性,你需要為 kubelet 和 kube-apiserver 設(shè)置下面的特性門(mén)控標(biāo)志:
--feature-gates=WindowsHostProcessContainers=false
以下限制是與 Kubernetes v1.24 相關(guān)的:
啟用 Windows HostProcess Pod 需要在 Pod 安全配置中設(shè)置合適的選項(xiàng)。 在 Pod 安全標(biāo)準(zhǔn)中所定義的策略中, HostProcess Pod 默認(rèn)是不被 basline 和 restricted 策略支持的。因此建議 HostProcess 運(yùn)行在與 privileged 模式相看齊的策略下。
當(dāng)運(yùn)行在 privileged 策略下時(shí),下面是要啟用 HostProcess Pod 創(chuàng)建所需要設(shè)置的選項(xiàng):
控制 | 策略 |
---|---|
securityContext.windowsOptions.hostProcess |
Windows Pods 提供運(yùn)行 HostProcess 容器的能力,這類(lèi)容器能夠具有對(duì) Windows 節(jié)點(diǎn)的特權(quán)訪問(wèn)權(quán)限。 可選值
|
hostNetwork |
初始時(shí)將默認(rèn)位于主機(jī)網(wǎng)絡(luò)中。在未來(lái)可能會(huì)希望將網(wǎng)絡(luò)設(shè)置到不同的隔離環(huán)境中。 可選值
|
securityContext.windowsOptions.runAsUsername |
關(guān)于 HostProcess 容器所要使用的用戶(hù)的規(guī)約,需要設(shè)置在 Pod 的規(guī)約中。 可選值
|
runAsNonRoot |
因?yàn)?HostProcess 容器有訪問(wèn)主機(jī)的特權(quán),runAsNonRoot 字段不可以設(shè)置為 true。 可選值
|
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 容器支持在容器卷空間中掛載卷的能力。 在容器內(nèi)運(yùn)行的應(yīng)用能夠通過(guò)相對(duì)或者絕對(duì)路徑直接訪問(wèn)卷掛載。 環(huán)境變量 ?$CONTAINER_SANDBOX_MOUNT_POINT
? 在容器創(chuàng)建時(shí)被設(shè)置為指向容器卷的絕對(duì)主機(jī)路徑。 相對(duì)路徑是基于 ?.spec.containers.volumeMounts.mountPath
? 配置來(lái)推導(dǎo)的。
容器內(nèi)支持通過(guò)下面的路徑結(jié)構(gòu)來(lái)訪問(wèn)服務(wù)賬好令牌:
?.\var\run\secrets\kubernetes.io\serviceaccount\
?
?$CONTAINER_SANDBOX_MOUNT_POINT\var\run\secrets\kubernetes.io\serviceaccount\
?
資源約束(磁盤(pán)、內(nèi)存、CPU 個(gè)數(shù))作用到任務(wù)之上,并在整個(gè)任務(wù)上起作用。 例如,如果內(nèi)存限制設(shè)置為 10MB,任何 HostProcess 任務(wù)對(duì)象所分配的內(nèi)存不會(huì)超過(guò) 10MB。 這一行為與其他 Windows 容器類(lèi)型相同。資源限制的設(shè)置方式與編排系統(tǒng)或容器運(yùn)行時(shí)無(wú)關(guān)。 唯一的區(qū)別是用來(lái)跟蹤資源所進(jìn)行的磁盤(pán)資源用量的計(jì)算,出現(xiàn)差異的原因是因?yàn)?nbsp;HostProcess 容器啟動(dòng)引導(dǎo)的方式造成的。
HostProcess 容器支持以三種被支持的 Windows 服務(wù)賬號(hào)之一來(lái)運(yùn)行:
你應(yīng)該為每個(gè) HostProcess 容器選擇一個(gè)合適的 Windows 服務(wù)賬號(hào),嘗試限制特權(quán)范圍, 避免給主機(jī)代理意外的(甚至是惡意的)傷害。LocalSystem 服務(wù)賬號(hào)的特權(quán)級(jí) 在三者之中最高,只有在絕對(duì)需要的時(shí)候才應(yīng)該使用。只要可能,應(yīng)該使用 LocalService 服務(wù)賬號(hào),因?yàn)樵撡~號(hào)在三者中特權(quán)最低。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: