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>

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

kubectl drain <node-name>

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

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

kubectl cordon <node-name> --ignore-daemonsets

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

kubectl uncordon <node-name>

在阿里云的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

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
20天前
|
Kubernetes 网络协议 应用服务中间件
K8S二进制部署实践-1.15.5
K8S二进制部署实践-1.15.5
31 0
|
28天前
|
存储 Kubernetes Docker
容器服务ACK常见问题之阿里云控制台进不去了如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
2月前
|
人工智能 运维 Kubernetes
阿里云容器服务ACK AI助手正式上线带来的便利性
作为开发者想必大家都知道,云原生容器技术的优势,尤其是近两年的随着容器技术的迅猛发展,Kubernetes(K8s)已成为广泛应用于容器编排和管理的领先解决方案,但是K8s的运维复杂度一直是挑战之一。为了应对这一问题,就在最近,阿里云容器服务团队正式发布了ACK AI助手,这是一款旨在通过大模型增强智能诊断的产品,旨在帮助企业和开发者降低Kubernetes(K8s)的运维复杂度。那么本文就来详细讲讲关于这款产品,让我们结合实际案例分享一下K8s的运维经验,探讨ACK AI助手能否有效降低K8s的运维复杂度,并展望ACK AI助手正式版上线后的新功能。
264 2
阿里云容器服务ACK AI助手正式上线带来的便利性
|
30天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群监控与日志管理实践
【2月更文挑战第29天】 在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。然而,随着集群规模的扩大和业务复杂度的提升,有效的监控和日志管理变得至关重要。本文将探讨构建高效 Kubernetes 集群监控系统的策略,以及实施日志聚合和分析的最佳实践。通过引入如 Prometheus 和 Fluentd 等开源工具,我们旨在为运维专家提供一套完整的解决方案,以保障系统的稳定性和可靠性。
|
3月前
|
Web App开发 Kubernetes 数据可视化
Kubernetes Dashboard 可视化插件部署 博主亲自实践可用
Kubernetes Dashboard 可视化插件部署 博主亲自实践可用
51 0
|
5天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
11 4
|
17天前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
14 0
|
25天前
|
消息中间件 Cloud Native 网络安全
云原生最佳实践系列 3:基于 SpringCloud 应用玩转 MSE
该文档介绍了基于云原生应用的产品构建的微服务架构实践。
|
28天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理实践
【2月更文挑战第31天】 在微服务架构日益普及的今天,容器编排工具如Kubernetes已成为部署、管理和扩展容器化应用的关键平台。然而,随着集群规模的扩大和业务复杂性的增加,如何有效监控集群状态、及时响应系统异常,以及管理海量日志信息成为了运维人员面临的重要挑战。本文将深入探讨 Kubernetes 集群监控的最佳实践和日志管理的高效策略,旨在为运维团队提供一套系统的解决思路和操作指南。
26 0
|
1月前
|
Kubernetes 云计算 开发者
云计算中的容器化技术:Docker与Kubernetes的实践
云计算中的容器化技术:Docker与Kubernetes的实践
72 0

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多