博客
关于我
Kubernetes官方java客户端之三:外部应用
阅读量:416 次
发布时间:2019-03-06

本文共 2943 字,大约阅读时间需要 9 分钟。

Kubernetes 官方 Java 客户端:部署在 K8S 之外的应用开发

概述

本文是《Kubernetes 官方 Java 客户端》系列的第三篇文章。本文将介绍如何使用 Kubernetes 官方 Java 客户端(client-java.jar)在非 K8S 环境中开发一个 Spring Boot 应用。该应用通过手动复制 K8S 环境的配置文件,能够远程访问 K8S API Server 并完成客户端操作。本文将详细介绍应用的开发过程及部署方案。

应用功能

本文开发的应用名为 OutsideclusterApplication,主要功能包括:

  • 使用 Kubernetes 官方 Java 客户端通过配置文件远程访问 K8S API Server
  • 提供获取所有命名空间下的 Pod 信息的 REST API

配置文件准备

在 K8S 环境中,配置文件(kubeconfig)通常存放在用户的 ~/.kube 目录下。例如:

/Users/zhaoqin/.kube/config

在开发环境中,将该配置文件复制到应用运行所在的机器路径上(如 /Users/zhaoqin/temp/202007/05/config),供客户端使用。

项目结构

该项目基于 Maven 构建,项目结构如下:

com.bolingcavalry:    kubernetesclient:        outsidecluster:            main类:OutsideclusterApplication

项目依赖

项目依赖项包括:

  • Spring Boot Starter Web:用于构建 RESTful API
  • Lombok:简化 Java 代码
  • Kubernetes 官方 Java 客户端:用于与 K8S API Server 通话

主要代码逻辑

package com.bolingcavalry.outsidecluster;import io.kubernetes.client.openapi.ApiClient;import io.kubernetes.client.openapi.Configuration;import io.kubernetes.client.openapi.apis.CoreV1Api;import io.kubernetes.client.openapi.models.V1PodList;import io.kubernetes.client.util.ClientBuilder;import io.kubernetes.client.util.KubeConfig;import lombok.extern.slf4j.Slf4j;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.io.FileReader;@SpringBootApplication@Slf4j@RestControllerpublic class OutsideclusterApplication {    public static void main(String[] args) {        SpringApplication.run(OutsideclusterApplication.class, args);    }    @RequestMapping(value = "/hello")    public V1PodList hello() throws Exception {        String kubeConfigPath = "/Users/zhaoqin/temp/202007/05/config";        ApiClient client = ClientBuilder                .kubeconfig(KubeConfig.loadKubeConfig(new FileReader(kubeConfigPath)))                .build();        Configuration.setDefaultApiClient(client);        CoreV1Api api = new CoreV1Api();        V1PodList v1PodList = api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null);        log.info("pod info \n{}", new GsonBuilder().setPrettyPrinting().create().toJson(v1PodList));        return v1PodList;    }}

代码解释

  • 依赖管理:通过 Maven 依赖管理,确保项目中包含所有必要的库文件。

  • 客户端配置:使用 ClientBuilder 创建客户端实例,并加载从文件路径读取的 K8S 配置文件。

  • API 调用:通过 Kubernetes 官方 Java 客户端调用 CoreV1Api 类的 listPodForAllNamespaces 方法,获取所有命名空间下的 Pod 信息。

  • 日志输出:使用 Lombok 的 Slf4j 提供日志输出功能,便于跟踪和调试。

  • 返回数据:将获取到的 Pod 信息转换为 JSON 格式输出,供前端调用。

  • 应用部署

    运行上述代码后,访问 http://localhost:8080/hello 即可获取所有 Pod 的详细信息。日志中也会打印出最新的 Pod 列表。

    总结

    本文介绍了如何在非 K8S 环境中使用 Kubernetes 官方 Java 客户端开发一个 Spring Boot 应用。通过手动配置 K8S 配置文件,将客户端与 K8S API Server 连接起来。该方案适用于需要在外部环境中管理 Kubernetes 集群的场景,同时也为后续在 K8S 环境内部署客户端应用奠定了基础。

    如果您不想手动编码,也可以通过 GitHub 下载完整源码。项目主页和仓库地址如下:

    项目主页 无链接 该项目在 GitHub 的主页
    无链接 无链接 无链接

    git 仓库地址 (SSH):

    git@github.com:zq2599/blog_demos.git

    本文将详细介绍如何在 K8S 环境内部署客户端应用,敬请期待后续文章。

    转载地址:http://kqtkz.baihongyu.com/

    你可能感兴趣的文章
    oracle script
    查看>>
    Oracle select表要带双引号的原因
    查看>>
    Oracle SOA Suit Adapter
    查看>>
    Oracle Spatial GeoRaster 金字塔栅格存储
    查看>>
    Oracle Spatial空间数据库建立
    查看>>
    UML— 活动图
    查看>>
    oracle sqlplus已停止工作,安装完成客户端后sqlplus报“段错误”
    查看>>
    Oracle Statspack分析报告详解(一)
    查看>>
    oracle tirger_在Oracle中,临时表和全局临时表有什么区别?
    查看>>
    oracle where 条件的执行顺序分析1
    查看>>
    Oracle 中的 decode
    查看>>
    oracle 使用leading, use_nl, rownum调优
    查看>>
    oracle 修改字段类型方法
    查看>>
    oracle 内存参数示意图
    查看>>
    Oracle 写存储过程的一个模板还有一些基本的知识点
    查看>>
    Oracle 创建 DBLink 的方法
    查看>>
    oracle 创建双向备份,Materialized View 物化视图实现 Oracle 表双向同步
    查看>>
    oracle 创建字段自增长——两种实现方式汇总
    查看>>
    Oracle 升级10.2.0.5.4 OPatch 报错Patch 12419392 Optional component(s) missing 解决方法
    查看>>
    oracle 可传输的表空间:rman
    查看>>