kubernetes 영구 볼륨 요청 nodeAffinity 오류

kubernetes 영구 볼륨 요청 nodeAffinity 오류

그래서 영구 볼륨을 배포하는 데 문제가 있지만 kubernetes에 mssql 포드를 배포하고 싶습니다.

배포된 것으로 보이는 네임스페이스에 스토리지 클래스를 먼저 배포했는데 영구 볼륨이 보류 상태로 mssql을 배포하지 않았으며 설명 명령을 사용할 때 볼륨을 바인딩할 수 없다고 표시되었습니다.

그래서 저는 이런 유형의 오류를 Google에서 발견했고 또 다른 영구 볼륨 구성을 발견하여 yaml 파일을 변경하게 했지만 이제는 또 다른 오류가 발생했습니다.

이 오류는 이미 이 포럼에서 요청되었지만 답변이 내 문제에 맞지 않거나 해결되지 않는 것 같습니다. -> 참조:같은 문제

에러 메시지:

영구 볼륨 pvc-mssql이 유효하지 않습니다. spec.pertantvolumesource: 금지됨: 생성 후 변경할 수 없습니다. nodeaffinity: 유효하지 않은 값: core.volumenodeaffinity(required:(*core.nodeselector) (0xc007163b00)}: 필드는 변경할 수 없습니다.

오류 이미지

내 스토리지 클래스(배포됨):

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

내 PVC(오류):

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

내 mssql(배포 대기 중):

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

물론 모두 동일한 네임스페이스에 배포됩니다. 내 kubernetes는 4개의 vm이라고도 불리는 4개의 노드로 구성되어 있습니다. 각 vm에는 약 2vcpus와 4GB RAM이 있고 우분투 서버를 실행하는 128GB 디스크 공간이 있습니다. fall2ban, ufw로 구성되었으며 마스터 1개와 노드 3개가 있습니다. 최신 버전의 클러스터가 배포된 지 약 2개월이 지났습니다.

무엇이 문제인 것 같으며 PVC에서 무엇을 변경해야 합니까? 아니면 MSSQL 배포 YAML에서 변경해야 할 것이 있습니까?

내 mssql의 오류를 올바르게 이해하면 다른 노드의 파쇄 볼륨을 바인딩할 수 없기 때문에 현재 내 마스터인 내 PVC에 특정 노드가 있는 것입니다. <- 이것도 맞는 건가요, 아니면 바꿔야 하는 건가요?

답변1

지속적인 볼륨 클레임 없이 mssql 및 mongo pod를 배포하여 이를 달성했습니다.

관련 정보