2021年1月5日星期二

Kubernetes官方java客户端之三:外部应用

欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

概览

  1. 以下提到的java客户端都是指client-jar.jar;
  2. 本文是《Kubernetes官方java客户端》系列的第三篇,《Kubernetes官方java客户端:准备》一文中咱们为实战做好了准备工作,从本文开始进入实战阶段;
  3. 本文的目标是开发名为OutsideclusterApplication的SpringBoot应用,该应用没有部署在K8S环境,使用的config文件是手动从K8S环境复制过来的,java客户端通过此config文件,能够远程访问到K8S上的API Server,实现所有客户端功能,整体部署情况如下图:
    在这里插入图片描述
  • 介绍完毕,开始编码;

源码下载

  1. 如果您不想编码,可以在GitHub下载所有源码,地址和链接信息如下表所示(https://github.com/zq2599/blog_demos):
名称链接备注
项目主页https://github.com/zq2599/blog_demos该项目在GitHub上的主页
git仓库地址(https)https://github.com/zq2599/blog_demos.git该项目源码的仓库地址,https协议
git仓库地址(ssh)git@github.com:zq2599/blog_demos.git该项目源码的仓库地址,ssh协议
  1. 这个git项目中有多个文件夹,本章的应用在kubernetesclient文件夹下,如下图红框所示:
    在这里插入图片描述

部署在K8S之外的应用:OutsideclusterApplication

名为OutsideclusterApplication的应用并未部署在K8S环境,该应用能够访问到K8S环境的关键,就是将K8S环境的config文件复制一份,然后放在OutsideclusterApplication能够访问到的位置:

  1. 登录K8S环境,在~/.kube目录下找到config文件,复制此文件到OutsideclusterApplication运行的机器上(我这里存放的路径是/Users/zhaoqin/temp/202007/05/,和后面的代码中一致);
  2. 打开《Kubernetes官方java客户端:准备》中创建的的kubernetesclient工程,在里面创建子工程,名为OutsideclusterApplication,这是个SpringBoot工程,pom.
<?
  1. 上述pom.
  2. 新增OutsideclusterApplication.java,简单起见,该类即是引导类又是Controller:
package com.bolingcavalry.outsidecluster;import com.google.gson.GsonBuilder;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@RestController@Slf4jpublic class OutsideclusterApplication { public static void main(String[] args) {  SpringApplication.run(OutsideclusterApplication.class, args); } @RequestMapping(value = "/hello") public V1PodList hello() throws Exception {  // 存放K8S的config文件的全路径  String kubeConfigPath = "/Users/zhaoqin/temp/202007/05/config";  // 以config作为入参创建的client对象,可以访问到K8S的API Server  ApiClient client = ClientBuilder    .kubeconfig(KubeConfig.loadKubeConfig(new FileReader(kubeConfigPath)))    .build();  Configuration.setDefaultApiClient(client);  CoreV1Api api = new CoreV1Api();  // 调用客户端API取得所有pod信息  V1PodList v1PodList = api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null);  // 使用jackson将集合对象序列化成JSON,在日志中打印出来  log.info("pod info \n{}", new GsonBuilder().setPrettyPrinting().create().toJson(v1PodList));  return v1PodList; }}
  1. 运行上述代码,在浏览器访 ,即可取得K8S所有pod的详情,如下所示(为了让返回数据更加整齐美观,我用的是Firefox浏览器):
    在这里插入图片描述

  2. 查看控制台,可见日志也将详情打印出来:
    在这里插入图片描述

  • 至此,咱们的第一个使用K8S官方java客户端的应用就完成了,接下来的实战会尝试将应用部署在K8S环境内,在K8S内部进行各项操作;

你不孤单,欣宸原创一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 数据库+中间件系列
  6. DevOps系列

欢迎关注公众号:程序员欣宸

微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...
https://github.com/zq2599/blog_demos









原文转载:http://www.shaoqun.com/a/504893.html

跨境电商:https://www.ikjzd.com/

跨国采购网:https://www.ikjzd.com/w/2270.html

贝恩:https://www.ikjzd.com/w/1336


欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;概览以下提到的java客户端都是指client-jar.jar;本文是《Kubernetes官方java客户端》系列的第三篇,《Kubernetes官方java客户端:准备》一文中咱们为实战做好了准备
costco:costco
聚贸:聚贸
上海最好玩的景点有哪些?:上海最好玩的景点有哪些?
去西冲旅游要带什么东西?:去西冲旅游要带什么东西?
欧洲瑞士旅游风俗习惯 - :欧洲瑞士旅游风俗习惯 -

没有评论:

发表评论