首页 > 解决方案 > 动态或以编程方式从 kubernetes pod 卸载/分离持久卷声明并将其分配(安装/附加)到另一个 pod

问题描述

我有一个mypod0带有两个持久卷的 pod。

mypd0, mypd1(通过两个持久卷声明提供myclaim0myclaim1安装到mypod0at 中/dir0/dir1如下面的 pod 定义所示。

apiVersion: v1
kind: Pod
metadata:
  name: mypod0
spec:
  containers:
    - name: mycontainer
      image: myimage
      volumeMounts:
      - mountPath: "/dir0"
        name: mypd
-   mountPath: "/dir1"
-   name: mypd1
  volumes:
    - name: mypd0
      persistentVolumeClaim:
        claimName: myclaim0
    - name: mypd1
      persistentVolumeClaim:
        claimName: myclaim1

现在我还有另一个 podmypod1已经在集群中运行。有没有办法以动态/编程方式(使用fabric8,Kubernetes-client)从 卸载(分离)mypd1mypod0然后将卷附加mypd1mypod1(不重新启动任何pod mypod0mypod1)。任何提示将不胜感激。

标签: kuberneteskubernetes-podfabric8fabric8-maven-plugin

解决方案


正如Jonas在评论中提到的那样,这个动作是不可能的:

不,这是不可能的。Pod-manifests 旨在被视为不可变的,而 pod 则被视为一次性资源。

查看pods的定义:

Pod 是您可以在Kubernetes 中创建和管理的最小可部署计算单元。

Pod (如 鲸鱼荚或豌豆荚)是一组一个或多个 容器,具有共享的存储和网络资源,以及如何运行容器的规范。Pod 的内容始终是共同定位和共同调度的,并在共享上下文中运行。Pod 对特定于应用程序的“逻辑主机”进行建模:它包含一个或多个相对紧密耦合的应用程序容器。在非云环境中,在同一物理或虚拟机上执行的应用程序类似于在同一逻辑主机上执行的云应用程序。

但是,您可以动态创建新的存储卷。Kubernetes 支持动态卷供应

动态卷配置允许按需创建存储卷。如果没有动态配置,集群管理员必须手动调用他们的云或存储提供商来创建新的存储卷,然后 在 Kubernetes 中创建PersistentVolume 对象来表示它们。动态供应功能消除了集群管理员预先供应存储的需要。相反,它会在用户请求时自动配置存储。


推荐阅读