W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
FEATURE STATE: Kubernetes v1.18 [stable]
本頁(yè)展示如何為運(yùn)行為在 Windows 節(jié)點(diǎn)上運(yùn)行的 Pod 和容器配置 ?RunAsUserName
?。 大致相當(dāng)于 Linux 上的 ?runAsUser
?,允許在容器中以與默認(rèn)值不同的用戶(hù)名運(yùn)行應(yīng)用。
你必須有一個(gè) Kubernetes 集群,并且 kubectl 必須能和集群通信。 集群應(yīng)該要有 Windows 工作節(jié)點(diǎn),將在其中調(diào)度運(yùn)行 Windows 工作負(fù)載的 pod 和容器。
要指定運(yùn)行 Pod 容器時(shí)所使用的用戶(hù)名,請(qǐng)?jiān)?nbsp;Pod 聲明中包含 ?securityContext
?(PodSecurityContext) 字段, 并在其內(nèi)部包含 ?windowsOptions
?(WindowsSecurityContextOptions) 字段的 ?runAsUserName
?字段。
你為 Pod 指定的 Windows SecurityContext 選項(xiàng)適用于該 Pod 中(包括 init 容器)的所有容器。
這兒有一個(gè)已經(jīng)設(shè)置了 ?runAsUserName
?字段的 Windows Pod 的配置文件:
apiVersion: v1
kind: Pod
metadata:
name: run-as-username-pod-demo
spec:
securityContext:
windowsOptions:
runAsUserName: "ContainerUser"
containers:
- name: run-as-username-demo
image: mcr.microsoft.com/windows/servercore:ltsc2019
command: ["ping", "-t", "localhost"]
nodeSelector:
kubernetes.io/os: windows
創(chuàng)建 Pod:
kubectl apply -f https://k8s.io/examples/windows/run-as-username-pod.yaml
驗(yàn)證 Pod 容器是否在運(yùn)行:
kubectl get pod run-as-username-pod-demo
獲取該容器的 shell:
kubectl exec -it run-as-username-pod-demo -- powershell
檢查運(yùn)行 shell 的用戶(hù)的用戶(hù)名是否正確:
echo $env:USERNAME
輸出結(jié)果應(yīng)該是這樣:
ContainerUser
要指定運(yùn)行容器時(shí)所使用的用戶(hù)名,請(qǐng)?jiān)谌萜髑鍐沃邪?nbsp;?securityContext
?(SecurityContext) 字段,并在其內(nèi)部包含 ?windowsOptions
?(WindowsSecurityContextOptions) 字段的 runAsUserName 字段。
你為容器指定的 Windows SecurityContext 選項(xiàng)僅適用于該容器,并且它會(huì)覆蓋 Pod 級(jí)別設(shè)置。
這里有一個(gè) Pod 的配置文件,其中只有一個(gè)容器,并且在 Pod 級(jí)別和容器級(jí)別都設(shè)置了 ?runAsUserName
?:
apiVersion: v1
kind: Pod
metadata:
name: run-as-username-container-demo
spec:
securityContext:
windowsOptions:
runAsUserName: "ContainerUser"
containers:
- name: run-as-username-demo
image: mcr.microsoft.com/windows/servercore:ltsc2019
command: ["ping", "-t", "localhost"]
securityContext:
windowsOptions:
runAsUserName: "ContainerAdministrator"
nodeSelector:
kubernetes.io/os: windows
創(chuàng)建 Pod:
kubectl apply -f https://k8s.io/examples/windows/run-as-username-container.yaml
驗(yàn)證 Pod 容器是否在運(yùn)行:
kubectl get pod run-as-username-container-demo
獲取該容器的 shell:
kubectl exec -it run-as-username-container-demo -- powershell
檢查運(yùn)行 shell 的用戶(hù)的用戶(hù)名是否正確(應(yīng)該是容器級(jí)別設(shè)置的那個(gè)):
echo $env:USERNAME
輸出結(jié)果應(yīng)該是這樣:
ContainerAdministrator
想要使用此功能,在 ?runAsUserName
?字段中設(shè)置的值必須是有效的用戶(hù)名。 它必須是 ?DOMAIN\USER
? 這種格式,其中 ?DOMAIN\
? 是可選的。 Windows 用戶(hù)名不區(qū)分大小寫(xiě)。此外,關(guān)于 ?DOMAIN
?和 ?USER
?還有一些限制:
runAsUserName
?字段不能為空,并且不能包含控制字符(ASCII 值:?0x00-0x1F
?、?0x7F
?)DOMAIN
?必須是 NetBios 名稱(chēng)或 DNS 名稱(chēng),每種名稱(chēng)都有各自的局限性:.
?(點(diǎn))開(kāi)頭,并且不能包含以下字符:?\ / : * ? " < > |
?.
?(點(diǎn))或 ?-
?(中劃線)開(kāi)頭和結(jié)尾。USER
?最多不超過(guò) 20 個(gè)字符,不能 只 包含點(diǎn)或空格,并且不能包含以下字符:?" / \ [ ] : ; | = , + * ? < > @
??runAsUserName
?字段接受的值的一些示例:?ContainerAdministrator
?、?ContainerUser
?、 ?NT AUTHORITY\NETWORK SERVICE
?、?NT AUTHORITY\LOCAL SERVICE
?。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: