Implementar la versión mysql usando helm

Implementar la versión mysql usando helm

Hola, soy nuevo en k8s y en el ecosistema helm.

Construí mi propio clúster k8s usando kubespray con EC2 (puedo usar EKS pero para practicar) y el siguiente paso es usar helm.

Estoy intentando implementar un gráfico mysql en mi clúster k8s.

mi entorno

# 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: {}
...

Problema

Hay un error en el pvc. A continuación se muestran los registros relacionados.

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

No tengo idea de por qué PVC no puede usar kubernetes.io/no-provisionerun complemento de mi propia local-storageclase de almacenamiento. ¿Alguien puede ayudar con este tema?

Respuesta1

Este error significa que, dado que no está utilizando el aprovisionador de volumen dinámico (que crearía automáticamente un volumen para usted), debe crear este volumen usted mismo.

Consulte los documentos de k8s para ver ejemplos de cómo hacerlo: https://kubernetes.io/docs/concepts/storage/volumes/#local

Sólo para probar rápidamente y comprobar si este es el problema, puede aplicar el siguiente 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

información relacionada