我在這里看到了很多關于 Helm 和默認命名空間的問題,以至于發布另一個問題很尷尬。我相信我查看了我看到的那些并沒有找到解決我的問題的方法。
Helm 版本是 3.9.3 Kubernetes:OpenShift 4.9
我只需執行以下操作即可創建一個 nginx 圖表:
helm create disco
當我在默認專案/命名空間中部署此應用程式時,它作業正常。但是,當我在非默認作業區中部署它時,它會失敗。
我在非默認作業區中部署的命令:
oc new-project helm-sandbox
helm install disco . --namespace helm-sandbox
CLI 似乎表明部署成功。但是 pod 一直有 CrashLoopBackoff。
pod 日志顯示以下錯誤訊息:
nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
2022/09/08 02:00:19 [emerg] 1#1: mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied)
nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied)
知道為什么這對我失敗了嗎?
uj5u.com熱心網友回復:
默認情況下,每個 Pod 都使用defaultOpenShift 上的服務帳戶,并且服務帳戶附加restrictedSCC。
openshift.io/sa.scc.uid-range此外,Pod 中的 UID 是從定義Pod 的命名空間中的注釋中定義的范圍中隨機選擇的。
因此,randomUID 可能沒有寫入/var/cache/nginx/目錄的權限。
但是,將帶有 anyuid 或非 root SCC 的 UID 更改為 Pod 使用的服務帳戶并不是一個好主意,除非 Pod 需要強大的權限才能作業。
如果你希望快取目錄是一個臨時目錄,掛載emptyDir或者臨時卷比較好解決。
如果要持久化,請將持久卷掛載為/var/cache/nginx.
如果您需要更改 UID,請將 anyuid 或非 root SCC 提供給服務帳戶。但是,將 SCC 賦予預定義的 SCC 并不好。因此,如果您需要使用 以外的 SCC restricted,您應該創建一個服務帳戶并使用它來啟動您的 Pod。
希望這些對解決問題有所幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/507696.html
標籤:nginx Kubernetes 开班 掌舵3
上一篇:Nginx占用整個域而不是子域
