Error de nodo de afinidad de reclamo de volumen persistente de Kubernetes

Error de nodo de afinidad de reclamo de volumen persistente de Kubernetes

Entonces quiero implementar mssql pod en kubernetes, aunque tengo algunos problemas para implementar mi volumen persistente.

Primero implementé mi clase de almacenamiento en mis espacios de nombres que parecen estar implementados, mi volumen persistente no se implementó con mssql con estado pendiente y cuando usé el comando describe dijo que no podía vincular mi volumen.

Entonces busqué en Google este tipo de error y encontré otra configuración de volumen persistente que me hizo cambiar mi archivo yaml, aunque ahora me encuentro con otro error.

Este error ya se ha preguntado en este foro, pero la respuesta no parece ajustarse ni solucionar mi problema. -> referencia:mismo problema

mensaje de error:

el volumen persistente pvc-mssql no es válido: spec.persistentvolumesource: prohibido: es inmutable después de la creación nodeaffinity: valor no válido: core.volumenodeaffinity(required:(*core.nodeselector) (0xc007163b00)}: el campo es inmutable

imagen de error

mi clase de almacenamiento (implementada):

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

mi pvc (con error):

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pvc-mssql
  labels:
    type: local
spec:
  capacity:
    storage: 12Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  hostPath:
    path: /mnt/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - master-production-internal

mi mssql (esperando ser implementado):

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mssql
  labels:
    app: mssql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mssql
  template:
    metadata:
      labels:
        app: mssql
    spec:
      containers:
      - name: mssql
        image: mcr.microsoft.com/mssql/server
        resources:
          requests:
            cpu: 1
            memory: 2Gi
        env:
          - name: ACCEPT_EULA
            value: "Y"
          - name: SA_PASSWORD
            value: mypassword
        ports:
        - containerPort: 1433
        volumeMounts:
        - name: mssql
          mountPath: /var/opt/mssql
      volumes:
      - name: mssql
        persistentVolumeClaim:
          claimName: pvc-mssql

todos se implementan en el mismo espacio de nombres, por supuesto. Mi Kubernetes consta de 4 nodos, también conocidos como 4 máquinas virtuales, donde cada máquina virtual tiene aproximadamente 2 vcpus y 4 GB de RAM con 128 GB de espacio en disco ejecutando el servidor Ubuntu: configurado con fail2ban, ufw, tengo 1 maestro y 3 nodos. Tengo la última versión del clúster que se implementó hace menos de 2 meses.

¿Cuál parece ser el problema o qué necesito cambiar en mi PVC y tal vez algo que deba cambiar en mi yaml de implementación de mssql?

Según entiendo correctamente el error de mi mssql, no puede vincular el volumen triturado en otro nodo, por eso ahora tengo un nodo específico en mi pvc, que es mi maestro. <- ¿Esto también es correcto o debería cambiarlo?

Respuesta1

Lo logré implementando mssql y mongo pod sin un reclamo de volumen persistente.

información relacionada