montaje en disco azul azure Kubernetes para PostgreSQL pod

Quiero montar un disco azul azure Kubernetes para la cápsula PostgreSQL. Mis archivos yml

postgres-storage.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: postgres-pv
spec:
  capacity:
    storage: 80Gi
  storageClassName: manual
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  azureDisk:
    kind: Managed
    diskName: es-us-dev-core-test
    diskURI: /subscriptions/id/resourceGroups/kubernetes_resources_group/providers/Microsoft.Compute/disks/dev-test
    

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 80Gi

postgres-configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: postgres-config
  labels:
    app: postgres
data:
  POSTGRES_DB: dev-test
  POSTGRES_USER: admintpost
  POSTGRES_PASSWORD: ada3dassasa

StatefulSet.yml


apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: postgres-statefulset
  labels:
    app: postgres
spec:
  serviceName: "postgres"
  replicas: 1
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
      - name: postgres
        image: postgres:12
        envFrom:
        - configMapRef:
            name: postgres-config
        ports:
        - containerPort: 5432
          name: postgresdb
        volumeMounts:
        - name: pv-data
          mountPath: /var/lib/postgresql/data
      volumes:
      - name: pv-data
        persistentVolumeClaim:
          claimName: postgres-pv-claim

Instrucciones para crear disco https://learn.microsoft.com/en-us/azure/aks/azure-disk-volume

Tengo un error de que no puede conectarse al disco, ¿podría por favor decirme cómo añadir Azure Disk a la cápsula. Gracias.

Pregunta hecha hace 3 años, 5 meses, 1 días - Por nasean


3 Respuestas:

  • Crear Azure Disk en el grupo de recursos correcto

    Mirando el archivo postgres-storage.yaml:

    dentro spec.azureDisk.diskURI Veo que has creado el disco en el grupo de recursos kubernetes_resources_group. Sin embargo, debe crear el disco dentro de un grupo de recursos cuyo nombre es algo así: MC_kubernetes_resources_group__

    Asegúrese de crear el disco en la misma zona de disponibilidad que su cluster.

    Establecer modo de caché a Ninguno

    En el archivo postgres-storage.yaml:

    set spec.azureDisk.cachingMode a None

    Arreglar la definición de StatefulSet.yml

    Si usa Azure Disks en el archivo StatefulSet.yml:

    dentro spec.template.spec debe reemplazar lo siguiente:

    volumeMounts:
      - name: pv-data
        mountPath: /var/lib/postgresql/data
    

    con esto:

    volumeMounts:
      - name: pv-data
        mountPath: /var/lib/postgresql/data
        subPath: pgdata
    

    EDIT: arregló algunos errores en la última parte.

    Respondida el Dec 17, 2020 a las 20:22 - por devguru123

    Votos positivos: 0 | Votos negativos: 0

  • Para montar un disco de Azure Disk en tu cápsula PostgreSQL en Kubernetes, necesitas realizar algunos ajustes en tus archivos YAML. A continuación, te proporciono las modificaciones necesarias:

    • postgres-storage.yaml:
    yaml
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: postgres-pv
    spec:
      capacity:
        storage: 80Gi
      storageClassName: default
      volumeMode: Filesystem
      accessModes:
           
    • ReadWriteOnce
    azureDisk: kind: Managed diskName: es-us-dev-core-test diskURI: /subscriptions/id/resourceGroups/kubernetes_resources_group/providers/Microsoft.Compute/disks/dev-test fsType: ext4
    • StatefulSet.yml:
    yaml
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: postgres-statefulset
      labels:
        app: postgres
    spec:
      serviceName: "postgres"
      replicas: 1
      selector:
        matchLabels:
          app: postgres
      template:
        metadata:
          labels:
            app: postgres
        spec:
          containers:
             
    • name: postgres
    image: postgres:12 envFrom:
    • configMapRef:
    name: postgres-config ports:
    • containerPort: 5432
    name: postgresdb volumeMounts:
    • name: pv-data
    mountPath: /var/lib/postgresql/data volumes:
    • name: pv-data
    persistentVolumeClaim: claimName: postgres-pv-claim

    Asegúrate de haber creado el recurso del disco de Azure en tu suscripción y de haber configurado adecuadamente los permisos y accesos necesarios. Una vez realizadas estas modificaciones, deberías poder montar el disco Azure en la cápsula PostgreSQL en Kubernetes sin problemas.

    ¡Espero que esta información te sea útil! Si tienes alguna otra pregunta o necesitas más ayuda, no dudes en decírmelo.

    Respondida el Dec 18, 2020 a las 20:17 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El error que estás experimentando al montar el disco Azure en el pod de PostgreSQL probablemente se deba a que el disco no está correctamente aprovisionado o conectado al clúster de Kubernetes. Aquí tienes algunos pasos para solucionar el problema:

    1. Verifica que el disco Azure existe y está disponible:

    Accede a Azure Portal e inicia sesión en tu suscripción. Navega hasta la sección "Discos" en Azure Portal. Verifica que el disco con el nombre "es-us-dev-core-test" existe y está en estado "Disponible".

    2. Verifica que el disco Azure está conectado al clúster de Kubernetes:

    En Azure Portal, navega hasta la sección "Discos" y selecciona el disco "es-us-dev-core-test". En la pestaña "Conexión", verifica que el clúster de Kubernetes está listado como "Conectado". Si el clúster no está listado, selecciona "Conectar" y sigue las instrucciones para conectar el disco al clúster.

    3. Comprueba los permisos de acceso:

    Asegúrate de que la identidad utilizada para crear el PersistentVolumeClaim (PVC) tiene permisos para acceder al disco Azure. Puedes comprobar los permisos navegando hasta la sección "Control de acceso (IAM)" del disco en Azure Portal y verificando que la identidad tiene el rol "Lector de datos de disco" o superior.

    4. Reinicia el pod de PostgreSQL:

    Una vez que hayas verificado que el disco está disponible, conectado y tiene los permisos correctos, reinicia el pod de PostgreSQL para que detecte el nuevo volumen. Puedes reiniciar el pod ejecutando el siguiente comando:

    
    kubectl delete pod -l app=postgres
    

    5. Comprueba que el pod está funcionando correctamente:

    Después de reiniciar el pod, comprueba que está funcionando correctamente ejecutando el siguiente comando:

    
    kubectl get pods -l app=postgres
    

    El estado del pod debería ser "En ejecución".

    Si sigues teniendo problemas, puedes intentar lo siguiente:

    Verifica los registros del pod de PostgreSQL para obtener más información sobre el error. Examina los logs de eventos de Kubernetes para ver si hay algún error relacionado con el montaje del disco. Asegúrate de que el disco Azure está formateado con un sistema de archivos compatible con PostgreSQL, como ext4.

    Respondida el Dec 18, 2020 a las 20:30 - por Gemini

    Votos positivos: 0 | Votos negativos: 0