灵活调度,高效编排,容器化管理云上应用
手动部署
90
https://www.aliyun.com/solution/tech-solution/ack-services
方案概览
本方案旨在通过基于阿里云容器服务Kubernetes版(ACK)实现微服务的部署,借助容器技术和Kubernetes的强大功能,实现资源的高效利用、更高扩展性和弹性、快速迭代部署及DevOps流程优化,从而全面提升业务灵活性与竞争力。通过本方案,企业能够实现应用部署的容器化转型,提升运维效率、优化资源利用,并加速业务创新步伐,为企业的数字化升级奠定坚实基础。
方案架构
本方案介绍如何基于ACK,实现微服务应用部署,提升运维效率、优化资源利用,加速业务创新和市场响应速度。实际部署时您可以根据资源规划修改部分设置,但最终形成的运行环境与下图相似。
模拟应用服务对外提供 APIa
和APIb
,APIa
依赖APIb
。APIb
返回服务名称以及一个UUID;APIa
返回服务名称和一个UUID以及通过HTTP请求的APIb
的返回值。
本方案的技术架构包括以下基础设施和云服务:
1个专有网络VPC:为应用型负载均衡ALB、云服务器ECS、阿里云容器服务Kubernetes版ACK集群等云资源构建云上私有网络
2台交换机:使多可用区的3台云服务器ECS、阿里云容器服务Kubernetes版ACK集群和应用型负载均衡ALB能够在同一网络上进行通信,并提供基本的网络分段和隔离功能。
1个公网应用型负载均衡ALB:对外提供访问,作为ACK集群的Ingress实现。
1个阿里云容器服务Kubernetes版ACK集群
3台云服务器ECS:用于部署模拟应用服务,为ACK使用。
部署准备
10
开始部署前,请按以下指引完成账号申请、账号充值。
准备账号
规划网络和资源
5
网络规划
规划项 | 数量 | 说明 |
地域 | 1 | 您的云服务部署的地域。选择地域的基本原则请参见地域和可用区。 |
专有网络VPC | 1 | 在部署过程中新建一个VPC作为本方案的专有网络。 |
交换机 | 2 | 本方案需要至少2台交换机,用来连接不同的云资源实例。 |
应用型负载均衡ALB | 1 | 阿里云容器服务Kubernetes版ACK集群创建Ingress时,自动创建。 |
弹性公网IP | 1 | 阿里云容器服务Kubernetes版ACK集群创建Ingress时,自动为应用型负载均衡ALB实例创建1个弹性公网IP。 |
安全组 | 1 | 用于限制专有网络VPC下云服务器ECS和其他资源的网络流入和流出规则。 |
规划云资源
规划项 | 数量 | 说明 |
云服务器ECS | 3 | 本方案需要3台云服务器ECS实例,为ACK集群使用。 |
阿里云容器服务Kubernetes版ACK集群 | 1 | 本方案需要1个阿里云容器服务Kubernetes版ACK集群,用于同时运行3个API服务。 |
创建ACK集群
30
规划好资源后,请按照以下步骤部署方案中的所有资源。
创建专有网络VPC和交换机
您需要创建1个专有网络和2个交换机。
登录专有网络管理控制台。
在顶部菜单栏,选择华东1(杭州)地域。
在左侧导航栏,单击专有网络。
在专有网络页面,单击创建专有网络。
在创建专有网络页面,配置1个专有网络和2台交换机。配置交换机时,请确保交换机所属的可用区的ECS、ALB是可用状态。
分类
项目
说明
示例值
VPC
VPC名称
建议您在部署过程中新建一个VPC作为本方案的专有网络。在部署过程中填写VPC名称即可创建对应名称的VPC。
长度为2~128个字符,以英文大小写字母或中文开头,可包含数字、下划线(_)和连字符(-)。
vpc_ecs_ack_test
IPv4网段
在创建VPC时,您必须按照无类域间路由块(CIDR block)的格式为您的专有网络划分私网网段。阿里云VPC支持的网段信息请参见组成部分。
在网络规划时可以按照管理网段-开发网段-测试网段-生产网段等规则做好规划。网段一旦投入使用,调整过程复杂,因此规划十分重要。
192.168.0.0/16
交换机
vSwitch名称
建议您在部署过程中在新建的VPC内创建虚拟交换机。在部署过程中填写交换机名称即可创建对应名称的虚拟交换机。
长度为2~128个字符,以英文大小写字母或中文开头,可包含数字、下划线(_)和连字符(-)。
可用区 J
vsw_ecs_ack_test_j
可用区 K
vsw_ecs_ack_test_k
可用区
在规划的地域内选择2个可用区,2台虚拟交换机分别部署在2个可用区。
建议选择排序靠后的,一般此类可用区较新。新可用区资源更充沛,新规格也会在新的可用区优先上线。
可用区 J
可用区 K
IPv4网段
每台虚拟交换机需要一个IPv4网段
可用区 J
192.168.1.0/24
可用区 K
192.168.2.0/24
创建安全组
您已经在1个专有网络VPC下的2个可用区分别创建1台交换机。接下来您需要创建1个安全组,用于限制该专有网络VPC下的1台交换机的网络流入和流出。
在左侧导航栏,选择网络与安全>安全组。
在顶部菜单栏,选择华东1(杭州)地域。
在安全组页面,单击创建安全组。
在创建安全组页面,创建1个安全组。
项目
说明
示例值
名称
设置安全组的名称。
sg_ecs_ack_test
网络
选择之前规划的专有网络VPC。
vpc_ecs_ack_test
安全组类型
本方案需从公网拉取博客网站服务镜像,因此选择普通安全组,以实现公网出方向所有地址可访问。实际部署时,建议您选择安全性更高的企业级安全组。
普通安全组
入方向
入方向除默认的端口号外,本方案还需添加8080端口号。
8080
创建ACK集群
您已经创建1个专有网络VPC。接下来您需要在2个可用区分别创建3个云服务器ECS实例,来实现服务跨可用区的高可用。
登录容器服务ACK管理控制台。
在左侧导航栏,选择集群,点击右上角创建集群按钮。
在创建集群的集群配置页面,配置一个ACK托管版集群:
项目
说明
示例值
集群
长度为1~63个字符,可包含数字、下划线(_)或中划线(-),需以英文大小写字母、中文或数字开头
ecs_ack_test
地域
ACK集群所在地域
华东1(杭州)
专有网络
使用原先创建的专有网络即可
vpc_ecs_ack_test
专有网络交换机vSwitch
使用原先创建的vSwitch即可
可用区 J
vsw_ecs_ack_test_j
可用区 K
vsw_ecs_ack_test_k
Pod虚拟交换机
使用原先创建的vSwitch即可
可用区 J
vsw_ecs_ack_test_j
可用区 K
vsw_ecs_ack_test_k
其他选项保持默认即可。进入下一步:节点池配置。
在创建集群的节点池配置页面,配置一个ACK托管版集群节点池:
项目
说明
示例值
实例规格
选择集群节点所需节点规格
ecs.u1-c1m2.xlarge
期望节点数
如遇到“请先授权 CS 获取云资源的权限”字样的提示,点击显示为
AliyunOOSLifecycleHook4CSRole
的链接进行授权操作。新页面授权完成后,回到当前页面点击重新检查,重复上述操作直到重新检查按钮消失。3
系统盘
配置节点系统盘大小。
ESSD云盘
120GiB
操作系统
Alibaba Cloud Linux 3.2104
安全加固
阿里云OS加固
登录方式
可使用登录ECS服务器的密码。8~30 个字符,且同时包含三项(大写字母、小写字母、数字和特殊符号)
password***(请勿直接使用,请自行生成新密码)
其他选项保持默认即可。进入下一步:组件配置。
在创建集群的组件配置页面,配置各类组件:
项目
说明
示例值
Ingress
是否配置集群Ingress
选择ALB Ingress
ALB云原生网关实例来源选择暂不创建
容器监控
是否使用阿里云可观测监控Prometheus版。在解决方案演示环节可以取消勾选,生产场景中请根据实际情况选择。
取消勾选
成本套件
是否开启ACK成本套件-成本洞察功能。在解决方案演示环节可以取消勾选,生产场景中请根据实际情况选择。
取消勾选
集群巡检
是否使用集群巡检定时扫描集群状态,识别潜在风险。在解决方案演示环节可以取消勾选,生产场景中请根据实际情况选择。
取消勾选
其他选项保持默认即可。进入下一步:确认配置。
在创建集群的确认配置页面,检查各项配置是否如预期设定。在依赖检查部分,如果遇到未通过状态,跟随说明部分进行处理。例如需要授权角色权限的,跟随引导到新页面完成授权,完成后回到当前页面点击重新检查,直到状态变为通过。
所有配置符合预期,依赖检查全部通过后,请阅读并确认服务条款与免责声明,随后点击创建集群,开始等待集群创建完成。Kubernetes 集群创建需要约 10 分钟,您可以跳转到集群列表查看状态。
等待约10分钟并刷新,直到列表中的集群状态变为运行中。
应用部署
25
创建无状态工作负载(Deployment)
完成运行前的准备工作后,需要创建多个服务的无状态工作负载(Deployment),用于承载原测试应用中的各个服务。
登录容器服务ACK管理控制台。
在左侧导航栏,选择集群,点击创建的
ecs_ack_test
集群,点击名称开始操作。在左侧导航栏,选择节点管理,在展开的菜单中选择节点,查看各个节点是否处于就绪状态,如有节点不是就绪状态,等待1分钟后刷新,直至所有节点处于就绪状态。
在左侧导航栏,选择工作负载,在展开的菜单中选择无状态,点击右上角使用YAML创建资源,在新页面中的模板输入框中填入如下内容:
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: ecs-ack-test-service-a labels: app: ecs-ack-test-service-a spec: replicas: 2 selector: matchLabels: app: ecs-ack-test-service-a template: metadata: labels: app: ecs-ack-test-service-a spec: initContainers: - name: download-jar image: dragonwell-registry.cn-hangzhou.cr.aliyuncs.com/dragonwell/dragonwell:8-alinux command: - "/bin/sh" - "-c" - "curl -o /app/app.jar https://help-static-aliyun-doc.aliyuncs.com/tech-solution/MicroServiceOnAckDemo-1.0.1.jar && echo 'Download jar OK!'" volumeMounts: - name: app-jar mountPath: /app containers: - args: - '-DbHost=http://ecs-ack-test-service-b:8080' - '-jar' - '/app/app.jar' command: - java name: ecs-ack-test-service-a image: dragonwell-registry.cn-hangzhou.cr.aliyuncs.com/dragonwell/dragonwell:8-alinux ports: - containerPort: 8080 resources: limits: cpu: '2' ephemeral-storage: 40Gi memory: 2Gi requests: cpu: '1' ephemeral-storage: 20Gi memory: 1Gi volumeMounts: - name: app-jar mountPath: /app volumes: - name: app-jar emptyDir: {}
点击创建
ecs-ack-test-service-a
。在左侧导航栏,选择工作负载,在展开的菜单中选择无状态,等待约1分钟点击右上角刷新图标按钮,查看
ecs-ack-test-service-a
是否创建成功,当容器组数量显示为2/2
,并且没有其他错误信息时,可以认为ecs-ack-test-service-a
创建成功。在左侧导航栏,选择工作负载,在展开的菜单中选择无状态,点击右上角使用YAML创建资源,在新页面中的模板输入框中填入如下内容:
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: ecs-ack-test-service-b labels: app: ecs-ack-test-service-b spec: replicas: 2 selector: matchLabels: app: ecs-ack-test-service-b template: metadata: labels: app: ecs-ack-test-service-b spec: initContainers: - name: download-jar image: dragonwell-registry.cn-hangzhou.cr.aliyuncs.com/dragonwell/dragonwell:8-alinux command: - "/bin/sh" - "-c" - "curl -o /app/app.jar https://help-static-aliyun-doc.aliyuncs.com/tech-solution/MicroServiceOnAckDemo-1.0.1.jar && echo 'Download jar OK!'" volumeMounts: - name: app-jar mountPath: /app containers: - args: - '-DbHost=http://ecs-ack-test-service-b:8080' - '-jar' - '/app/app.jar' command: - java name: ecs-ack-test-service-b image: dragonwell-registry.cn-hangzhou.cr.aliyuncs.com/dragonwell/dragonwell:8-alinux ports: - containerPort: 8080 resources: limits: cpu: '2' ephemeral-storage: 40Gi memory: 2Gi requests: cpu: '1' ephemeral-storage: 20Gi memory: 1Gi volumeMounts: - name: app-jar mountPath: /app volumes: - name: app-jar emptyDir: {}
点击创建
ecs-ack-test-service-b
。在左侧导航栏,选择工作负载,在展开的菜单中选择无状态,等待约1分钟点击右上角刷新图标按钮,查看
ecs-ack-test-service-b
,当容器组数量显示为2/2
,并且没有其他错误信息时,可以认为ecs-ack-test-service-a
与ecs-ack-test-service-b
创建成功。
添加服务(Service)
在左侧导航栏,选择网络,在展开的菜单中选择服务,点击右上角使用YAML创建资源,在新页面中的模板输入框中填入如下内容:
apiVersion: v1
kind: Service
metadata:
name: ecs-ack-test-service-a
spec:
selector:
app: ecs-ack-test-service-a
ports:
- protocol: TCP
port: 8080
targetPort: 8080
点击创建ecs-ack-test-service-a
。
在左侧导航栏,选择网络,在展开的菜单中选择服务,点击右上角使用YAML创建资源,在新页面中的模板输入框中填入如下内容:
apiVersion: v1
kind: Service
metadata:
name: ecs-ack-test-service-b
spec:
selector:
app: ecs-ack-test-service-b
ports:
- protocol: TCP
port: 8080
targetPort: 8080
点击创建ecs-ack-test-service-b
。
添加路由(Ingress)
在左侧导航栏,选择网络,在展开的菜单中选择路由,检查ALB组件是否安装。点击右上角创建Ingress,在右侧弹出的创建Ingress面板中,网关类型点击ALB Ingress,如提示ALB组件未安装,则点击开始安装,否则点击面板右上角关闭按钮即可。
在左侧导航栏,选择网络,在展开的菜单中选择路由,点击右上角使用YAML创建资源,在新页面中的模板输入框中填入如下代码:
请注意:其中
zoneMappings
配置的vSwitchId使用的是创建集群时选择的2台交换机实例ID,不能使用交换机名称,可以在专有网络VPC控制台查找。apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: ecs-ack-test-alb-config spec: config: name: ecs-ack-test-alb addressType: Internet zoneMappings: - vSwitchId: 交换机实例ID - vSwitchId: 交换机实例ID listeners: - port: 80 protocol: HTTP
在左侧导航栏,选择网络,在展开的菜单中选择路由,点击右上角使用YAML创建资源,在新页面中的模板输入框中填入如下内容:
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: ecs-ack-test-alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: ecs-ack-test-alb-config
此处配置了名为
ecs-ack-test-alb
的IngressClass配置。在左侧导航栏,选择网络,在展开的菜单中选择路由,点击右上角使用YAML创建资源,在新页面中的模板输入框中填入如下内容:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ecs-ack-test-alb-ingress spec: ingressClassName: ecs-ack-test-alb rules: - http: paths: - path: /a pathType: ImplementationSpecific backend: service: name: ecs-ack-test-service-a port: number: 8080 - path: /b pathType: ImplementationSpecific backend: service: name: ecs-ack-test-service-b port: number: 8080
点击创建
ecs-ack-test-ingress
。如遇到创建失败,可以考虑如下步骤处理已创建配置并尝试重新配置:
在左侧导航栏,选择网络,在展开的菜单中选择路由,找到名为
ecs-ack-test-alb-ingress
的配置,在右侧下拉菜单中点击删除,等待删除成功。在左侧导航栏,选择工作负载,在展开的菜单中选择自定义资源,点击资源对象浏览器标签页,在API组下方的输入框中,输入
Ingress
,在搜索结果中,点击树形结构中v1
目录下的Ingress
配置,如存在名为ecs-ack-test-alb
的配置,点击右侧删除按钮,等待删除成功。在搜索结果中,点击树形结构中
v1
目录下的IngressClass
配置,如存在名为ecs-ack-test-alb
的配置,点击右侧删除按钮,等待删除成功。在API组下方的输入框中,输入
AlbConfig
,如存在名为AlbConfig
的配置,在搜索结果中,点击树形结构中v1
目录下的AlbConfig
配置,如存在名为ecs-ack-test-alb-config
的配置,点击右侧删除按钮,等待删除成功。等待1分钟后,重复步骤
1
到步骤4
.
验证与资源清理
20
方案验证
清理资源
在本方案中,您创建了3台云服务器ECS实例、1个应用型负载均衡ALB实例、2个交换机、1个专有网络VPC、1个容器服务ACK集群实例。测试完方案后,您可以参考以下规则处理对应产品的实例,避免继续产生费用:
释放1个容器服务ACK集群实例,3台由ACK集群使用的云服务器ECS实例以及集群创建的应用型负载均衡ALB实例:
登录容器服务ACK控制台,在集群列表页面,找到目标ACK集群实例,在操作列点击更多,然后在下拉菜单栏点击删除,按照界面提示释放实例,应用型负载均衡 ALB(集群 Ingress)默认不会删除,在弹出菜单中需要主动勾选。删除ACK集群后会自动释放云服务器ECS实例,可以在删除成功后登录ECS控制台,在实例页面检查是否成功是否,如未成功,找到目标实例,然后在操作列选择>释放设置,根据界面提示释放实例。
释放2台交换机:
登录专有网络控制台,在交换机页面,找到目标交换机,然后在操作列单击删除,按照界面提示释放实例。
释放1个专有网络VPC:
登录专有网络控制台,在专有网络页面,找到目标VPC,然后在操作列单击删除,按照界面提示释放实例。
一键部署
60
https://www.aliyun.com/solution/tech-solution/ack-services
方案概览
本方案旨在通过基于阿里云容器服务Kubernetes版(ACK)实现微服务的部署,借助容器技术和Kubernetes的强大功能,实现资源的高效利用、更高扩展性和弹性、快速迭代部署及DevOps流程优化,从而全面提升业务灵活性与竞争力。通过本方案,企业能够实现应用部署的容器化转型,提升运维效率、优化资源利用,并加速业务创新步伐,为企业的数字化升级奠定坚实基础。
方案架构
本方案介绍如何基于ACK,实现微服务应用部署,提升运维效率、优化资源利用,加速业务创新和市场响应速度。实际部署时您可以根据资源规划修改部分设置,但最终形成的运行环境与下图相似。
模拟应用服务对外提供 APIa
和APIb
,APIa
依赖APIb
。APIb
返回服务名称以及一个UUID;APIa
返回服务名称和一个UUID以及通过HTTP请求的APIb
的返回值。
本方案的技术架构包括以下基础设施和云服务:
1个专有网络VPC:为应用型负载均衡ALB、云服务器ECS、阿里云容器服务Kubernetes版ACK集群等云资源构建云上私有网络
2台交换机:使多可用区的3台云服务器ECS、阿里云容器服务Kubernetes版ACK集群和应用型负载均衡ALB能够在同一网络上进行通信,并提供基本的网络分段和隔离功能。
1个公网应用型负载均衡ALB:对外提供访问,作为ACK集群的Ingress实现。
1个阿里云容器服务Kubernetes版ACK集群
3台云服务器ECS:用于部署模拟应用服务,为ACK使用。
部署准备
10
开始部署前,请按以下指引完成账号申请、账号充值。
准备账号
一键部署
30
ROS一键部署
打开一键配置模板链接前往ROS控制台,系统自动打开使用新资源创建资源栈的面板,并在模板内容区域展示YAML文件的详细信息。
说明ROS控制台默认处于您上次访问控制台时所在的地域,请根据您创建的新资源所在地域修改对应地域后再执行下一步。
确认好地域后,系统自动刷新出配置模板参数页面。
在配置模板参数页面修改资源栈名称,可用区,配置ECS实例(推荐使用通用算力型,ecs.u1-c1m2.xlarge)。填写完所有必选信息并确认后单击创建开始一键配置。
说明防止可用区资源不足情况导致ALB无法访问,这里建议选择可用区J和可用区K。
当资源栈信息页面的状态显示为创建成功时表示一键配置完成。说明:
验证与资源清理
20
方案验证
清理资源
在本方案中,您创建了3台云服务器ECS实例、1个应用型负载均衡ALB实例、2个交换机、1个专有网络VPC、1个阿里云容器服务Kubernetes版ACK集群。测试完方案后,您可以参考以下规则处理对应产品的实例,避免继续产生费用:
释放资源栈下的资源,即3台云服务器ECS实例、1个应用型负载均衡ALB实例、2个交换机、1个专有网络VPC、1个阿里云容器服务Kubernetes版ACK集群。
登录ROS控制台。
在左侧导航栏,选择资源栈
在资源栈页面的顶部选择部署的资源栈所在地域,找到资源栈,然后在其右侧操作列,单击删除。
在删除资源栈对话框,选择删除方式为释放资源,然后单击确定,根据提示完成资源释放。