gpt4 book ai didi

kubernetes - 无法将更改应用到与 gCloud Kubernetes 引擎中的 ReadWriteOnce PV 绑定(bind)的部署?

转载 作者:行者123 更新时间:2023-12-02 12:18:54 25 4
gpt4 key购买 nike

由于 GCE Disk 不支持 ReadWriteMany ,我无法将更改应用到部署,但被困在 容器创建 FailedAttachVolume .

所以这是我的设置:

1.聚氯乙烯

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
labels:
app: mysql
spec:
storageClassName: "standard"
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi

2.服务
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
app: mysql
spec:
type: ClusterIP
ports:
- protocol: TCP
port: 3306
targetPort: 3306
selector:
app: mysql

3.部署
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: mysql
labels:
app: mysql
spec:
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql/mysql-server
name: mysql
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /mysql-data
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim

这些对于创建 PVC、svc 和部署都很好。 Pod 和容器成功启动并按预期工作。

但是,当我尝试通过以下方式应用更改时:
kubectl apply -f mysql_deployment.yaml
首先 , pod 被现有的 pod 吸住并没有终止,新的 pod 将永远创建。
NAME             READY     STATUS              RESTARTS   AGE
mysql-nowhash 1/1 Running 0 2d
mysql-newhash 0/2 ContainerCreating 0 15m

其次,在 gCloud 控制台中,在尝试创建的 pod 内,我得到了两个重要的错误日志:

1 of 2 FailedAttachVolume
Multi-Attach error for volume "pvc-<hash>" Volume is already exclusively attached to one node and can't be attached to another  FailedAttachVolume

2 of 2 失败安装
Unable to mount volumes for pod "<pod name and hash>": timeout expired waiting for volumes to attach/mount for pod "default"/"<pod name and hash>". list of unattached/unmounted volumes=[mysql-persistent-storage] 

我立刻想到的是 ReadWriteOnce gCloud PV的能力。因为 kubernetes 引擎会在终止现有的 Pod 之前创建一个新的 Pod。所以在 ReadWriteOnce 下它永远不能创建一个新的 pod 并声明现有的 pvc ......

有什么想法或者我应该使用其他方式来执行部署更新吗?
感谢您的任何贡献和建议 =)

备注:我目前的解决方法是创建一个临时 NFS pod 使其像 ReadWriteMany pvc,这可行但听起来很愚蠢......需要额外的存储 i/o 开销来促进部署更新?.. =P

最佳答案

原因是,如果您正在应用 UpdateStrategy:RollingUpdate(默认情况下)k8s 会等待新的容器准备就绪,然后再关闭旧的容器。您可以通过应用 UpdateStrategy 来更改此行为:重新创建

https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy

关于kubernetes - 无法将更改应用到与 gCloud Kubernetes 引擎中的 ReadWriteOnce PV 绑定(bind)的部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52922524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com