探讨基于阿里云容器技术架构(二)

简介: 本篇我们根据上篇架构图,尝试实战部署之旅,并且探讨可能遇到的坑 。

阅读本篇需要具备 Kubernetes 知识和 kubectl 工具基本使用。

上一篇介绍了整体架构图,接下来的文章我们围绕架构图部署应用,本篇我们主要介绍网关的部署方式以、所需要的资源介绍以及可能会遇到的坑,不会对细节进行过多的描述,比如如何打包 docker 镜像等,因为我们不打算写一个从零开始的长而冗余的教程,浪费各位宝贵的阅读时间。部署中遇到问题直接在文章中评论,我会回复。

网关

代码简单主要起到说明作用,所以不做代码讲解了。源码托管在GitHub:https://github.com/Tony-Hangzhou/mvp-samples

网关职责是封装内部服务,对外提供统一API访问,当然也可以加入鉴权和授权的职责。所以网关的网络通讯要求是既要提供给Kubernetes外部访问的入口,又要把请求路由到内部服务(相当于反向代理)。

ZuulApplication.java

@EnableZuulProxy
@SpringBootApplication
public class ZuulApplication {

 
 public static void main(String[] args) {    
     SpringApplication.run(ZuulApplication.class, args);    
 }    
 

}

application.yml

spring:
application:

 name: api-gateway    
 

zuul:
routes:

 user-service:    
   path: /users/**    
   url: http://localhost:8081    
   strip-prefix: false    
 
 order-service:    
   path: /orders/**    
   url: http://localhost:8082    
   strip-prefix: false    
 

management:
endpoints:

 web:    
   exposure:    
     include: routes  

部署拓扑图

根据前篇介绍的架构图,我们的应用部署图如下,应用部分由网关(Zuul)、Foo、Bar组成。部署所需要的资源阿里云Kubernetes集群、阿里云SLB以及阿里云镜像托管Docker镜像。

image.png

资源准备

阿里云 Kubernetes

申请一个阿里云 Kubernetes 集群,Master 节点默认3个,Node 节点至少一个。

SLB

Kubernetes 暴露 Service 给外部访问有多种方式,我们这里选择 LoadBalancer 方式。阿里云 Kubernetes 支持阿里云 SLB 作为 LoadBalancer,而且支持阿里云内网和外网 SLB 。

  • 外网

service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet

service.beta.kubernetes.io/alicloud-loadbalancer-id: ***  
  • 内网

service.beta.kubernetes.io/alicloud-loadbalancer-address-type: intranet

service.beta.kubernetes.io/alicloud-loadbalancer-id: ***

阿里云镜像

阿里云镜像为 Docker 镜像提供了托管服务,省掉自己搭建镜像服务器和维护的成本。

避坑指南

  • Pod IP
    原生 Kubernetes Pod IP 是内部IP,外部是无法访问的。阿里云 Kubernetes 通过 CNI 接口,自定义了网络部分的实现,他的 Pod IP 实际上是阿里云内网IP,Kubernetes 外部是可以访问的,但是熟悉 Kubernetes 同学知道这个 IP 随着Pod 被调度是回变化的,所以一定不要使用 Pod IP 直接访问,而是通过 Service 访问。
  • SLB
    Kubernetes 基于申明的方式部署服务,所以我们有一个 gateway-deploy.yaml,然后通过 kubectl 客户端做部署操作。尽可能使用命令 kubectl apply -f gateway-depoy.yaml 操作。避免使用 kubectl delete 和 kubectl create 组合操作,阿里云 SLB 会出现无法绑定到 NodePort 情况,从而造成通过 SLB 无法访问服务。
  • namespace
    避免 namespace 使用中短横线如:service-core。Kubernetes 内部服务使用 DNS 域名访问,如:foo.service-core,会出现通过该域名无法访问情况。去掉短横线或者通过 Service ClusterIP 即可访问,还有一种办法使用 foo.service-core.svc 或者全域名 foo.service-core.svc.cluster.local 也可访问。问题可能是 Kubernetes 短域名解析Bug,具体原因不明,请路过的高手指点一二。

主要操作

1、编写部署文件 gateway-deploy.yaml ,源代码见GitHub:https://github.com/Tony-Hangzhou/mvp-samples
2、打包 Docker 镜像
3、上传镜像到阿里云镜像服务器
4、使用 kubectl apply 命令部署服务

总结

本篇介绍了网关部署以及可能遇到的坑。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
8月前
|
存储 数据挖掘 BI
2-5 倍性能提升,30% 成本降低,阿里云 SelectDB 存算分离架构助力波司登集团实现降本增效
波司登集团升级大数据架构,采用阿里云数据库 SelectDB 版,实现资源隔离与弹性扩缩容,查询性能提升 2-5 倍,总体成本降低 30% 以上,效率提升 30%,助力销售旺季高效运营。
500 9
|
8月前
|
存储 弹性计算 运维
AI时代下阿里云基础设施的稳定性架构揭秘
计算、存储、网络作为云计算基础 IaaS 服务,一直是阿里云的核心产品,承载着百万客户的 IT 基础设施。曾经我们认为应用高可用、服务分布式可以满足客户对 IaaS 所有的稳定性诉求。
1009 2
AI时代下阿里云基础设施的稳定性架构揭秘
|
7月前
|
人工智能 Cloud Native 安全
解读阿里云刚发布的《AI 原生应用架构白皮书》
阿里云在云栖大会重磅发布了《AI 原生应用架构白皮书》,该白皮书覆盖 AI 原生应用的 11 大关键要素,获得业界 15 位专家联名推荐,来自 40 多位一线工程师实践心得,全书合计超 20w 字,分为 11 章,全面、系统地解构 AI 原生应用架构,包含了 AI 原生应用的 11 大关键要素,模型、框架、提示词、RAG、记忆、工具、网关、运行时、可观测、评估和安全。本文整理自阿里云智能技术专家李艳林在云栖大会现场的解读。
2599 70
|
7月前
|
人工智能 缓存 安全
阿里云发布《AI 原生应用架构白皮书》
阿里云联合阿里巴巴爱橙科技,共同发布《AI 原生应用架构白皮书》,围绕 AI 原生应用的 DevOps 全生命周期,从架构设计、技术选型、工程实践到运维优化,对概念和重难点进行系统的拆解,并尝试提供一些解题思路。白皮书覆盖 AI 原生应用的 11 大关键要素,获得 15 位业界专家联名推荐,来自 40 多位一线工程师实践心的,全书合计超 20w 字,分为 11 章。
3651 63
|
6月前
|
人工智能 缓存 安全
阿里云发布《AI 原生应用架构白皮书》!
阿里云联合爱橙科技发布《AI原生应用架构白皮书》,系统解析AI应用在架构设计、开发运维中的关键挑战与解决方案,涵盖大模型、Agent、RAG、安全等11大核心要素,助力企业构建稳定、高效、可控的AI应用体系。
阿里云发布《AI 原生应用架构白皮书》!
|
7月前
|
存储 人工智能 关系型数据库
阿里云AnalyticDB for PostgreSQL 入选VLDB 2025:统一架构破局HTAP,Beam+Laser引擎赋能Data+AI融合新范式
在数据驱动与人工智能深度融合的时代,企业对数据仓库的需求早已超越“查得快”这一基础能力。面对传统数仓挑战,阿里云瑶池数据库AnalyticDB for PostgreSQL(简称ADB-PG)创新性地构建了统一架构下的Shared-Nothing与Shared-Storage双模融合体系,并自主研发Beam混合存储引擎与Laser向量化执行引擎,全面解决HTAP场景下性能、弹性、成本与实时性的矛盾。 近日,相关研究成果发表于在英国伦敦召开的数据库领域顶级会议 VLDB 2025,标志着中国自研云数仓技术再次登上国际舞台。
749 1
|
7月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
760 2
|
7月前
|
存储 分布式计算 资源调度
【赵渝强老师】阿里云大数据MaxCompute的体系架构
阿里云MaxCompute是快速、全托管的EB级数据仓库解决方案,适用于离线计算场景。它由计算与存储层、逻辑层、接入层和客户端四部分组成,支持多种计算任务的统一调度与管理。
596 1