在openshift 4.4.17集群中有无法解释的行为:oauth openshift部署(在openshiftauthentication命名空间中(有replicas=2,第一个pod正在运行:
openshift.io/scc: anyuid
第二个pod进入CrashLoopBackOff状态,分配给它的scc如下:
openshift.io/scc: nginx-ingress-scc (that is a customized scc for nginx purposes)
按文件:
默认情况下,openshift身份验证和openshift验证操作符命名空间中的pod使用anyuid SCC运行。
我想集群中发生了一些变化,但我不知道错误在哪里。
Oauth penshift部署处于默认配置:
serviceAccountName: oauth-openshift
namespace: openshift-authentication
$ oc get scc anyuid -o yaml
users:
system:serviceaccount:default:oauth-openshift
system:serviceaccount:openshift-authentication:oauth-openshift
system:serviceaccount:openshift-authentication:default
$ oc get pod -n openshift-authentication
NAME READY STATUS RESTARTS AGE
oauth-openshift-59f498986d-lmxdv 0/1 CrashLoopBackOff 158 13h
oauth-openshift-d4968bd74-ll7mn 1/1 Running 0 23d
$ oc logs oauth-openshift-59f498986d-lmxdv -n openshift-authentication
Copying system trust bundle
cp: cannot remove '/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem': Permission denied
$ oc get pod oauth-openshift-59f498986d-lmxdv -n openshift-authentication -o=yaml|grep serviceAccount
serviceAccount: oauth-openshift
serviceAccountName: oauth-openshift
$ oc get pod oauth-openshift-59f498986d-lmxdv -n openshift-authentication -o=yaml|grep scc
openshift.io/scc: nginx-ingress-scc
授权操作员:
$ oc get pod -n openshift-authentication-operator
NAME READY STATUS RESTARTS AGE
authentication-operator-5498b9ddcb-rs9v8 1/1 Running 0 33d
$ oc get pod authentication-operator-5498b9ddcb-rs9v8 -n openshift-authentication-operator -o=yaml|grep scc
openshift.io/scc: anyuid
The managementState is set to Managed
首先,您应该检查您的SCC优先级是否是自定义的。例如,anyuid
scc优先级为10,默认情况下为最高优先级。但是,如果其他SCC(在这种情况下,nginx-ingress-scc
(配置的优先级超过10,则该SCC被oauth pod意外地选择。它可能会导致此问题。
问题是自定义scc(nginx ingress scc(的优先级高于10,即anyuid的优先级。现在解决了。