Springcloud应用在阿里云Kubernetes上的IP互通实践

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Springcloud在阿里云的kubernetes上IP互通的实践

问题

在应用微服务化方案中,Springcloud是比较常见的选择,毕竟其对于Java 的程序员来说比较友好,基于Springboot的编程方式也使得门槛比较低。但是在将Springcloud的应用运行到Kubernetes容器化平台的时候,对于集群外的Client要访问集群内的服务就变得不是那么容易了。因为通常的Kubernetes部署有以下约束:

  • POD的IP段是独立的IP段,对于集群外的机器是不可访问
  • Springcloud的服务做服务注册的时候,注册的是POD的IP
  • Springcloud的客户端从Eureka上获取服务的IP是POD的IP,从而造成集群外机器访问该POD的IP是不通的。

解决方案

方案一: Host network

部署的时候,以host network的方式部署Springcloud的服务应用。这个方式虽然简单,但是其利用的是port mapping的方式,在同一个node节点部署多个实例时,容易造成端口冲突的问题,在kubernetes环境下,一般不建议使用

方案二:Bridge network/Macvlan/Vlan

利用CNI的bridge/Macvlan网络模式,或者是网络插件的Vlan模式(如Contiv),将POD的IP段设置成与主机IP段在同一个段内 ,通过配置交换机的路由,使其能够互访。
但是这里面有一定的局限性,特别是在公有云上,是无法在虚拟网络里再构建这些二层网络的。

方案三:将集群外的机器也纳入集群内管理,但是不运行POD(建议)

依然是将POD的IP段设置为独立的IP段,和主机IP段隔离。但是将集群外的机器,也纳入集群内:安装对应的kubectl, kubeproxy。这样在这台机器是可以直接访问POD的IP的。为了不让这些机器接受调度请求而运行对应的POD,需要认为将这些机器设置为非容器调度节点就可:

kubectl cordon <node-name>
AI 代码解读

如果不小心在上面已经了POD,则可以将这些POD驱离:

kubectl drain <node-name>
AI 代码解读

被驱离的node节点会显示SchedulingDisabled的状态:
Snip20180625_59

需要注意的是,可能某些DaemonSet已经在上面运行POD(如flexvolume, kube-proxy等),则忽略就可。这些DaemonSet通常占用资源很少,无需担忧起损耗

kubectl cordon <node-name> --ignore-daemonsets
AI 代码解读

如果在合适的时候,觉得这个node节点也可以加入kubernetes集群,则一条命令就搞定了:

kubectl uncordon <node-name>
AI 代码解读

在阿里云的kubernetes服务中,建议采用这种方式运行。

一个具体例子:

  • 在阿里云上通过Kubernetes容器服务,构建一个3 master+3 node的集群用来运行Springcloud的服务。
  • 部署Eureka服务到Kubernetes集群中,可以参考扩展阅读部分的章节(也可以部署在Kubernetes集群外)
  • 将要在集群外部署不是容器的Springcloud的客户端程序所在的ECS通过Kubernetes集群添加现有云服务器的方式纳入集群管理(注意,这些ECS必须和Kubernetes集群的ECS在同一个VPC)

image

  • 成功添加后,再将该机器设置为非调度节点即可
  • 部署Springcloud的客户端程序

如果特殊情况的确需要将POD的IP段设置成ECS主机所在的VPC的一个段内,则需要特殊处理,请咨询对应的阿里云的服务同学。但是不建议该模式。

扩展阅读

更多Springcloud在kubernetes的实践,可以参考osswangxining同学的系列文章:

第一篇:分布式服务注册与发现系统
第二篇:分布式配置管理系统
第三篇:API网关服务Zuul 系统
第四篇:分布式追踪系统
第五篇:分布式弹性服务与容错处理框架Hystrix及其监控仪表板
第六篇:熔断器聚合监控Hystrix Turbine

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
0
0
0
78360
分享
相关文章
阿里云飞天企业版获【可信云·容器平台安全能力】先进级认证
阿里云飞天企业版容器系列产品获中国信息通信研究院【可信云·容器平台安全能力】先进级认证,这是飞天企业版容器产品获得《等保四级PaaS平台》和《 云原生安全配置基线规范V2.0》之后,本年度再一次获得行业权威认可,证明飞天企业版的容器解决方案具备符合行业标准的最高等级容器安全能力。
阿里云飞天企业版获【可信云·容器平台安全能力】先进级认证
GitLab Runner 全面解析:Kubernetes 环境下的应用
GitLab Runner 是 GitLab CI/CD 的核心组件,负责执行由 `.gitlab-ci.yml` 定义的任务。它支持多种执行方式(如 Shell、Docker、Kubernetes),可在不同环境中运行作业。本文详细介绍了 GitLab Runner 的基本概念、功能特点及使用方法,重点探讨了流水线缓存(以 Python 项目为例)和构建镜像的应用,特别是在 Kubernetes 环境中的配置与优化。通过合理配置缓存和镜像构建,能够显著提升 CI/CD 流水线的效率和可靠性,助力开发团队实现持续集成与交付的目标。
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
319 167
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
ACK One注册集群已正式支持ACS(容器计算服务)算力,为企业的容器化工作负载提供更多选择和更强大的计算能力。
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云ACK+GitLab企业级部署实战教程
GitLab 是一个功能强大的基于 Web 的 DevOps 生命周期平台,整合了源代码管理、持续集成/持续部署(CI/CD)、项目管理等多种工具。其一体化设计使得开发团队能够在同一平台上进行代码协作、自动化构建与部署及全面的项目监控,极大提升了开发效率和项目透明度。 GitLab 的优势在于其作为一体化平台减少了工具切换,高度可定制以满足不同项目需求,并拥有活跃的开源社区和企业级功能,如高级权限管理和专业的技术支持。借助这些优势,GitLab 成为许多开发团队首选的 DevOps 工具,实现从代码编写到生产部署的全流程自动化和优化。
ACK容器监控存储全面更新:让您的应用运行更稳定、更透明
介绍升级之后的ACK容器监控体系,包括各大盘界面展示和概要介绍。
微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
本文基于Spring Cloud实现了一个简化的抖音推荐系统,涵盖用户行为管理、视频资源管理、个性化推荐和实时数据处理四大核心功能。通过Eureka进行服务注册与发现,使用Feign实现服务间调用,并借助Redis缓存用户画像,Kafka传递用户行为数据。文章详细介绍了项目搭建、服务创建及配置过程,包括用户服务、视频服务、推荐服务和数据处理服务的开发步骤。最后,通过业务测试验证了系统的功能,并引入Resilience4j实现服务降级,确保系统在部分服务故障时仍能正常运行。此示例旨在帮助读者理解微服务架构的设计思路与实践方法。
108 17
Spring Cloud Alibaba AI 入门与实践
本文将介绍 Spring Cloud Alibaba AI 的基本概念、主要特性和功能,并演示如何完成一个在线聊天和在线画图的 AI 应用。
380 7
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。

热门文章

最新文章

相关产品

  • 容器服务Kubernetes版