如何连接到现有的kubernetes服务器并使用Java列出所有Pod?

时间:2019-01-09 23:32:05

标签: java amazon-web-services kubernetes fabric8

我正在尝试连接到在AWS上运行的现有kubernetes,并使用Java在其上运行任意命令。具体来说,我们使用的是fabric8(尽管我可以使用其他api,但如果您可以使用一个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

2 个答案:

答案 0 :(得分:2)

这是Kubernetes的官方Java客户端。

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

它为您提供了一个干净的界面,并使用Java编写了代码以针对kubernetes执行。

如文档页面中列出的那样列出所有Pod,

import io.kubernetes.client.ApiClient;
import io.kubernetes.client.ApiException;
import io.kubernetes.client.Configuration;
import io.kubernetes.client.apis.CoreV1Api;
import io.kubernetes.client.models.V1Pod;
import io.kubernetes.client.models.V1PodList;
import io.kubernetes.client.util.Config;

import java.io.IOException;

public class Example {
    public static void main(String[] args) throws IOException, ApiException{
        ApiClient client = Config.defaultClient();
        Configuration.setDefaultApiClient(client);

        CoreV1Api api = new CoreV1Api();
        V1PodList list = api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null);
        for (V1Pod item : list.getItems()) {
            System.out.println(item.getMetadata().getName());
        }
    }
}

希望有帮助。

答案 1 :(得分:2)

这是kubernetes的fabric8 kubernetes客户端:

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

它带有流畅的DSL,可与kubernetes / Openshift资源一起使用。它也有分页支持。如果要在特定名称空间中列出资源,则可以在dsl中使用turtles-own [income] to setup create-turtles 100 [ set income one-of (range 800 1000) ] end 参数。

inNamespace("your namespace")