kubernetes 如何在不编辑正在运行的部署的情况下附加额外的卷?

nx7onnlm  于 2023-05-06  发布在  Kubernetes
关注(0)|答案(1)|浏览(111)

我们有如下部署,它使用单个卷运行。现在我们需要给它增加额外的体积。
我们如何在不编辑正在运行的部署的情况下实现这一点。
例如:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpd-deployment
  namespace: httpd-test
  labels:
    app: httpd_app
spec:
  selector:
    matchLabels:
      app: httpd_app
  template:
    metadata:
      labels:
        app: httpd_app
    spec:
      containers:
      - name: httpd-container
        image: httpd:latest
        ports:
         - containerPort: 80
        volumeMounts:
        - mountPath: "/data/test"
          name: my-pv-storage
      volumes:
      - name: my-pv-storage
        persistentVolumeClaim:
          claimName: my-pv-claim

我们已经尝试了动态配置,也尝试了shell脚本中的sed命令。

9lowa7mx

9lowa7mx1#

简短的回答-你不能。当您更改卷和卷装载时-您更改了pod定义,这将强制pod重新创建。另一个原因是,使用的PV类型实际上在调度中很重要。想象一下,如果你有一个pod,它需要一个新的RWO卷,也被其他一些pod使用。K8s文档将其定义为
ReadWriteOnce -卷可以由单个节点以读写方式装载
因此,如果您的两个pod位于不同的节点上,则应重新创建其中一个,否则其中一个将无法访问此PV。
您应该将pod的重新创建作为应用程序生命周期的一个正常部分,如果可能的话,可以扩展它,这样rollout重启就不会对用户产生任何影响。

相关问题