因此我想在 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 实现了这一点。