kubernetes - 动态或以编程方式从 kubernetes pod 卸载/分离持久卷声明并将其分配(安装/附加)到另一个 pod
问题描述
我有一个mypod0
带有两个持久卷的 pod。
mypd0
, mypd1
(通过两个持久卷声明提供myclaim0
)myclaim1
安装到mypod0
at 中/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)从 卸载(分离)mypd1
,mypod0
然后将卷附加mypd1
到mypod1
(不重新启动任何pod mypod0
,mypod1
)。任何提示将不胜感激。
解决方案
正如Jonas在评论中提到的那样,这个动作是不可能的:
不,这是不可能的。Pod-manifests 旨在被视为不可变的,而 pod 则被视为一次性资源。
查看pods的定义:
Pod 是您可以在Kubernetes 中创建和管理的最小可部署计算单元。
Pod (如 鲸鱼荚或豌豆荚)是一组一个或多个 容器,具有共享的存储和网络资源,以及如何运行容器的规范。Pod 的内容始终是共同定位和共同调度的,并在共享上下文中运行。Pod 对特定于应用程序的“逻辑主机”进行建模:它包含一个或多个相对紧密耦合的应用程序容器。在非云环境中,在同一物理或虚拟机上执行的应用程序类似于在同一逻辑主机上执行的云应用程序。
但是,您可以动态创建新的存储卷。Kubernetes 支持动态卷供应:
动态卷配置允许按需创建存储卷。如果没有动态配置,集群管理员必须手动调用他们的云或存储提供商来创建新的存储卷,然后 在 Kubernetes 中创建
PersistentVolume
对象来表示它们。动态供应功能消除了集群管理员预先供应存储的需要。相反,它会在用户请求时自动配置存储。