Копс - невозможно привязать к классу хранения с помощью ПВХ

Я пытаюсь развернуть сайт WordPress с базой данных MySQL, используя kops. Когда я запускаю эти файлы YAML, PVC находится в состоянии pending и не создает том на ebs. Сначала я подумал, что это из-за зоны доступности в файле YAML хранилища, но я пробовал все возможные комбинации, но безуспешно.

Класс хранения

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2 
  zone: us-east-2a
  iopsPerGB: "10"
reclaimPolicy: Delete
allowVolumeExpansion: false

Заявка на постоянный том

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: wp-pv-claim
  labels:
    app: wordpress
spec:
  storageClassName: standard
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

Развертывание:

apiVersion: apps/v1 
kind: Deployment
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: frontend
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: wordpress
        tier: frontend
    spec:
      containers:
      - image: wordpress:4.8-apache
        name: wordpress
        env:
        - name: WORDPRESS_DB_HOST
          value: wordpress-mysql
        - name: WORDPRESS_DB_PASSWORD
          value: 123a
        ports:
        - containerPort: 80
          name: wordpresss
        volumeMounts:
        - name: wordpress-persistent-storage
          mountPath: /var/www/html
      volumes:
      - name: wordpress-persistent-storage
        persistentVolumeClaim:
          claimName: wp-pv-claim

Услуга:

apiVersion: v1
kind: Service
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  selector:
    app: wordpress
    tier: frontend
  type: NodePort
  ports:
    - nodePort: 30007 
      port: 80
      targetPort: 80

Я создаю кластер с помощью этой команды:

kops create cluster \
--node-count=1 \
--node-size=t2.micro \
--master-size=t2.small \
--zones=us-east-2a \
--name=${KOPS_CLUSTER_NAME}

person Community    schedule 06.10.2020    source источник
comment
Возникла ли такая же проблема, если вы будете использовать мастер большего размера, например --master-size t2.large, при создании кластера?   -  person PjoterS    schedule 06.10.2020
comment
Если я использую us-east-2a в качестве зоны, он отлично работает с mysql pvc, но не с wordpress pvc. Я не пробовал с t2.large. Во-вторых, я использую nodeport как службу в wordpress (просто заявляю, что это тоже может иметь к этому какое-то отношение)   -  person    schedule 06.10.2020
comment
Сервис не должен влиять. Не могли бы вы поделиться своими YAML? Может где-то опечатка или у вашего кластера не хватает ресурсов? Также то, что у вас есть, когда вы используете kubectl describe pvc wp-pv-claim, мне любопытно узнать об этом состоянии ожидания. Что касается быстрой проверки, удалите ли вы mysql pv / pvc и создадите для wordpress? Будут ли созданы пв и пвх?   -  person PjoterS    schedule 06.10.2020
comment
Я поделюсь полным файлом wordpress, насколько я понимаю, что-то не так с файлом хранилища, поскольку когда я удаляю файл хранилища и запускаю его локально, pvc действительно работает. Если для зоны класса хранения установлено значение us-east-2b для wordpress и us-east-2a для mysql, ограничивается объем, но затем модуль wordpress переходит в состояние pending, в то время как модуль mysql исправен   -  person    schedule 06.10.2020
comment
@PjoterS Я добавил файлы yaml службы и развертывания   -  person    schedule 06.10.2020


Ответы (1)


Как я подозревал в своем первом комментарии, у вас недостаточно ресурсов для запуска mysql и wordpress.

Если вы проверите типы экземпляров Amazon, вы увидите, что t2.nano и t2.small имеют довольно низкие ресурсы.

Name    vCPUs   RAM (GiB)   
t2.nano     1   0.5     
t2.small    1   2.0

Также, как вы упомянули в своем последнем комментарии:

mysql привязан к volumn, но затем модуль WordPress переходит в состояние ожидания, пока модуль mysql исправен

Это потому, что у кластера недостаточно ресурсов для запуска модуля.

Если вы будете использовать kubectl describe pod <wordpress-pod-name>, вы получите следующий результат:

Warning FailedScheduling 4s (x4 over 92s) default-scheduler 0/2 nodes are available: 1 Insufficient cpu, 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate.

Кластер с таким количеством ресурсов не сможет запускать wordpress и mysql. Имейте в виду, что также запущены поды по умолчанию kubernetes, чтобы проверить, какой из них, вы можете запустить kubectl get pods -A.

Решение:

  • Создайте новый кластер kops, используя экземпляр t2.large с дополнительными ресурсами
  • Добавьте узел в свой кластер kops. Вы можете проверить этот поток stackoverflow
person PjoterS    schedule 06.10.2020