![](/img/trans.png)
[英]How to get the nodePort using fabric8 java api for kubernetes?
[英]Java Fabric 8 - Get Pods of Kubernetes service and starting service using Fabric8 Java API
我正在尝试下面的代码以使用Fabric8 Java API获取Kubernetes服务的可用Pod
ConnectionExample.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为其授予所需的权限。
另外,还有其他获取客户的方法:
2)使用在api服务器中使用的证书
Config config = new ConfigBuilder().withMasterUrl(masterURL).withClientCertFile(certFile).build();
或证书文件的内容-
Config config = new ConfigBuilder().withMasterUrl(masterURL).withClientCertData(certFile).build();
您需要使用配置文件中的ssl证书进行身份验证。 将您的配置文件复制到$HOME/.kube/config
位置,然后尝试运行此示例程序。
/**
* Copyright (C) 2015 Red Hat, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.fabric8.kubernetes.examples;
import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.ConfigBuilder;
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClientException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ListExamples {
private static final Logger logger = LoggerFactory.getLogger(ListExamples.class);
public static void main(String[] args) {
System.setProperty("KUBERNETES_AUTH_TRYKUBECONFIG_SYSTEM_PROPERTY","true");
Config config = Config.autoConfigure();
try (final KubernetesClient client = new DefaultKubernetesClient(config)) {
System.out.println(
client.namespaces().list()
);
System.out.println(
client.namespaces().withLabel("this", "works").list()
);
System.out.println(
client.pods().withLabel("this", "works").list()
);
System.out.println(
client.pods().inNamespace("test").withLabel("this", "works").list()
);
System.out.println(
client.pods().inNamespace("test").withName("testing").get()
);
} catch (KubernetesClientException e) {
logger.error(e.getMessage(), e);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.