報錯信息如下:
pods "k8s-logs-cndf5" is forbidden: SecurityContext.RunAsUser is forbidden
解決方法:
需要對准入控制器進行修改,然后重啟apiserver
--enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,NodeRestriction \
SecurityContextDeny 不enable就行
如下圖:
重啟kube-apiserver:
systemctl restart kube-apiserver
補充說明
准入控制器
To see which admission plugins are enabled:
kube-apiserver -h | grep enable-admission-plugins
In 1.13, they are:
NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeClaimResize,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota,Priority。
LimitRanger:此准入控制器將確保所有資源請求不會超過 namespace 的 LimitRange。
SecurityContextDeny:此准入控制器將拒絕任何試圖設置某些升級的SecurityContext字段的pod 。
ServiceAccount:此准入控制器實現serviceAccounts的自動化。
ResourceQuota:此准入控制器將觀察傳入請求並確保它不違反命名空間的ResourceQuota對象中列舉的任何約束。
NodeRestriction:該准入控制器限制了 kubelet 可以修改的Node和Pod對象。
NamespaceExists:此許可控制器檢查除 Namespace 其自身之外的命名空間資源上的所有請求。如果請求引用的命名空間不存在,則拒絕該請求。
NamespaceLifecycle:此准入控制器強制執行正在終止的命令空間中不能創建新對象,並確保Namespace拒絕不存在的請求。此准入控制器還防止缺失三個系統保留的命名空間default、kube-system、kube-public。