如何找出我应该将 'scc' 添加到哪个 'user'?

How to find out to which 'user' I should add 'scc'?

我正在尝试 运行 elasticsearch 我的 openshift 项目中的容器。

我遇到错误:

Privileged containers are not allowed capabilities.add: Invalid value: "IPC_LOCK": capability may not be added capabilities.add: Invalid value: "SYS_RESOURCE": capability may not be added

我发现您需要将 privileged scc 添加到用户帐户(或创建自己的专用帐户)。

我尝试按照文档 https://docs.openshift.com/container-platform/3.4/admin_guide/manage_scc.html 进行操作,其中给出了以下命令:

oc create serviceaccount mysvcacct -n myproject
oc adm policy add-scc-to-user privileged system:serviceaccount:myproject:mysvcacct

然而,没有任何线索给出什么是 mysvcacct 以及为什么它被称为 mysvcacct

因为我的项目名为 logging,我尝试了以下方法:

oc create serviceaccount logging -n logging
oc adm policy add-scc-to-user privileged system:serviceaccount:logging:logging 

但它并没有改变任何东西。我不断收到同样的错误。

我在那里缺少什么?我应该使用什么名称而不是 mysvcacct

仅供参考,我介绍 yaml 格式的示例。

  • 您可以使用 oc patch dc/your-deploymentConfigName 命令修改 ServiceAccount 名称,如下所示。
# oc patch dc/elasticsearch --patch '{"spec":{"template":{"spec":{"serviceAccountName": "logging"}}}}'
  • 或使用oc edit dc/your-deploymentConfigName,环顾serviceAccountName
# oc edit dc/elasticsearch
    ...
    spec:
      containers:
      - image: docker-registry.default.svc:5000/test/...
        imagePullPolicy: Always
        name: web
        ports:
        - containerPort: 8080
          protocol: TCP
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      serviceAccount: logging
      serviceAccountName: logging