spring cloud kubernetes 本地开发环境搭建

news2025/7/14 8:05:40

背景

在上文Spring Cloud Zookeeper 升级为Spring Cloud Kubernetes 之后,我们由于使用了Kubernetes的服务发现,由于本地不在Kubernetes中,导致本地项目启动失败。所以就只能把代码部署到Kubernetes中才能启动,那么就带来一个新问题,本地如何开发debug呢?

源码

本博客的源码已上传至github,需要自取

  • github: https://github.com/weihubeats/weihubeats_demos/tree/master/spring-cloud-demos/spring-cloud-kubernetes

原理

要先知道本地如何搭建开发环境,就要知道spring cloud kubernetes是如何连接Kubernetes

所以我们进行源码分析一下:
我们启动通过报错log其实可以直接定位到创建Kubernetes client的代码

在这里插入图片描述
可以看到创建ApiClient有两个地方

通过http连接


public static final String ENV_SERVICE_HOST = "KUBERNETES_SERVICE_HOST";
public static final String ENV_SERVICE_PORT = "KUBERNETES_SERVICE_PORT";

public static ClientBuilder cluster() throws IOException {
    final ClientBuilder builder = new ClientBuilder();

    final String host = System.getenv(ENV_SERVICE_HOST);
    final String port = System.getenv(ENV_SERVICE_PORT);
    builder.setBasePath(host, port);

    builder.setCertificateAuthority(Files.readAllBytes(Paths.get(SERVICEACCOUNT_CA_PATH)));
    builder.setAuthentication(new TokenFileAuthentication(SERVICEACCOUNT_TOKEN_PATH));

    return builder;
  }

可以看到最上面的方式是通过http的方式去创建,获取的hostport都是从环境变量中获取的,如果http方式连接不上就被try catch 然后通过读取配置文件的方式创建ApiClient

通过config配置连接

在这里插入图片描述

本地开发环境搭建

知道原理了之后我们就知道该怎么做了,最简单的方式肯定是会用config去连接。我们参考之前

  • 安装minikube: https://weihubeats.blog.csdn.net/article/details/126353166

安装完并启动minikube
然后我们查看我们的本地配置文件,就会发现自动生成了config配置文件
在这里插入图片描述

然后就可以直接启动项目了,然后发现报错,找不到

在这里插入图片描述

查看源码发现需要配置namespace

首先我们通过kubectl创建一个名为defaultnamespace

kubectl create ns default-namespace

我们在配置一下

  • application.properties
spring.cloud.kubernetes.client.namespace = default
spring.cloud.kubernetes.enabled = true

需要注意一下这里如果引入了依赖spring-cloud-kubernetes-client-config该配置只能在bootstrap中配置才能生效

测试

我们这里本地是启动成功了,写一个获取服务的接口

@RestController
@RequestMapping("/service/v1")
@RequiredArgsConstructor
@Slf4j
public class ServiceController {
	private final DiscoveryClient discoveryClient;
	@GetMapping("/service")
	public List<String> getServiceList(){
		return discoveryClient.getServices();
	}
}

调用

GET http://localhost:8090/service/v1/service

成功返回服务列表说明成功了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java基于springboot+vue的驾校报名预约管理系统 nodejs

网络的广泛应用给生活带来了十分的便利。所以把驾校报名管理与现在网络相结合&#xff0c;利用java技术建设驾校管理系统&#xff0c;实现驾校报名的信息化。则对于进一步提高驾校报名管理发展&#xff0c;丰富驾校报名管理经验能起到不少的促进作用。 驾校管理系统能够通过互联…

java后端返回给前端对象时去除值为空或NULL的属性

前言 测试接口时发现当返回的对象中属性值为 “” 或 [] 或 null 时&#xff0c;该属性依然会返回&#xff0c;这样数据看起来很不美观并且有时候也会导致前端组件出现一些小的bug。 例如这个下拉框&#xff0c;人事科下面是没有部门的&#xff0c;但是由于接口返回了 child…

数据分析er看过来,五款工具有你需要的

“我想转行做数据分析&#xff0c;但是我只会用Excel&#xff0c;不会其他的工具&#xff0c;有其他的数据分析工具推荐么&#xff1f;“ “我不会python&#xff0c;那我可以做数据分析吗” 大部分人对数据分析的的第一印象就是Excel&#xff0c;python&#xff0c;其实选择一…

Cy5.5 N-羟基琥珀酰亚胺酯,Cy5.5 nhs ester,CAS:1469277-96-0

产品名称&#xff1a;CY5.5琥珀酰亚胺脂&#xff0c;Cy5.5 N-羟基琥珀酰亚胺酯 英文名称&#xff1a;Cyanine5.5 NHS ester&#xff0c;Cyanine5.5 SE&#xff0c;CY5.5 NHS CAS:1469277-96-0 外观&#xff1a;蓝色至深蓝色固体 分子式&#xff1a;C45H48IN3O4 分子量&…

【DropBlock】《DropBlock:A regularization method for convolutional networks》

NIPS-2018 文章目录1 Background and Motivation2 Related Work3 Advantages / Contributions4 DropBlock5 Experiments5.1 ImageNet Classification5.1.1 DropBlock in ResNet-505.1.2 DropBlock in AmoebaNet5.2 Experimental Analysis5.3 Object Detection in COCO5.4 Seman…

vue3新特性 Ⅱ

setup&#xff08;&#xff09;中使用生命周期函数 在生命周期钩子前加上on来访问 并且需要保持小驼峰的命名方式&#xff0c;setup中的生命周期函数不包括beforeCreate和created。 onMounted&#xff1a;比以前的mounted有优势&#xff0c;以前生命周期函数只能存在一个&#…

发布新闻稿必须了解的几个问题

随着移动互联网的到来&#xff0c;有些企业把营销重心转移到了抖音小红书等新媒体&#xff0c;而传统的媒体营销被一些企业抛在脑后&#xff0c;其实小马识途认为媒体营销是信息源&#xff0c;其实是不可以放弃的&#xff0c;至少要有一定量的布局。 简单来说&#xff0c;新闻媒…

需要多久才能看完linux内核源码?

代码中自由颜如玉&#xff01; 代码中自有黄金屋&#xff01; 那么Linux内核代码到底有多少行&#xff1f; 我们需要多久能读完呢&#xff1f; 一、内核行数 Linux内核分为CPU调度、内存管理、网络和存储四大子系统&#xff0c;针对硬件的驱动成百上千。代码的数量更是大的…

kafka详解及集群环境搭建

一、kafka详解 安装包下载地址&#xff1a;https://download.csdn.net/download/weixin_45894220/87020758 1.1Kafka是什么&#xff1f; 1、Kafka是一个开源消息系统&#xff0c;由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目&#xff0c;该项目的目标是为处…

Servlet

1.Servlet是什么 Servlet是java语言编写的运行在服务器端的程序Servlet是javaEE规范之一&#xff0c;规范就是接口Servlet是JavaWeb三大组件之一&#xff0c;三大组件分别是&#xff1a;Servlet&#xff0c;Filter&#xff0c;Listener2.Servlet干什么 Servlet接受客户端发来…

G - Damaged Bicycle 状压+最短路,D-七圣召唤_概率dp

G - Damaged Bicycle 状压最短路 最短路处理出1号节点和带车子的点到n的距离dist[x][n],G可以从节点1直接走到n&#xff0c;也可以从节点1走到带车子的节点再骑到n&#xff0c;如果车子坏了可以走到n&#xff0c;也可以走到下一个车子节点再进行之前的步骤&#xff0c;所以可以…

React源码解读之React Fiber

开始之前&#xff0c;先讲一下该文章能帮你解决哪些问题&#xff1f; facebook为什么要使用重构ReactReact Fiber是什么React Fiber的核心算法 - react是如何中断重启任务的react fiber部分源码简化版 前言 该文章涉及的源码部分基于React v17.0.2 why React Fiber 浏览器…

Go 语言搭建个人博客(qiucode.cn 重构篇 二)

1、MVC模式 MVC模式是一种 WEB 长期累积的总结,但这并不是唯一模式。 对于 MVC 模式,想必有过搭建 WEB 项目的开发者并无陌生。 服务器端负责将客户端发送过来的 HTTP 请求,进行处理(处理器),解析路由(Route),而后把 URL 映射到对应的控制器(Controller)。 MVC …

智慧公路解决方案-最新全套文件

智慧公路解决方案-最新全套文件一、建设背景二、思路架构三、建设方案1、智慧路产管理2、智慧基础设施3、智慧信息服务4、智慧交通管控5、智慧系统平台6、智慧辅助决策四、获取 - 智慧公路全套最新解决方案合集一、建设背景 交通出行主要面临的痛点是安全和拥堵&#xff0c;而…

算法与数据结构 - 散列表

文章目录引言一、散列表概述1.1 哈希函数1.2 散列表二、算法实战2.1 两数之和题目题解1. 暴力破解2. hash表结语点赞再看,养成习惯引言 某日,韩梅梅和李雷来到一家新开的网红图书馆借阅书籍。 韩梅梅&#xff1a; 李雷&#xff0c;快来帮我找下《数据结构从入门到放弃》 李雷看…

测试项目(MSTest)中涉及到读取App.config 操作(.net6)

文章目录环境问题排查过程查看Nuget包是否正确查看配置文件是否正确解决办法&#xff08;手动&#xff09;解决办法&#xff08;自动&#xff09;为什么是这样的呢&#xff1f;环境 VS2022MSTest项目.Net6版本 问题 在测试过程中发现读取App.config中的连接字符串是null&…

颜色杂项笔记

面向用户的HSV颜色模型的三个属性 面向用户的颜色模型HSV&#xff0c;有如下几个属性 Hue&#xff08;色度、色调、色相&#xff09;&#xff1a;描述具体颜色&#xff0c;比如红、蓝、黄、绿等&#xff0c;可以理解为color的专业说法。 Saturation&#xff08;饱和度&#xff…

红帽8使用nfs共享本地镜像

实验环境 FFF-server 192.168.80.100 SSS-client 192.168.80.254 实验前提关闭selinux和防火墙 第一步在开始之前我们可以先看一下nfs-server本地上的一个镜像挂载情况。如图1. 可以看到本地镜像已经被挂载上去。 第二步我们继续看一下server的yum仓库是否已经成功配置。如…

公布一小时下载量达10W:京东T5级架构师出品高并发核心编程手册

高并发有多重要&#xff1f; 高并发面试已经成了各大厂面试必问的题目&#xff0c;尤其是阿里、京东这样的大厂&#xff0c;面试的时候会往深了去问&#xff0c;可以说是你能回答出多少&#xff0c;你拿到大厂offer的概率就有多大&#xff01; 因高并发的问题回答不上来的案例…

采购软件能否降低企业采购成本?如何实现的?

在如今的疫情影响下&#xff0c;降低成本一直是企业决策者的主要目标之一&#xff0c;在采购领域尤其如此。而很多企业在销售业绩下滑时&#xff0c;纷纷通过采购软件来降低采购成本从而提升利润&#xff0c;达到了不可思议的效果。那么采购软件能否降低企业采购成本&#xff1…