kubernetes 持久性磁碟區宣告節點關聯性錯誤

kubernetes 持久性磁碟區宣告節點關聯性錯誤

所以我想在 kubernetes 上部署 mssql pod,儘管我在部署持久性磁碟區時遇到了一些麻煩。

我首先在我的命名空間中部署了我的存儲類,該命名空間似乎已部署,我的持久卷未以掛起狀態部署 mssql,並且當使用描述命令時,它表示無法綁定我的捲

所以我用谷歌搜尋了這種類型的錯誤,並遇到了另一個持久卷配置,這讓我更改了我的 yaml 文件,但現在我遇到了另一個錯誤。

此錯誤已在此論壇上提出,但答案似乎不適合或解決我的問題。 -> 參考:同樣的問題

錯誤訊息:

持久性磁碟區 pvc-mssql 無效:spec.persistentvolumesource:禁止:建立後不可變節點親和力:無效值:core.volumenodeaffinity(必要:(* 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 個節點,即4 個虛擬機,其中每個虛擬機大約有2vcpu 和4GB 內存,具有128GB 磁碟空間,運行ubuntu 伺服器:配置了fail2ban、ufw,我有1 個主節點和3 個節點。我已經部署了最新版本的集群,大約不到兩個月前

問題似乎是什麼,或者我需要在 pvc 中更改什麼,也許我必須在 mssql 部署 yaml 中更改某些內容?

當我正確理解我的 mssql 的錯誤時,它無法將碎片卷綁定到另一個節點上,這就是為什麼我現在在 pvc 中有一個特定節點,它是我的主節點。 <- 這也是正確的還是我應該更改它?

答案1

我透過部署 mssql 和 mongo pod 來實現這一目標,而無需持久卷聲明。

相關內容