首页 > 解决方案 > 使用 Fabric8 的 Kubernetes 客户端 API

问题描述

我正在为 Kubernetes 使用 fabric8 java 客户端库。我无法找到对容器执行更新操作的最佳方式。基本上我想要做的是我创建了一个容器映像为“nginx”的 pod,现在我想将此映像更新为“nginx:1.16.1”。

我试图做的是

client.pods().inNamespace(podsModel.getNamespace()).withName(podsModel.getNamespace()).edit().editSpec()
                .editContainer(0).withNewImage("nginx:1.16.1").endContainer().endSpec().buildSpec();

标签: javakuberneteskubernetes-podfabric8

解决方案


您应该能够Pod使用上面的代码编辑规范,您只需要使用done()而不是buildSpec()

try (KubernetesClient client = new DefaultKubernetesClient()) {
  Pod updatedPod = client.pods().inNamespace(namespace)
        .withName(podName)
        .edit().editSpec().editContainer(0)
        .withImage("nginx:1.16.1")
        .endContainer().endSpec().done();
}

但是,您不应该单独使用Pod。Pod 被设计为相对短暂的、一次性的实体。您应该使用一些可以代表您管理对象的控制器资源(Deployment等)。StatefulSetPod

维护者为常见的 Fabric8 Kubernetes Client 操作提供了一个文档。你也可以看看这个:Fabric8 Kubernetes Client Cheat Sheet


推荐阅读