疫情期间云沃客使用阿里云k8s动态扩容实践

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 在春节前后的武汉新冠肺炎疫情的影响下,云沃客为了支持国家对疫情的控制,免费对所有企业开放公司研发6年的云工作平台。因此在节后众多企业复工的情况下,平台面对非常大的流量压力。如何做到动态扩容应对流量冲击压力,我们首先想到了k8s,因为云沃客基本上都是基于微服务的,但是短时间内自建k8s平台,还要面临巨大的运维压力,实在时间来不及,所以只能把目光聚焦到阿里云的容器云服务,经过压力测试我们发现阿里云的服务非常不错。因为有了这篇k8s的实践。目前来看也能很好支撑云沃客的流量。

疫情期间云沃客使用阿里云k8s动态扩容实践
一.背景
在春节前后的武汉肺炎疫情的影响下,国家和地方政府纷纷出台春节假期延期政策,鼓励有条件的企业在家办公,避免进入人口密集环境。我司北京云族佳科技有限公司数年来专注于云工作生态环境的建设与完善,先后推出云沃客,企业版,黄豆纳才,绩效监控等云产品,帮助企业及其成员在不同空间维度下协同开展工作,在云端最大限度的还原现场工作场景,现云沃克平台向所有企业无限制免费开放,至官宣疫情结束后90天。欢迎个人和企业用户入住云沃克平台。
为了应对突发的流量,我们决定将原来的技术架构予以升级,我们希望新的架构能够具有以下几个特征:
1.能够做到简装上阵,开发人员可以更专注于业务的开发,同时系统兼运维工程师负责部署和运维,而无需考虑过于复杂的架构设计。
2.能够全面的拥抱微服务,我们希望新的架构的各个模块能独立上线,部署,和分发
3.其次能够方便的迁移至公有云中
4.强大的横向扩展能力以对应激增流量
很自然的kubernetes(简称k8s)成为我们的首选方案
二.k8s简介
2.1 k8s是什么
它是谷歌推出的一个全新的基于容器技术的分布式架构领先方案,它是谷歌十几年来大规模应用容器技术的经验积累和升华的重要成果,k8s是谷歌严格保密十几年的秘密武器Brog的一个开源实现,这个久负盛名的Brog用于谷歌内部管理大规模的集群系统,它基于容器技术。随着2015年Brog的论文公开以及k8s的高调宣传,人们才得以窥视和了解它。
如果我们遵循k8s的设计思想,传统架构的那些与业务无关的底层代码和功能,研发人员可以不必再关注,比如我们不用再考虑负载均衡的选型和部署实施问题,不必考虑自行引入或者开发一套服务治理方案,k8s为我们做的已经够多了,实践表明,使用k8s能够减少我们30%的开发成本,使得研发人员更关注与实现业务本身,k8s提供了强大的自动化机制,运维难度和成本都大幅降低。
2.2 将k8s搬到云端
由于我司的服务大部分都部署在阿里云上 ,同时阿里云也提供了k8s集群的功能,现将公司业务搬到k8s上的过程予以记录。
1.首先创建集群,在阿里云的web页面点击创建
图片 1.png

会看到,阿里云提供了多种集群方式工选择,其中我们根据自身情况,选择了标准的托管版本,即是集群的master节点由ACK(阿里云k8s容器服务)托管,而用户只需创建node节点即可,
图片 2.png

这里我们选择新建三个ECS作为工作节点,由于k8s本身不处理网络细节,它要求所有pod可以直接通信,也就是不能通过NAT转化,在同一个大二层网络内通信,因此需要选择网络插件作为k8s底层的通信手段,这里选择广泛使用的Flannel插件,指定pod和service的CIDR,如无特殊需求,默认就行,
选择完毕后,等待一段时间,

在控制台上查看,集群已经成功创建。
图片 3.png

2.在这个集群上创建我们的应用,在我们的使用场景中我们主要是提供restful api服务,因此我们选择无状态的应用
图片 4.png

  1. 这里可以选择使用镜像创建,也可以使用模板创建,由于我们在测试环境部署过k8s,已经写好了一些yaml文件,故而我们选择使用模板创建,若是第一次使用k8s,可以使用使用镜像创建,

deployment的yaml文件如下
图片 5.png

点击创建,如无异常,能看到
图片 6.png

创建成功,同时可以点击编辑,来修改参数,比如限制资源的使用,加入存活和就绪检查
图片 7.png

查看容器组可以看到

图片 8.png
pod已经成功运行起来,
4.接着我们我们创建service,在service管理页面点击创建

图片 9.png
service我们选择使用内网slb,选择关联到的无状态应用实例,添加端口映射列表,点击创建
无异常的化,

图片 10.png

我们能得到服务的内网访问方式。将此地址提供给前端访问即可,至此,算是基本将此应用迁移到k8s中了。,通过k8s我们能方便快速的水平扩展,当流量升上来时,我只用增到副本的数量,反之减少副本的数量,后续会将其他应用陆续迁移到k8s中
2.3后续工作
1.通过ab工具压测一下此api的性能如何
2.通过jenkins集成打包,部署,更新过程。阿里云同时提供了镜像仓库工能,制作的镜像可以存入。
3.发现阿里云k8s集成了istio service mesh功能,后期会利用它做一些服务治理的工作,比如流量控制,灰度发布等。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
5天前
|
人工智能 Prometheus 监控
使用 NVIDIA NIM 在阿里云容器服务(ACK)中加速 LLM 推理
本文介绍了在阿里云容器服务 ACK 上部署 NVIDIA NIM,结合云原生 AI 套件和 KServe 快速构建高性能模型推理服务的方法。通过阿里云 Prometheus 和 Grafana 实现实时监控,并基于排队请求数配置弹性扩缩容策略,提升服务稳定性和效率。文章提供了详细的部署步骤和示例,帮助读者快速搭建和优化模型推理服务。
43 7
使用 NVIDIA NIM 在阿里云容器服务(ACK)中加速 LLM 推理
|
6天前
|
人工智能 Prometheus 监控
使用NVIDIA NIM在阿里云ACK中加速LLM推理
介绍在阿里云ACK集群上结合AI套件能力快速部署NVIDIA NIM模型推理服务,同时提供全面的监控指标和实现弹性伸缩。
使用NVIDIA NIM在阿里云ACK中加速LLM推理
|
9天前
|
Kubernetes 网络虚拟化 Docker
K8S镜像下载报错解决方案(使用阿里云镜像去下载kubeadm需要的镜像文件)
文章提供了一个解决方案,用于在无法直接访问Google镜像仓库的情况下,通过使用阿里云镜像来下载kubeadm所需的Kubernetes镜像。
25 3
K8S镜像下载报错解决方案(使用阿里云镜像去下载kubeadm需要的镜像文件)
|
12天前
|
存储 Kubernetes Cloud Native
探索Python编程的奥秘云原生时代的容器编排:Kubernetes入门与实践
【8月更文挑战第30天】本文以浅显易懂的方式,探讨了Python编程的核心概念和技巧。从基础语法到高级特性,再到实际应用案例,逐步引导读者深入理解Python编程的精髓。通过本文的学习,读者将能够掌握Python编程的基本技能,并激发进一步探索的兴趣。
27 13
|
6天前
|
Cloud Native 持续交付 Docker
云原生技术实践:Docker容器化部署教程
【9月更文挑战第4天】本文将引导你了解如何利用Docker这一云原生技术的核心工具,实现应用的容器化部署。文章不仅提供了详细的步骤和代码示例,还深入探讨了云原生技术背后的哲学,帮助你理解为何容器化在现代软件开发中变得如此重要,并指导你如何在实际操作中运用这些知识。
|
12天前
|
运维 Kubernetes Cloud Native
云原生之旅:Kubernetes 集群的搭建与实践Python 编程入门:从零基础到编写实用脚本
【8月更文挑战第30天】在数字化转型的大潮中,云原生技术以其弹性、可扩展性及高效运维能力成为企业IT架构升级的关键。本文将通过实际操作演示如何在本地环境搭建一个简易的Kubernetes集群,带你领略云原生的魅力所在。从集群规划到服务部署,每一步都是对云原生理念的深刻理解和应用。让我们共同探索,如何通过Kubernetes集群的搭建和运维,提升业务灵活性和创新能力。
|
11天前
|
运维 Kubernetes 监控
自动化运维:使用Python脚本实现系统监控云原生技术实践:Kubernetes在现代应用部署中的角色
【8月更文挑战第31天】在现代IT运维管理中,自动化已成为提高效率和准确性的关键。本文将通过一个Python脚本示例,展示如何实现对服务器的自动监控,包括CPU使用率、内存占用以及磁盘空间的实时监测。这不仅帮助运维人员快速定位问题,也减轻了日常监控工作的负担。文章以通俗易懂的语言,逐步引导读者理解并实践自动化监控的设置过程。 【8月更文挑战第31天】本文旨在探索云原生技术的核心—Kubernetes,如何革新现代应用的开发与部署。通过浅显易懂的语言和实例,我们将一窥Kubernetes的强大功能及其对DevOps文化的影响。你将学会如何利用Kubernetes进行容器编排,以及它如何帮助你的
|
11天前
|
运维 Kubernetes Cloud Native
拥抱云原生:Kubernetes 在现代应用部署中的实践
【8月更文挑战第31天】在数字化转型的浪潮中,云原生技术成为推动企业创新和效率提升的关键力量。本文将深入探讨如何利用 Kubernetes,这一强大的容器编排工具,来部署和管理现代应用。我们将从基础架构搭建开始,一步步引导您配置集群,并通过实际代码示例演示如何部署一个简单的应用。无论您是云原生新手还是希望深化理解,这篇文章都将为您提供实操经验和理论知识的融合之旅。
|
11天前
|
Kubernetes Cloud Native 应用服务中间件
云原生技术入门与实践:Kubernetes的简易部署
【8月更文挑战第31天】云原生技术已成为现代软件部署的黄金标准,而Kubernetes作为其核心组件之一,在容器编排领域独领风骚。本文将引导您通过简单的步骤,快速部署一个Kubernetes集群,并运行一个简单的应用,让您轻松迈入云原生的世界。
|
11天前
|
Kubernetes Cloud Native 应用服务中间件
云原生入门:Kubernetes 和容器化技术的实践之旅
【8月更文挑战第31天】 在这篇文章中,我们将踏上一场探索云原生世界的旅程。我们将从基础的容器化技术讲起,逐步深入到Kubernetes这个强大的容器编排工具。文章会通过一个实际的例子,带领大家了解如何将一个简单的应用容器化并在Kubernetes集群上运行起来。无论你是云原生领域的新手,还是希望巩固知识的开发者,这篇文章都会为你提供一次实操的机会,让你对云原生有一个更加直观的认识。