首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取错误mkdir:无法创建目录‘/bitnami/ Rabbitmq’:在创建Rabbitmq的Kubernetes时被拒绝的权限

获取错误mkdir:无法创建目录‘/bitnami/ Rabbitmq’:在创建Rabbitmq的Kubernetes时被拒绝的权限
EN

Stack Overflow用户
提问于 2021-05-02 21:39:29
回答 2查看 2K关注 0票数 1

在学习Kubernetes的同时,我现在还停留在这一点上。

我正在尝试启动Rabbitmq,但是经过大量的故障排除之后,我成功地达到了这一点,但不知道我应该修复哪些地方来消除权限被拒绝的错误。

代码语言:javascript
运行
复制
# kubectl get pods
NAME                        READY   STATUS             RESTARTS   AGE
rabbitmq-56c67d8d7d-s8vp5   0/1     CrashLoopBackOff   5          5m40s

如果我看一下这个连队的日志,我就会发现:

代码语言:javascript
运行
复制
# kubectl logs  rabbitmq-56c67d8d7d-s8vp5
 21:22:58.49 
 21:22:58.50 Welcome to the Bitnami rabbitmq container
 21:22:58.51 Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-rabbitmq
 21:22:58.51 Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-rabbitmq/issues
 21:22:58.52 Send us your feedback at containers@bitnami.com
 21:22:58.52 
 21:22:58.52 INFO  ==> ** Starting RabbitMQ setup **
 21:22:58.54 INFO  ==> Validating settings in RABBITMQ_* env vars..
 21:22:58.56 INFO  ==> Initializing RabbitMQ...
 21:22:58.57 INFO  ==> Generating random cookie
mkdir: cannot create directory ‘/bitnami/rabbitmq’: Permission denied

这是我的rabbitmq-deployment.yml

代码语言:javascript
运行
复制
---
# EXPORT SERVICE INTERFACE
kind: Service
apiVersion: v1
metadata:
    name: message-queue
    labels:
      app: rabbitmq
      role: master
      tier: queue
spec:
  ports:
  - port: 5672
    targetPort: 5672
  selector:
      app: rabbitmq
      role: master
      tier: queue
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rabbitmq-pv-claim
  labels:
    app: rabbitmq
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rabbitmq
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rabbitmq
      role: master
      tier: queue
  template:
    metadata:
      labels:
         app: rabbitmq
         role: master
         tier: queue
    spec:
      nodeSelector:
        boardType: x86vm
      containers:
      - name: rabbitmq
        image: bitnami/rabbitmq:3.7
        envFrom:
        - configMapRef:
            name: bitnami-rabbitmq-config
        ports:
        - name: queue
          containerPort: 5672
        - name: queue-mgmt
          containerPort: 15672
        livenessProbe:
          exec:
            command:
            - rabbitmqctl
            - status
          initialDelaySeconds: 120
          timeoutSeconds: 5
          failureThreshold: 6
        readinessProbe:
          exec:
            command:
            - rabbitmqctl
            - status
          initialDelaySeconds: 10
          timeoutSeconds: 3
          periodSeconds: 5
        volumeMounts:
        - name: rabbitmq-storage
          mountPath: /bitnami
      volumes:
      - name: rabbitmq-storage
        persistentVolumeClaim:
          claimName: rabbitmq-pv-claim

这是rabbitmq-storage-class.yml

代码语言:javascript
运行
复制
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: rabbitmq-storage-class
  labels:
    app: rabbitmq
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

persistant-volume.yml

代码语言:javascript
运行
复制
apiVersion: v1
kind: PersistentVolume
metadata:
  name: rabbitmq-pv-claim
  labels:
    app: rabbitmq
spec:
  storageClassName: manual
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteOnce
  hostPath:
    path: /bitnami

日志:

代码语言:javascript
运行
复制
# kubectl describe pods rabbitmq-5f7f787479-fpg6g
Name:         rabbitmq-5f7f787479-fpg6g
Namespace:    default
Priority:     0
Node:         kube-worker-vm2/192.168.1.36
Start Time:   Mon, 03 May 2021 12:29:17 +0100
Labels:       app=rabbitmq
              pod-template-hash=5f7f787479
              role=master
              tier=queue
Annotations:  cni.projectcalico.org/podIP: 192.168.222.4/32
              cni.projectcalico.org/podIPs: 192.168.222.4/32
Status:       Running
IP:           192.168.222.4
IPs:
  IP:           192.168.222.4
Controlled By:  ReplicaSet/rabbitmq-5f7f787479
Containers:
  rabbitmq:
    Container ID:   docker://bbdbb9c5d4b6737519d3dcf4bdda242a7fe904f2336334afe686e9b204fd6d5c
    Image:          bitnami/rabbitmq:3.7
    Image ID:       docker-pullable://bitnami/rabbitmq@sha256:8b6057997b74ebc81e934dd6c94e9da745635faa2d79b382cfda27b9176e0e6d
    Ports:          5672/TCP, 15672/TCP
    Host Ports:     0/TCP, 0/TCP
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Error
      Exit Code:    1
      Started:      Mon, 03 May 2021 12:30:48 +0100
      Finished:     Mon, 03 May 2021 12:30:48 +0100
    Ready:          False
    Restart Count:  4
    Liveness:       exec [rabbitmqctl status] delay=120s timeout=5s period=10s #success=1 #failure=6
    Readiness:      exec [rabbitmqctl status] delay=10s timeout=3s period=5s #success=1 #failure=3
    Environment Variables from:
      bitnami-rabbitmq-config  ConfigMap  Optional: false
    Environment:               <none>
    Mounts:
      /bitnami from rabbitmq-storage (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-4qmxr (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  rabbitmq-storage:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  rabbitmq-pv-claim
    ReadOnly:   false
  default-token-4qmxr:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-4qmxr
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  boardType=x86vm
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason     Age                   From               Message
  ----     ------     ----                  ----               -------
  Normal   Scheduled  2m20s                 default-scheduler  Successfully assigned default/rabbitmq-5f7f787479-fpg6g to kube-worker-vm2
  Normal   Created    96s (x4 over 2m18s)   kubelet            Created container rabbitmq
  Normal   Started    95s (x4 over 2m17s)   kubelet            Started container rabbitmq
  Warning 

 BackOff    65s (x12 over 2m16s)  kubelet            Back-off restarting failed container
  Normal   Pulled     50s (x5 over 2m18s)   kubelet            Container image "bitnami/rabbitmq:3.7" already present on machine
EN

回答 2

Stack Overflow用户

发布于 2021-05-02 22:53:46

在创建图像时,图像创建者通常选择使用根用户以外的其他用户来运行该进程。这是图像的情况,用户对/bitnami目录没有写权限。您可以通过注释掉卷来验证这一点。

要解决这个问题,您需要为您的吊舱设置一个安全控制:https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod

不确定确切的语法,但类似这样的东西应该能起作用:

代码语言:javascript
运行
复制
spec:
  securityContext:
    fsGroup: 1001 # the userid that is used in the image
  nodeSelector:
    boardType: x86vm
  containers:
  - name: rabbitmq
    image: bitnami/rabbitmq:3.7
    envFrom:
    - configMapRef:
        name: bitnami-rabbitmq-config

这使得图像中的用户可以写目录。

另一件事:部署是针对无状态服务的设计。如果您有状态要保留,请始终使用状态集。从配置的角度来看,它非常类似于部署,但是Kubernetes对它的处理非常不同。有关好的解释,请参见https://www.youtube.com/watch?v=Vrxr-7rjkvM

票数 0
EN

Stack Overflow用户

发布于 2022-07-27 22:09:48

根据bitnami文档,它依赖于kubernetes从文档引用的分布。

在默认情况下,将持久化卷挂载点的权限作为非根文件运行,因此有必要调整持久卷的所有权,以便容器能够将数据写入其中。

默认情况下,图表被配置为使用Kubernetes Security上下文自动更改卷的所有权。但是,这个特性并不适用于所有Kubernetes发行版。作为另一种选择,此图表支持在将卷挂载到最终目的地之前使用initContainer更改卷的所有权。

您可以通过将initContainer volumePermissions.enabled设置为true.来启用此volumePermissions.enabled。

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

https://stackoverflow.com/questions/67361345

复制
相关文章

相似问题

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