![4a5577137cd61f417cc97dcefe3e9de9.png](https://i-blog.csdnimg.cn/blog_migrate/4fc6bc406554ceca43f24f1cd7f32626.jpeg)
前言
k8s部署springcloud实际落地操作 在我的这篇文章中,我介绍了工作中实际落地的方案,大家都很感兴趣,想要更详细地介绍,这里我在本地用minikube给大家做一个演示。
演示的最终效果如下图,把网关部分和ingress去掉了,这里只演示核心,写了一个提供者和一个消费者,然后把他们注册到外部到注册中心nacos中,然后浏览器访问消费者的时候,消费者用注册中心获取的服务名远程去访问提供者的数据。
同时还会演示nacos配置中心动态修改配置文件的效果。从而达到了,k8s只部署应用服务的目的,而公共组件,数据库,配置中心,中间件等放到k8s外面部署。
具体为什么这样搞可以看我的这篇k8s部署springcloud实际落地操作文章,我认为对于我们来说是最适合的方案了。
![3ff49c23b449bf28c33cef78e3552626.png](https://i-blog.csdnimg.cn/blog_migrate/5a85f1fdf3d55aea40acf55aa3237e65.jpeg)
准备工作
minikube:我这里的演示环境用的minikube。相当于你们的k8s的部署环境
为了方便大家开发和体验Kubernetes,提供了可以在本地部署的Minikube,minikube安装部署方便,功能和真实环境的Kubernetes功能是一样的。
docker:编译和上传应用程序镜像需要用它,相关于你自己的开发环境。
镜像仓库:镜像仓库用来上传打包好的镜像,然后在其他服务器上可以pull下来,我的镜像仓库中心直接用的docker hub官方的。你可以用阿里的或者私有docker中心。
我的演示电脑是mac
springcloud微服务k8s部署
代码说明
这里先看下provider以及consumer核心代码,如下:
provider的controller代码:
@RestController@Slf4j//实时更新配置中心的配置项@RefreshScopepublic class MainController {//注入配置文件中的配置项,从nacos配置中心实时拉取 @Value("${test}") private String test; @GetMapping("helloK8s") public String helloK8s() { String ip = getIp(); System.out.println(test); return "provider--helloK8s test:"+test+" ip: "+ip; } //获取本机ip地址 private String getIp(){ InetAddress ia=null; try { ia=InetAddress.getLocalHost(); String localname=ia.getHostName(); String localip=ia.getHostAddress(); System.out.println("本机名称是:"+ localname); System.out.println("本机的ip是 :"+localip); return localip; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return ""; }}
consumer的controller代码:
@RestController@Slf4j//实时更新配置中心的配置项@RefreshScopepublic class ConsumerController { @Autowired private RestTemplate restTemplate; //注入配置文件中的配置项,从nacos配置中心实时拉取 @Value("${test}") private String test; @GetMapping("/echo/appName") public String echoProviderName(){ //通过nacos注册中心中的服务名firs