gpt4 book ai didi

java - 如何连接到现有的 kubernetes 服务器并使用 java 列出所有 pod?

转载 作者:行者123 更新时间:2023-11-29 08:24:39 27 4
gpt4 key购买 nike

我正在尝试连接到在 AWS 上运行的现有 kubernetes,并使用 Java 在其上运行任意命令。具体来说,我们正在使用 fabric8(尽管如果您可以使用一个提供足够的答案,我对另一个 api 持开放态度)。我需要在 Java 中执行此操作的原因是因为我们计划最终将其合并到我们现有的 junit 实时测试中。

现在我只需要一个示例来说明如何连接到服务器并将所有 pod 名称获取为字符串数组。谁能给我一个简单明了的例子来说明如何做到这一点。

即我想要使​​用 java api 的这个 bash 脚本的等价物(同样最好使用 fabric8,但如果你知道的话我会接受另一个 api)

#!bin/bash
kops export kubecfg --name $CLUSTER --state=s3://$STATESTORE

kubectl get pod -o=custom-colums=NAME:.metadata.name -n=$NAMESPACE

最佳答案

这里是 kubernetes 的 fabric8 kubernetes 客户端:

https://github.com/fabric8io/kubernetes-client/

它带有流畅的 DSL,可以使用 kubernetes/Openshift 资源。它也有分页支持。如果你想列出某个命名空间中的资源,那么你可以在 dsl 中使用 inNamespace("your namespace") 参数。

String master = "https://192.168.42.20:8443/";

Config config = new ConfigBuilder().withMasterUrl(master).build();
try (final KubernetesClient client = new DefaultKubernetesClient(config)) {
// Simple Listing:
PodList simplePodList = client.pods().inAnyNamespace().list();

// List with limit and continue options:
PodList podList = client.pods().inAnyNamespace().list(5, null);
podList.getItems().forEach((obj) -> { System.out.println(obj.getMetadata().getName()); });

podList = client.pods().inAnyNamespace().list(5, podList.getMetadata().getContinue());
podList.getItems().forEach((obj) -> { System.out.println(obj.getMetadata().getName()); });

} catch (KubernetesClientException e) {
logger.error(e.getMessage(), e);
}

关于java - 如何连接到现有的 kubernetes 服务器并使用 java 列出所有 pod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54119987/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com