赞
踩
研究了几个小时,终于成功调用,记录一下。
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
![]()
执行结果:

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

红框标出的3个参数分别如下:
这里的三个参数,其实也可以使用路径方式配置,例如:
2.在pom文件引用jar包:
- <dependency>
- <groupId>io.kubernetes</groupId>
- <artifactId>client-java</artifactId>
- <version>4.0.0</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>com.squareup.okio</groupId>
- <artifactId>okio</artifactId>
- <version>2.3.0</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp</groupId>
- <artifactId>okhttp</artifactId>
- <version>2.5.0</version>
- </dependency>

3.Java调用API
- package com.data.k8s;
-
- import java.io.IOException;
- 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.V1Node;
- import io.kubernetes.client.models.V1NodeList;
- import io.kubernetes.client.models.V1Pod;
- import io.kubernetes.client.models.V1PodList;
- import io.kubernetes.client.util.Config;
-
- public class App
- {
- public static void main( String[] args ) throws IOException, ApiException
- {
- ApiClient client=Config.fromConfig("c:/kubelet.conf");
- 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());
- }
- }
- }

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

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。