그래서 영구 볼륨을 배포하는 데 문제가 있지만 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를 배포하여 이를 달성했습니다.