W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
一個(gè) ?projected
?卷可以將若干現(xiàn)有的卷源映射到同一個(gè)目錄之上。
目前,以下類型的卷源可以被投射:
所有的卷源都要求處于 Pod 所在的同一個(gè)名字空間內(nèi)。進(jìn)一步的詳細(xì)信息,可參考 一體化卷設(shè)計(jì)文檔。
apiVersion: v1
kind: Pod
metadata:
name: volume-test
spec:
containers:
- name: container-test
image: busybox:1.28
volumeMounts:
- name: all-in-one
mountPath: "/projected-volume"
readOnly: true
volumes:
- name: all-in-one
projected:
sources:
- secret:
name: mysecret
items:
- key: username
path: my-group/my-username
- downwardAPI:
items:
- path: "labels"
fieldRef:
fieldPath: metadata.labels
- path: "cpu_limit"
resourceFieldRef:
containerName: container-test
resource: limits.cpu
- configMap:
name: myconfigmap
items:
- key: config
path: my-group/my-config
apiVersion: v1
kind: Pod
metadata:
name: volume-test
spec:
containers:
- name: container-test
image: busybox:1.28
volumeMounts:
- name: all-in-one
mountPath: "/projected-volume"
readOnly: true
volumes:
- name: all-in-one
projected:
sources:
- secret:
name: mysecret
items:
- key: username
path: my-group/my-username
- secret:
name: mysecret2
items:
- key: password
path: my-group/my-password
mode: 511
每個(gè)被投射的卷源都列舉在規(guī)約中的 ?sources
?下面。參數(shù)幾乎相同,只有兩個(gè)例外:
secretName
?字段被改為 ?name
?以便于 ConfigMap 的命名一致;
defaultMode
?只能在投射層級(jí)設(shè)置,不能在卷源層級(jí)設(shè)置。不過(guò),正如上面所展示的, 你可以顯式地為每個(gè)投射單獨(dú)設(shè)置 ?mode
?屬性。當(dāng) ?TokenRequestProjection
?特性被啟用時(shí),你可以將當(dāng)前 服務(wù)賬號(hào) 的令牌注入到 Pod 中特定路徑下。例如:
apiVersion: v1
kind: Pod
metadata:
name: sa-token-test
spec:
containers:
- name: container-test
image: busybox:1.28
volumeMounts:
- name: token-vol
mountPath: "/service-account"
readOnly: true
serviceAccountName: default
volumes:
- name: token-vol
projected:
sources:
- serviceAccountToken:
audience: api
expirationSeconds: 3600
path: token
示例 Pod 中包含一個(gè)投射卷,其中包含注入的服務(wù)賬號(hào)令牌。 此 Pod 中的容器可以使用該令牌訪問(wèn) Kubernetes API 服務(wù)器, 使用 pod 的 ServiceAccount 進(jìn)行身份驗(yàn)證。?audience
?字段包含令牌所針對(duì)的受眾。 收到令牌的主體必須使用令牌受眾中所指定的某個(gè)標(biāo)識(shí)符來(lái)標(biāo)識(shí)自身,否則應(yīng)該拒絕該令牌。 此字段是可選的,默認(rèn)值為 API 服務(wù)器的標(biāo)識(shí)。
字段 ?expirationSeconds
?是服務(wù)賬號(hào)令牌預(yù)期的生命期長(zhǎng)度。默認(rèn)值為 1 小時(shí), 必須至少為 10 分鐘(600 秒)。管理員也可以通過(guò)設(shè)置 API 服務(wù)器的命令行參數(shù) ?--service-account-max-token-expiration
? 來(lái)為其設(shè)置最大值上限。?path
?字段給出 與投射卷掛載點(diǎn)之間的相對(duì)路徑。
以 ?
subPath
?形式使用投射卷源的容器無(wú)法收到對(duì)應(yīng)卷源的更新。
關(guān)于在投射的服務(wù)賬號(hào)卷中處理文件訪問(wèn)權(quán)限的提案 介紹了如何使得所投射的文件具有合適的屬主訪問(wèn)權(quán)限。
在包含了投射卷并在 ?SecurityContext
?中設(shè)置了 ?RunAsUser
?屬性的 Linux Pod 中,投射文件具有正確的屬主屬性設(shè)置, 其中包含了容器用戶屬主。
在包含了投射卷并在 ?SecurityContext
?中設(shè)置了 ?RunAsUsername
?的 Windows Pod 中, 由于 Windows 中用戶賬號(hào)的管理方式問(wèn)題,文件的屬主無(wú)法正確設(shè)置。 Windows 在名為安全賬號(hào)管理器(Security Account Manager,SAM) 的數(shù)據(jù)庫(kù)中保存本地用戶和組信息。每個(gè)容器會(huì)維護(hù)其自身的 SAM 數(shù)據(jù)庫(kù)實(shí)例, 宿主系統(tǒng)無(wú)法窺視到容器運(yùn)行期間數(shù)據(jù)庫(kù)內(nèi)容。Windows 容器被設(shè)計(jì)用來(lái)運(yùn)行操作系統(tǒng)的用戶態(tài)部分, 與宿主系統(tǒng)之間隔離,因此維護(hù)了一個(gè)虛擬的 SAM 數(shù)據(jù)庫(kù)。 所以,在宿主系統(tǒng)上運(yùn)行的 kubelet 無(wú)法動(dòng)態(tài)為虛擬的容器賬號(hào)配置宿主文件的屬主。 如果需要將宿主機(jī)器上的文件與容器共享,建議將它們放到掛載于 ?C:\
? 之外 的獨(dú)立卷中。
默認(rèn)情況下,所投射的文件會(huì)具有如下例所示的屬主屬性設(shè)置:
PS C:\> Get-Acl C:\var\run\secrets\kubernetes.io\serviceaccount\..2021_08_31_22_22_18.318230061\ca.crt | Format-List
Path : Microsoft.PowerShell.Core\FileSystem::C:\var\run\secrets\kubernetes.io\serviceaccount\..2021_08_31_22_22_18.318230061\ca.crt
Owner : BUILTIN\Administrators
Group : NT AUTHORITY\SYSTEM
Access : NT AUTHORITY\SYSTEM Allow FullControl
BUILTIN\Administrators Allow FullControl
BUILTIN\Users Allow ReadAndExecute, Synchronize
Audit :
Sddl : O:BAG:SYD:AI(A;ID;FA;;;SY)(A;ID;FA;;;BA)(A;ID;0x1200a9;;;BU)
這意味著,所有類似 ?ContainerAdministrator
?的管理員用戶都具有讀、寫和執(zhí)行訪問(wèn)權(quán)限, 而非管理員用戶將具有讀和執(zhí)行訪問(wèn)權(quán)限。
總體而言,為容器授予訪問(wèn)宿主系統(tǒng)的權(quán)限這種做法是不推薦的,因?yàn)檫@樣做可能會(huì)打開潛在的安全性攻擊之門。
在創(chuàng)建 Windows Pod 時(shí),如過(guò)在其 ?SecurityContext
?中設(shè)置了 ?RunAsUser
?, Pod 會(huì)一直阻塞在 ?ContainerCreating
?狀態(tài)。因此,建議不要在 Windows 節(jié)點(diǎn)上使用僅針對(duì) Linux 的 ?RunAsUser
?選項(xiàng)。
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)系方式:
更多建議: