我在部署中将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选项时,我将更新我的答案。

09-10 07:05
查看更多