Не удается назначить постоянный том kubernetes приложению uwsgi - PullRequest
0 голосов
/ 31 мая 2019

Пытается назначить постоянный том приложению uWSGI, но я получаю следующую ошибку: bind(): Operation not permitted [core/socket.c line 230].Работает, когда я назначаю непостоянный том «пустой каталог».

Вот файлы yaml постоянного тома, который я пытаюсь назначить:

#volume claim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: api-storage
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: api-storage
  resources:
    requests:
      storage: 100Gi
#storage class
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: api-storage
provisioner: kubernetes.io/azure-file
mountOptions:
  - dir_mode=0777
  - file_mode=0777
  - uid=root
  - gid=root
parameters:
  skuName: Standard_LRS

Манифестприложение выглядит так:


apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: api-app
  template:
    metadata:
      labels:
        app: api-app
    spec:
      containers:
      - name: nginx
        image: nginx
        lifecycle:
          preStop:
            exec:
              command: ["/usr/sbin/nginx","-s","quit"]
        ports:
          - containerPort: 80
            protocol: TCP
        resources:
          limits:
            cpu: 50m
            memory: 100Mi
          requests:
            cpu: 10m
            memory: 50Mi
        volumeMounts:
          - name: storage
            mountPath: /var/run/api
          - name: nginx-conf
            mountPath: /etc/nginx/conf.d
      - name: api-app
        image: azurecr.io/api_api_se:opencv
        workingDir: /app
        command: ["/usr/local/bin/uwsgi"]
        args:
          - "--die-on-term"
          - "--manage-script-name"
          - "--mount=/=api:app_dispatch"
          - "--socket=/var/run/api/uwsgi.sock"
          - "--chmod-socket=777"
          - "--pyargv=se"
          # - "--metrics-dir=/storage"
          # - "--metrics-dir-restore"
        resources:
          requests:
            cpu: 150m
            memory: 1Gi
        volumeMounts:
          - name: storage
            mountPath: /var/run/api
          # - name: storage
          #   mountPath: /storage
      volumes:
        - name: storage  
# work's if following two lines are substituted with "emptyDir: {}"
          persistentVolumeClaim:
            claimName: api-storage
        - name: nginx-conf
          configMap:
            name: api
      tolerations:
      - key: "sku"
        operator: "Equal"
        value: "test"
        effect: "NoSchedule"
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: api-app
  name: api-app
spec:
  ports:
    - port: 80
      protocol: TCP
      targetPort: 80
  selector:
    app: api-app

Конечная цель - собрать метрики из uWSGI, в этот момент метрики удаляются, если модуль удаляется при уменьшении

1 Ответ

0 голосов
/ 27 июня 2019

Чтобы решить эту проблему, мне пришлось сначала создать фактическую папку, в моем случае /storage, в Dockerfile при создании образа приложения, поэтому я добавил RUN mkdir /storage в Dockerfile

...