美文网首页
使用Java调用 K8S API获取信息

使用Java调用 K8S API获取信息

作者: 上岸的魚 | 来源:发表于2020-04-06 22:45 被阅读0次

    k8s管理不仅提供了命令行工具,还提供了完整的rest api接口供用户使用,其dashboard就是基于该api接口实现的,我们可以通过这些api实现自定义的管理及监控等功能,本文我们使用java实现最基本的接口调用。

    实现过程

    配置文件
    进入 master节点,导出k8s证书config文件

    cd /root/.kube
    sz config   #下载该文件
    

    然后我们将文件改名为k8s.config,复制到java项目resource的config目录中供使用

    java 引用
    springboot pom文件中添加以下依赖:

            <dependency>
                <groupId>io.kubernetes</groupId>
                <artifactId>client-java</artifactId>
                <version>7.0.0</version>
                <scope>compile</scope>
            </dependency>
    

    程序开发
    新建一k8sController

    @RequestMapping("/getPods")  
             public String getPods(){  
                try
                {
                     ApiClient client = ClientBuilder.kubeconfig(KubeConfig.loadKubeConfig(new FileReader(k8sConfigFile))).build();               
                        Configuration.setDefaultApiClient(client);             
                        CoreV1Api api = new CoreV1Api();                
                        V1PodList list = api.listPodForAllNamespaces(null,null,null,null,null,null,null,null,null);
                        StringBuilder str = new StringBuilder();                    
                        for (V1Pod item : list.getItems()) {
                            str.append(item.toString());
                            str.append("\n");                  
                        }   
                        return str.toString();
                }
                catch(Exception ex) {
                    log.error(ex.toString());
                    return "Error:"+ex.getMessage();
                }            
             } 
    

    部署验证
    部署该程序到k8s环境,然后通过浏览器访问验证:

    通过api获取k8s资源

    总结

    k8s的api提供几乎所有k8s的信息获取及操作,通过其api我们甚至可以自行开发一套管理平台,主动化+自动化+智能化是IT运维变革的方向,而传统的命令行模式支撑略有不足,API恰好弥补了这一短板,剩下的就要看内部开发及集成能力发挥的程度。

    附相关接口地址

    以下内容引用自https://www.jianshu.com/p/a25e9e613f2c

    /api/v1/proxy/nodes/{name}/pods/    #列出指定节点内所有Pod的信息
    /api/v1/proxy/nodes/{name}/stats/   #列出指定节点内物理资源的统计信息
    /api/v1/prxoy/nodes/{name}/spec/    #列出指定节点的概要信息
    
    /api/v1/proxy/nodes/{name}/run      #在节点上运行某个容器
    /api/v1/proxy/nodes/{name}/exec     #在节点上的某个容器中运行某条命令
    /api/v1/proxy/nodes/{name}/attach   #在节点上attach某个容器
    /api/v1/proxy/nodes/{name}/portForward   #实现节点上的Pod端口转发
    /api/v1/proxy/nodes/{name}/logs     #列出节点的各类日志信息
    /api/v1/proxy/nodes/{name}/metrics  #列出和该节点相关的Metrics信息
    /api/v1/proxy/nodes/{name}/runningpods  #列出节点内运行中的Pod信息
    /api/v1/proxy/nodes/{name}/debug/pprof  #列出节点内当前web服务的状态,包括CPU和内存的使用情况
    
    /api/v1/proxy/namespaces/{namespace}/pods/{name}/{path:*}      #访问pod的某个服务接口
    /api/v1/proxy/namespaces/{namespace}/pods/{name}               #访问Pod
    #以下写法不同,功能一样
    /api/v1/namespaces/{namespace}/pods/{name}/proxy/{path:*}      #访问pod的某个服务接口
    /api/v1/namespaces/{namespace}/pods/{name}/proxy               #访问Pod
    /api/v1/proxy/namespaces/{namespace}/services/{name}
    

    相关文章

      网友评论

          本文标题:使用Java调用 K8S API获取信息

          本文链接:https://www.haomeiwen.com/subject/yioiphtx.html