Как разделить объем каждого контейнера в Kubernetes? - PullRequest
0 голосов
/ 08 ноября 2018

Например, запустите приложение Drupal, используя nginx: stable-alpine + drupal: 8.6-fpm-alpine .

  • Контейнеру nginx необходимо предоставить общий доступ /var/www/html из контейнера drupal для доставки статического содержимого.
  • Контейнер drupal должен сохраняться или монтировать данные сайта /var/www/html/sites из внешнего хранилища с использованием тома, такого как GCP-PD.

в этом случае локально docker-compose.yml находится ниже.

version: "3"

volumes:
  www-data:

services:
  drupal:
    image: "drupal:8.6-fpm-alpine"
    volumes:
      - "www-data:/var/www/html"
      - "./sites:/var/www/html/sites"
    # ...

  nginx;
    image: "nginx:stable-alpine"
    depends_on:
      - drupal
    volumes:
      - "www-data:/var/www/html"
    # ...
# ...

как перевести на k8s deploy.yml?

(РЕДАКТИРОВАТЬ) Я попытался следовать, и это не сработало.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mydrupal
  labels:
    app.kubernetes.io/name: mydrupal
spec:
  replicas: 2
  selector:
    matchLabels:
      app.kubernetes.io/name: mydrupal
  template:
    metadata:
      labels:
        app.kubernetes.io/name: mydrupal
    spec:
      volumes:
        - name: drupal-data
          persistentVolumeClaim:
            claimName: "drupal-pvc"
      # keep default files for the drupal installer, and chown.
      initContainers:
        - name: init-drupal-data
          image: drupal:8.6-fpm-alpine
          imagePullPolicy: IfNotPresent
          command: ['sh', '-c']
          args: ['cp -r -u /var/www/html/sites/* /tmp/drupal; chown -R www-data:www-data /tmp/drupal']
          volumeMounts:
            - name: drupal-data
              mountPath: /tmp/drupal
              subPath: sites
      securityContext:
        # www-data
        fsGroup: 33
      containers:
        - name: drupal
          image: drupal:8.6-fpm-alpine
          imagePullPolicy: IfNotPresent
          volumeMounts:
            # I want to sharing this directory with nginx container.
            - name: drupal-data
              mountPath: /var/www/html
            # I want to persist this directory using external managed storage.
            - name: drupal-data
              mountPath: /var/www/html/sites
              subPath: sites
          resources:
            limits:
              cpu: 800m
              memory: 512Mi
            requests:
              cpu: 200m
              memory: 256Mi
        - name: nginx
          image: nginx:1.14-alpine
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - name: drupal-data
              mountPath: /usr/share/nginx/html
          ports:
            - name: http
              containerPort: 80
              protocol: TCP
          livenessProbe:
            httpGet:
              path: /
              port: http
            initialDelaySeconds: 120
          readinessProbe:
            httpGet:
              path: /
              port: http
            initialDelaySeconds: 30
          resources:
            limits:
              cpu: 500m
              memory: 512Mi
            requests:
              cpu: 100m
              memory: 256Mi

Я прочитал том, pv, pvc docs. но не нашел никаких решений о том, как выставить каталог внутри контейнера как том.

есть идеи?

1 Ответ

0 голосов
/ 09 ноября 2018

Взгляните на hostPath, который позволит вам использовать локальную папку в качестве постоянного хранилища. https://kubernetes.io/docs/concepts/storage/volumes/#hostpath

Существуют некоторые кривые обучения и различия в конфигурации, основанные на том, как ваш кластер kubernetes был настроен для других типов pv / pvc.

...