我有一个名为mypod0
的pod,它有两个持久卷。
mypd0
,mypd1
(通过两个持久的卷声明myclaim0
,myclaim1
提供)在/dir0
,/dir1
上挂载到mypod0
,如下面的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)从mypod0
卸载(分离)mypd1
,然后将卷mypd1
附加到mypod1
(不重启任何podmypod0
,mypod1
)。如有任何提示,我将不胜感激。
正如Jonas在评论中提到的,这个动作是不可能的:
不,这是不可能的pod -manifest是不可变的,pod是可丢弃的资源。
看pods的定义:
pod是您可以在Kubernetes中创建和管理的最小可部署计算单元。
APod(如在鲸荚或豌豆荚中)是一组一个或多个容器,具有共享存储和网络资源,以及如何运行容器的规范。Pod的内容总是在一个共享的上下文中共同定位和调度,并运行。Pod为特定于应用程序的"逻辑主机"建模:它包含一个或多个相对紧密耦合的应用程序容器。在非云环境中,在同一物理机或虚拟机上执行的应用程序类似于在同一逻辑主机上执行的云应用程序。
但是,您可以动态创建新的存储卷。Kubernetes支持动态卷配置:
动态卷分配允许按需创建存储卷。如果没有动态配置,集群管理员必须手动调用他们的云或存储提供商来创建新的存储卷,然后创建
PersistentVolume
对象在Kubernetes中表示它们。动态配置特性消除了集群管理员预配置存储的需要。相反,它会在用户请求时自动提供存储空间。