kubernetes 持久卷声明 nodeAffinity 错误

kubernetes 持久卷声明 nodeAffinity 错误

因此我想在 kubernetes 上部署 mssql pod,尽管我在部署持久卷时遇到了一些麻烦。

我首先在我的命名空间中部署了我的存储类,它似乎已部署,我的持久卷没有以待处理状态部署,当使用 describe 命令时,它说无法绑定我的卷

因此我在谷歌上搜索这种类型的错误,并遇到了另一个持久卷配置,这使我更改了我的 yaml 文件,尽管现在我遇到了另一个错误。

此错误已在此论坛上提出,但答案似乎不适合或无法解决我的问题。-> 参考:同样的问题

错误信息:

持久卷 pvc-mssql 无效:spec.persistentvolumesource:forbidden:创建后不可变 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 个节点,也就是 4 个虚拟机,每个虚拟机大约有 2 个 vcpus 和 4GB 内存,128GB 磁盘空间运行 ubuntu 服务器:配置了 fail2ban、ufw,我有 1 个主服务器和 3 个节点。我有最新版本的集群,部署时间不到 2 个月

看起来是什么问题或者我需要在我的 pvc 中进行哪些更改以及也许我必须在我的 mssql 部署 yaml 中进行哪些更改?

正如我正确理解我的 mssql 的错误一样,它无法将碎片卷绑定到另一个节点上,这就是为什么我现在在我的 pvc 中有一个特定节点,它是我的主节点。<- 这也是正确的还是我应该更改它?

答案1

我通过部署没有持久卷声明的 mssql 和 mongo pod 实现了这一点。

相关内容