在k8s中使用Job跑了一个ansible。
但是在具体执行ansible逻辑时报错了,提示:

 KeyError: 'getpwuid(): uid not found: 1000130000

由于以上错误的存在,导致不能继续处理后续的逻辑了。

进入ansible 对应的container里面执行whoami,报错

正常情况下,执行whoami是可以找到该uid对应的用户名的。

[root@1234567890-create-cluster-4lh8g openshift-ansible]# whoami
root

通过查找资料发现这是openshift scc和policy的问题。

为了能以正确的权限在k8s中执行ansible,对应的Job需要相应的权限。

1. 首先创建对应的sa

2. 给该sa添加对应的policy,允许anyuid,并且是priviliged模式

3. 将该sa名称指定到Job的serviceAccount

oc create sa katy -n demo
oc adm policy add-scc-to-user anyuid  -z katy -n demo
oc adm policy add-scc-to-user privileged -z katy -n demo
serviceAccount: katy
serviceAccountName: katy

至此,问题解决。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐