【问题标题】:Kubernetes Java client: cannot mount an existing configMap to a PodKubernetes Java 客户端:无法将现有的 configMap 挂载到 Pod
【发布时间】:2022-01-20 03:22:25
【问题描述】:

我正在开发一个使用官方 Kubernetes Java 客户端创建一些 Kubernetes 作业的 Java 应用程序。每个 Job 都使用其配置目录,该目录已作为 configMap 存在于集群中。 (此 configMap 是使用 kubectl create configmap {name} --from-file=/... 创建的)

使用Java客户端,我成功创建了一个引用特定configMap的V1ConfigMap对象,我还发现V1Volume.setConfigMap()会将V1ConfigMapVolumeSource转换为可以被容器挂载的V1Volume

但是,我找不到映射V1ConfigMapV1ConfigMapVolumeSource 的方法。

这是我的代码:

public void setConfigMap(V1ConfigMap cm, String mountPath){
       
    V1ConfigMapVolumeSource volSource = new V1ConfigMapVolumeSource();
        
    //Some additional mappings are needed here.
    //volSource = ...(cm)

    //create V1Volume from V1ConfigMapVolumeSource
    String volName = "appSetting";
    V1Volume settingVol = new V1Volume().name(volName);
    settingVol.setConfigMap(volSource);

    //create V1VolumeMount
    V1VolumeMount volumeMount = new V1VolumeMount();
    volumeMount.setMountPath(mountPath);
    volumeMount.setName(volName);

    //set created objects to the Job
    job.getSpec().getTemplate().getSpec().addVolumesItem(settingVol);
    job.getSpec().getTemplate().getSpec().getContainers().get(0).addVolumeMountsItem(volumeMount);
}

有谁知道解决这个问题的方法,还是我的方法完全错误?

【问题讨论】:

    标签: java kubernetes configmap


    【解决方案1】:

    正如在V1ConfigMapVolumeSourcedocumentation 中所述,有一个name 参数(类型为String),即name of the referent

    要将ConfigMap 链接到ConfigMapVolumeSource 中,只需将ConfigMap 的名称放在名称参数中即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-22
      • 2020-12-07
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 2016-12-24
      相关资源
      最近更新 更多