Развертывание релиза MySQL с помощью Helm

Развертывание релиза MySQL с помощью Helm

Привет, я новичок в экосистеме K8S и Helm.

Я построил свой собственный кластер k8s, используя kubespray с EC2 (я могу использовать EKS, но в целях практики), и следующим шагом будет использование Helm.

Я пытаюсь развернуть диаграмму MySQL в своем кластере K8s.

Мое окружение

# storage class manifest
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
#volumeBindingMode: WaitForFirstConsumer
# values.yaml from mysql chart
## Persist data to a persistent volume
persistence:
  enabled: true
  ## database data Persistent Volume Storage Class
  ## If defined, storageClassName: <storageClass>
  ## If set to "-", storageClassName: "", which disables dynamic provisioning
  ## If undefined (the default) or set to null, no storageClassName spec is
  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
  ##   GKE, AWS & OpenStack)
  ##
  storageClass: "local-storage"  # <-- Changed this to use my own storage class
  accessMode: ReadWriteOnce
  size: 1Gi                      # <-- Changed this since only 2.5GB is available on each node
  annotations: {}
...

Проблема

Ошибка на pvc. Ниже приведены соответствующие журналы.

ubuntu@nodec1:~/charts/stable/mysql$ kubectl describe pvc/mysqlserver
Name:          mysqlserver
Namespace:     default
StorageClass:  local-storage
Status:        Pending
Volume:
Labels:        app=mysqlserver
               app.kubernetes.io/managed-by=Helm
               chart=mysql-1.6.9
               heritage=Helm
               release=mysqlserver
Annotations:   meta.helm.sh/release-name: mysqlserver
               meta.helm.sh/release-namespace: default
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode:    Filesystem
Mounted By:    mysqlserver-5d5cfcd5f8-922k4
Events:
  Type     Reason              Age               From                         Message
  ----     ------              ----              ----                         -------
  Warning  ProvisioningFailed  6s (x3 over 21s)  persistentvolume-controller  no volume plugin matched name: kubernetes.io/no-provisioner

Я понятия не имею, почему pvc не может использовать kubernetes.io/no-provisionerплагин из моего собственного local-storagestorageclass. Может ли кто-нибудь помочь с этой проблемой?

решение1

Эта ошибка означает, что поскольку вы не используете средство динамического создания томов (которое автоматически создаст том для вас), вам необходимо создать этот том самостоятельно.

Примеры того, как это сделать, можно найти в документации k8s: https://kubernetes.io/docs/concepts/storage/volumes/#local

Чтобы быстро протестировать и проверить, является ли это проблемой, вы можете применить следующий yaml-файл:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: example-pv
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  local:
    path: /mnt/asd
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: Exist

Связанный контент