我在部署中将ConfigMap用作卷。
我正在尝试使用不同的Volume和VolumeMount更新部署(请参见下面的示例)
我尝试了以下所有方法:
(我使用io.fabric8.kubernetes.api在kubernetes上进行操作。)
1)
client()。extensions()。deployments()。inNamespace(namespaceName).withName(deploymentName).replace(deployment);
2)
client()。extensions()。deployments()。inNamespace(namespaceName).withName(deploymentName).createOrReplace(deployment);
3)
client()。extensions()。deployments()。inNamespace(namespaceName).withName(deploymentName).cascading(false).replace(deployment);
4)
client()。extensions()。deployments()。inNamespace(namespaceName).withName(deploymentName).edit()。editSpec()。editTemplate()。editSped()。removeAllFromVolumes(volumes).endSpec()。endTemplate() .endTemplate()。endSpec()。done();
5)
client()。extensions()。deployments()。inNamespace(namespaceName).withName(deploymentName).edit()。editSpec()。editTemplate()。editSped()。removeFromVolumes(volume).endSpec()。endTemplate() .endTemplate()。endSpec()。done();
以上所有命令均无效!...
我也尝试过:
client()。extensions()。deployments()。inNamespace(namespaceName).withName(deploymentName).edit()。editSpec()。editTemplate()。editSped()。AddToVolumes(volume).endSpec()。endTemplate() .endTemplate()。endSpec()。done();
而且有效。
也就是说,只有ADD有效,但REMOVE不起作用...。
是不是BUG?
我是否以正确的方式使用它?
我只想使用不同的Volume(ConfigMap类型)和VolumeMount更新部署,该怎么办?
谢谢!
例:
旧的部署是这样的:(我仅显示主要部分)
kind: Deployment
metadata:
name: d2
namespace: n1
spec:
replicas: 1
template:
metadata:
creationTimestamp: null
spec:
containers:
- image: x.x.x.x
imagePullPolicy: IfNotPresent
name: c2
volumeMounts:
- mountPath: /var
name: configmapvolume1
- mountPath: /var/a
name: configmapvolume2
volumes:
- configMap:
defaultMode: 420
items:
- key: a.yml
path: a.yml
name: a
name: configmapvolume1
- configMap:
defaultMode: 420
items:
- key: c.yml
path: c.yml
name: a
name: configmapvolume2
新的部署是这样的:(我仅显示主要部分)
kind: Deployment
metadata:
name: d2
namespace: n1
spec:
replicas: 1
template:
metadata:
creationTimestamp: null
spec:
containers:
- image: x.x.x.x
imagePullPolicy: IfNotPresent
name: c2
volumeMounts:
- mountPath: /var/b
name: configmapvolume1
volumes:
- configMap:
defaultMode: 420
items:
- key: b.yml
path: b.yml
name: b
name: configmapvolume1
最佳答案
如果您是首次创建部署时添加--save-config,则以后可以调整其规格:
kubectl create -f deploymentv1.yaml --save-config
要使用调整后的yaml文件更新它,请运行以下命令:
kubectl apply -f deploymentv2.yaml
这样,将根据调整后的规范创建新的广告连播。然后,旧的Pod将终止。
当我弄清楚如何使用Java代码应用
--save-config
选项时,我将更新我的答案。