当前位置:   article > 正文

K8S——java调用OpenApi_java k8s 模块之间接口调用

java k8s 模块之间接口调用

研究了几个小时,终于成功调用,记录一下。

K8s的所有操作基本都是通过调用kube-apiserver这个组件进行的,它提供了restful api供外部系统访问,当然为了保证整个k8s集群的安全性,k8s提供了多种认证方式来保证集群的安全性:比如客户端证书、静态token、静态密码文件、ServiceAccountTokens等等。你可以同时使用一种或多种认证方式。只要通过任何一个都被认作是认证通过,我们一般都是使用证书方式:客户端证书认证叫作TLS双向认证。
 

调用方式:

1.命令行方式

2.java使用客户端client-java调用

 

命令行方式

执行命令调用api,查看命名空间default下所有pod:

curl https://localhost:6443/api/v1/namespaces/default/pods   --cacert /etc/kubernetes/pki/apiserver.crt     --cert /etc/kubernetes/pki/apiserver-kubelet-client.crt    --key /etc/kubernetes/pki/apiserver-kubelet-client.key -k

执行结果:

java使用客户端client-java调用

1.配置客户端证书验证,我们通过配置一个kubelet.conf文件来讲解下。

红框标出的3个参数分别如下:

  • certificate-authority-data:CA证书
  • client-certificate-data:TLS 证书
  • client-key-data:TLS Key

这里的三个参数,其实也可以使用路径方式配置,例如:

  • certificate-authority:/etc/kubernetes/pki/apiserver.crt
  • client-certificate:/etc/kubernetes/pki/apiserver-kubelet-client.crt
  • client-key:/etc/kubernetes/pki/apiserver-kubelet-client.key

2.在pom文件引用jar包:

  1. <dependency>
  2. <groupId>io.kubernetes</groupId>
  3. <artifactId>client-java</artifactId>
  4. <version>4.0.0</version>
  5. <scope>compile</scope>
  6. </dependency>
  7. <dependency>
  8. <groupId>com.squareup.okio</groupId>
  9. <artifactId>okio</artifactId>
  10. <version>2.3.0</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>com.squareup.okhttp</groupId>
  14. <artifactId>okhttp</artifactId>
  15. <version>2.5.0</version>
  16. </dependency>

  3.Java调用API

   

  1. package com.data.k8s;
  2. import java.io.IOException;
  3. import io.kubernetes.client.ApiClient;
  4. import io.kubernetes.client.ApiException;
  5. import io.kubernetes.client.Configuration;
  6. import io.kubernetes.client.apis.CoreV1Api;
  7. import io.kubernetes.client.models.V1Node;
  8. import io.kubernetes.client.models.V1NodeList;
  9. import io.kubernetes.client.models.V1Pod;
  10. import io.kubernetes.client.models.V1PodList;
  11. import io.kubernetes.client.util.Config;
  12. public class App
  13. {
  14. public static void main( String[] args ) throws IOException, ApiException
  15. {
  16. ApiClient client=Config.fromConfig("c:/kubelet.conf");
  17. Configuration.setDefaultApiClient(client);
  18. CoreV1Api api=new CoreV1Api();
  19. V1PodList list=api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null);
  20. for (V1Pod item:list.getItems()) {
  21. System.out.println( item.getMetadata().getName());
  22. }
  23. }
  24. }

成功调用接口,返回pod列表:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/45591
推荐阅读
相关标签
  

闽ICP备14008679号