我正在尝试下面的代码,以使用Fabric8 java API获取Kubernetes服务的可用pod
connection example.Java:
package examples;
import java.util.*;
import io.fabric8.kubernetes.api.KubernetesClient;
import io.fabric8.kubernetes.api.KubernetesFactory;
import io.fabric8.kubernetes.api.model.IntOrString;
import io.fabric8.kubernetes.api.model.Service;
public class ConnectionExample {
private String ip;
private String port;
public ConnectionExample(String ip, String port) {
this.ip= ip;
this.port = port;
}
public KubernetesClient getConnection() {
final String URI = "http://" + ip+ ":" + port;
final KubernetesClient kubernetes = new KubernetesClient(new KubernetesFactory(URI));
return kubernetes;
}
}
app.Java
package examples;
/**
* Hello world!
*
*/
public class App {
public static void main( String[] args ) {
System.out.println( "Hello World!" );
ConnectionExample connectionExample = new ConnectionExample("XXX.XXX.XXX.XX", "1234");
System.out.println("Retrun: "+connectionExample.getConnection());
System.out.println("List of Pods: "+connectionExample.getConnection().getPods());
//connectionExample.getConnection().createService(entity, namespace)
}
}
我收到了以下错误
2017-10-26 15:09:04 WARN PhaseInterceptorChain:452 - Interceptor for
WebClient has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Could not send Message.
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at org.apache.cxf.jaxrs.client.AbstractClient.doRunInterceptorChain(AbstractClient.java:619)
at org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedInvocation(ClientProxyImpl.java:674)
at org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:224)
at com.sun.proxy.$Proxy19.getPods(Unknown Source)
at io.fabric8.kubernetes.api.KubernetesClient.getPods(KubernetesClient.java:154)
at io.fabric8.kubernetes.api.KubernetesClient.getPods(KubernetesClient.java:149)
并且还想知道如何传递kubernetes服务的用户名和密码
我正在尝试使用fabric8 java API从java类启动kubernetes服务
public static void main(String[] args) throws Exception{
try {
String url = "cluster_endpoint";
String oathToken = "serviceAccountToken";
Config config = new ConfigBuilder()
.withMasterUrl("")
.withTrustCerts(true)
.withOauthToken(oathToken.replaceAll("(\\r|\\n)", ""))
.build();
KubernetesClient client = new DefaultKubernetesClient(config);
System.out.println(client.pods().inNamespace("default").list());
} catch (KubernetesClientException kce) {
logger.error("KubernetesClientException : {}, {}", KubernetesErrorUtil.getErrorMsg(kce), kce);
} catch (Exception e){
logger.error("Exception :");
e.printStackTrace();
}
}
这将使用serviceAccountToken获取客户端。您可以通过创建ClusterRole或Role和ClusterRoleBinding或RoleBinding来创建服务帐户并为其提供所需的权限。
还有其他方法可以让客户:
或证书档案的内容─
Config config = new ConfigBuilder()。withMasterUrl(masterURL).withClientCertData(certFile).build();
您需要使用配置文件中的ssl证书进行身份验证。将您的配置文件复制到qazxsw poi位置并尝试运行此示例程序。
$HOME/.kube/config