首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不允许使用configMap卷

不允许使用configMap卷
EN

Stack Overflow用户
提问于 2021-10-08 13:21:44
回答 2查看 465关注 0票数 0

我使用的是OKD4,我正在尝试使用ConfigMap将/etc/php.ini挂载到我的荚中。为此,我将在我的项目中创建以下K8S对象。

Configmap (以前创建为部署):

代码语言:javascript
复制
  - apiVersion: v1
    kind: ConfigMap
    data:
      php.ini: |-
        [PHP]

        ;;;;;;;;;;;;;;;;;;;
        ; About php.ini   ;
        ;;;;;;;;;;;;;;;;;;;

    metadata:
      name: php-ini

部署对象:

代码语言:javascript
复制
  - kind: Deployment
    apiVersion: apps/v1
    metadata:
      name: privatebin
      labels:
        app: privatebin
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: privatebin
      template:
        metadata:
          creationTimestamp: null
          labels:
            app: privatebin
            deploymentconfig: privatebin
        spec:
          containers:
            - name: privatebin
              image: <my container registry>/privatebin:${IMAGE_TAG}
              volumeMounts:
              - name: config-volume
                mountPath: php.ini
              livenessProbe:
                exec:
                  command:
                  - /bin/sh
                  - -c
                  - "[ -f /run/nginx.pid ] && ps -C nginx >/dev/null 2>&1 && ps -C php-fpm >/dev/null 2>&1"
                initialDelaySeconds: 10
                periodSeconds: 5
              readinessProbe: 
                httpGet: 
                  scheme: HTTP
                  path: /
                  port: 8080
                  initialDelaySeconds: 10
                  periodSeconds: 5
              ports:
                - containerPort: 8080
                  protocol: TCP
              resources: 
                limits:
                  cpu: "250m" # parameterize in tekton pipeline 
                  memory: "368Mi" # parameterize in tekton pipeline, maybe using template
                requests:
                  cpu: "100m" # parameterize in tekton pipeline, maybe using template
                  memory: "256Mi" # parameterize in tekton pipeline, maybe using template
              securityContext:
                runAsUser: 1000
                fsGroup: 1000
                fsGroupChangePolicy: "OnRootMismatch"
              imagePullPolicy: Always
          restartPolicy: Always
          terminationGracePeriodSeconds: 30
          volumes:
            - name: config-volume
              configMap:
                name: php-ini
      strategy:
        type: RollingUpdate
        rollingUpdate:
          maxUnavailable: 25%
          maxSurge: 25%

由于某些原因,我的吊舱不见了,有以下错误:

  • lastTransitionTime:"2021-10-08T12:53:01Z“lastUpdateTime:"2021-10-08T12:53:01Z”消息:“pods "privatebin-55678c66c5-”无法针对任何安全上下文约束进行验证:[spec.containers.securityContext.runAsUser:无效值: 1000:必须在范围内: 1002460000,1002469999 spec.volumes:无效值:" configMap ":configMap卷是不允许使用的]

ReplicaSet也用类似的错误超时:状态:条件:

  • lastTransitionTime:"2021-10-08T12:53:01Z“消息:”pods "privatebin-55678c66c5-“无法针对任何安全上下文约束进行验证:[spec.containers.securityContext.runAsUser:无效值: 1000:必须在范围内: 1002460000,1002469999 spec.volumes:无效值:" configMap ":configMap卷不允许使用]

为什么我不能挂载ConfigMap?是因为部署中的安全上下文吗?

提前谢谢你,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-09 14:50:50

(该错误与configmap无关,但当您解决了错误时,可能需要稍微调整configmap,以便将文件准确地放到要让它降落的目录中。)

OKD是OpenShift,所以它使用SCC (而不是PSP)。

默认情况下,您可以访问名称空间中的“受限”SCC。在错误中抛出的UID来自名称空间注释(oc get名称空间FOO -o yaml)将显示它们。

修复:

  • 您可以更改您的runAsUser以匹配名称空间注释;或者(更好的)只使用"runAsNonRoot: true“,这会迫使它不能作为根用户运行,并接受该注释范围中的第一个uid。您可能需要更新容器映像以利用组成员关系(而不是uid ),因为文件访问permissions.
  • you允许您的帐户使用“非根”SCC作为任何uid运行,满足了以uid=1000形式运行的期望。我建议您将第一种选择视为更好的选择。
票数 3
EN

Stack Overflow用户

发布于 2021-10-08 13:36:16

您的集群安装了一个拒绝您的规范的pod安全策略。您可以使用kubectl get psp获取psp,然后使用kubectl describe psp <name>检查设置。看看volumesrunAsUser的设置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69496550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档