新聞中心
介紹
一個(gè) ?projected ?卷可以將若干現(xiàn)有的卷源映射到同一個(gè)目錄之上。

創(chuàng)新互聯(lián)公司成立以來(lái)不斷整合自身及行業(yè)資源、不斷突破觀(guān)念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶(hù)需求中心、市場(chǎng)為導(dǎo)向”的快速反應(yīng)體系。對(duì)公司的主營(yíng)項(xiàng)目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計(jì)、行業(yè) / 企業(yè)門(mén)戶(hù)設(shè)計(jì)推廣、行業(yè)門(mén)戶(hù)平臺(tái)運(yùn)營(yíng)、app軟件定制開(kāi)發(fā)、成都做手機(jī)網(wǎng)站、微信網(wǎng)站制作、軟件開(kāi)發(fā)、成都IDC機(jī)房托管等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶(hù)可以直觀(guān)的預(yù)知到從創(chuàng)新互聯(lián)公司可以獲得的服務(wù)效果。
目前,以下類(lèi)型的卷源可以被投射:
- secret
- downwardAPI
- configMap
- serviceAccountToken
所有的卷源都要求處于 Pod 所在的同一個(gè)名字空間內(nèi)。進(jìn)一步的詳細(xì)信息,可參考 一體化卷設(shè)計(jì)文檔。
帶有 Secret、DownwardAPI 和 ConfigMap 的配置示例
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
帶有非默認(rèn)權(quán)限模式設(shè)置的 Secret 的配置示例
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è)例外:
- 對(duì)于 Secret,?
secretName?字段被改為 ?name?以便于 ConfigMap 的命名一致; - ?
defaultMode?只能在投射層級(jí)設(shè)置,不能在卷源層級(jí)設(shè)置。不過(guò),正如上面所展示的, 你可以顯式地為每個(gè)投射單獨(dú)設(shè)置 ?mode?屬性。
serviceAccountToken 投射卷
當(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 中的容器可以使用該令牌訪(fǎng)問(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)卷源的更新。
與 SecurityContext 間的關(guān)系
關(guān)于在投射的服務(wù)賬號(hào)卷中處理文件訪(fǎng)問(wèn)權(quán)限的提案 介紹了如何使得所投射的文件具有合適的屬主訪(fǎng)問(wèn)權(quán)限。
Linux
在包含了投射卷并在 ?SecurityContext ?中設(shè)置了 ?RunAsUser ?屬性的 Linux Pod 中,投射文件具有正確的屬主屬性設(shè)置, 其中包含了容器用戶(hù)屬主。
Windows
在包含了投射卷并在 ?SecurityContext ?中設(shè)置了 ?RunAsUsername ?的 Windows Pod 中, 由于 Windows 中用戶(hù)賬號(hào)的管理方式問(wèn)題,文件的屬主無(wú)法正確設(shè)置。 Windows 在名為安全賬號(hào)管理器(Security Account Manager,SAM) 的數(shù)據(jù)庫(kù)中保存本地用戶(hù)和組信息。每個(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)的用戶(hù)態(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)這意味著,所有類(lèi)似 ?ContainerAdministrator ?的管理員用戶(hù)都具有讀、寫(xiě)和執(zhí)行訪(fǎng)問(wèn)權(quán)限, 而非管理員用戶(hù)將具有讀和執(zhí)行訪(fǎng)問(wèn)權(quán)限。
總體而言,為容器授予訪(fǎng)問(wèn)宿主系統(tǒng)的權(quán)限這種做法是不推薦的,因?yàn)檫@樣做可能會(huì)打開(kāi)潛在的安全性攻擊之門(mén)。
在創(chuàng)建 Windows Pod 時(shí),如過(guò)在其 ?
SecurityContext?中設(shè)置了 ?
RunAsUser?, Pod 會(huì)一直阻塞在 ?
ContainerCreating?狀態(tài)。因此,建議不要在 Windows 節(jié)點(diǎn)上使用僅針對(duì) Linux 的 ?
RunAsUser?選項(xiàng)。
分享名稱(chēng):創(chuàng)新互聯(lián)kubernetes教程:Kubernetes投射卷
本文網(wǎng)址:http://m.5511xx.com/article/djphidj.html


咨詢(xún)
建站咨詢(xún)
