最近工作任务就是调用k8s的接口服务,然后也是解决了很多坑目前调用K8s api的方面资料少用的人少,那么就把这些积累的点记下来分享一下,也希望对大家的工作和学习有帮助。
1.api接口访问方式
1.1 授权方式
调用k8s使用rest api形式一个是安全的地址https:127.0.0.1:6443,这个地址需要有认证权限的,可以是token方式或者是证书,这个也是我一开始使用的方式,无奈没有办法知道token什么时候过期,但是目前实验只要K8s正常启动一直没有换token也还是可以使用。
那我现在就用Kuboard获取token的方式也是能有权限操作k8s客户端接口的,如果跳过可以看1.2不授权方式,我java接口调用用的就是这种方式。
应该可以使用命令直接查询,但我这边是用的k8s的可视化Kuboard,其实kubernetes-dashboard这个官方的可视化也是可以的获取的,我拿Kuboard为例,kuboard官网获取token的命令是
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}')
然后就会获取到如下token ,直接拷走token,用https:127.0.0.1:6443地址就能进行postman测试了

当然kubernetes-dashboard也是一样要获取token,获取完的token我们这个地址也一样能使用
1.2 不授权方式
第二个方式是不安全的地址http://127.0.0.1:8008,就是说可以不用认证权限就可以直接访问K8s了,因为真的不知道token什么时候过期,2是k8s不稳定老是重装我就得需要换token,麻烦所以我就用这种方式了,但是网上都说这个地址可以使用但是我用一直拒绝访问我根本没法使用,原因是因为我们没有进行配置,需要对kube-apiserver进行配置地址供我们访问。
输入如下命令:
vim /etc/kubernetes/manifests/kube-apiserver.yaml
在下图的地方添加以下,写好以后保存退出,他就会重启稍微等一下我们就可以访问一下地址
- --enable-swagger-ui=true
- --insecure-bind-address=0.0.0.0
- --insecure-port=8008

我的就可以访问了

2.java(springboot)方式调用k8s api
2.1.java连接k8s初始化
#yml
k8s:
api-http: http://192.168.7.115:8008
@Value("${k8s.api-http}")
private String httpApi;
/**
* k8s的初始化
*
* @return
*/
public ApiClient getConnection() {
ApiClient client = new ClientBuilder().
setBasePath(httpApi).setVerifyingSsl(false).build();
//setAuthentication(new AccessTokenAuthentication(token))
Configuration.setDefaultApiClient(client);
return client;
}
2.1 java调用k8s创建命名空间
public Map<String, String> creatNamespace(V1Namespace body) {
Map<String, String> message = new HashMap<>();
// k8s初始化
ApiClient client = k8sInit.getConnection();
CoreV1Api apiInstance = new CoreV1Api();
try {
V1Namespace result = apiInstance.createNamespace(body, null, null, null);
message.put("success", "应用命名空间创建成功!");
} catch (ApiException e) {
log.error("Ex

最低0.47元/天 解锁文章
2978





