為什麼我的 pod 在建立時會因為安全上下文限制 (SCC) 而出現權限被拒絕的錯誤?
虛擬私有雲 經典基礎架構
瞭解在建立或執行 Pod 時,如何解決與安全上下文限制 (SCC) 相關的權限拒絕錯誤。
使用安全環境定義限制 (SCC) 的系統 Pod 或其他 Pod 具有持續重試的作業,但因 permission denied 錯誤而失敗。 例如,您可能登入 image-registry 內部 pod 並嘗試執行 docker push 指令。
將影像推送到內部註冊表時的錯誤訊息範例。
error: build error: Failed to push image: error copying layers and metadata
pod 可能使用 SCC 或屬於使用 SCC 的系統群組,但沒有正確的權限。 您可能已透過執行 oc adm policy add-scc-to-group <scc> system:<group> 指令,將系統群組加入 SCC。
如果 Pod 裝載磁區,則由 SCC 授權的 Pod 許可權可能不再容許 Pod 將資料讀取或寫入磁區。
例如,內部登錄會裝載磁區,以在檔案儲存空間實例中讀取及寫入映像檔資料。 如果內部登錄所屬的 system:authenticated 群組將 SCC 從 restricted 變更為 anyuid,則 Pod 會以不同的 UID 執行。 不同的 UID 可防止內部登錄 Pod 從儲存裝置推送或取回映像檔。
變更 Pod 的 SCC 許可權。
-
說明 Pod,並檢查 註釋 區段中的
openshift.io/scc: <scc>安全環境定義限制。oc describe pod -n <project> <pod>輸出範例
NAME: image-registry-1234567 Namespace: openshift-image-registry Priority: 2000000000 PriorityClassName: system-cluster-critical Node: 10.xxx.xx.xxx/10.xxx.xx.xxx Start Time: Wed, 19 Feb 2020 15:38:53 -0500 Labels: docker-registry=default Annotations: openshift.io/scc: anyuid -
說明安全環境定義限制,並在 存取 區段中檢查使用者和群組。
oc describe scc <scc>輸出範例
NAME: anyuid Priority: <none> Access: Users: <none> Groups: system:authenticated -
如果您不想要使用者或群組具有 SCC 的許可權,請從 SCC 中移除使用者或群組。 如需相關資訊,請檢閱叢集裡設定的預設 Red Hat OpenShift 及 IBM Cloud SCC。
oc adm policy remove-scc-from-group <scc> <(user|group)> -
將使用者或群組新增至具有適當許可權的 SCC。
oc adm policy add-scc-to-group <scc> <(user|group)> -
刪除 Pod,以便使用新的 SCC 許可權重新排程 Pod。
oc delete pod -n <project> <pod>