Go微服务架构实战 中篇:3. 扩缩容、自愈和故障转移、滚动更新以及回退能力

简介: Go微服务架构实战 中篇:3. 扩缩容、自愈和故障转移、滚动更新以及回退能力

基于k8s的Deployment工作负载



主要是利用Deployment资源对象实现的,包括一下功能:

  1. 多副本集
  2. 扩缩容
  3. 自愈和故障转移
  4. 滚动更新
  5. 回退能力


接下来详细了解下操作过程


1. 多副本集


deploy.yaml中只需修改一下replicas,让它的值变成我们想要的副本数量。


apiVersion: apps/v1
kind: Deployment
metadata:
  name: k8sdemo-deploy
  labels:
    app: k8sdemo
spec:
  replicas: 3 //修改这里
  selector:
    matchLabels:
      app: k8sdemo
  template:
    metadata:
      labels:
        app: k8sdemo
    spec:
      containers:
      - name: k8sdemo
        image: k8s-grpc-demo:latest
        imagePullPolicy: Never
        ports:
        - containerPort: 50007

然后kubectl apply -f deploy.yaml应用一下就可以了,看下创建结果:

640.png

从结果看出三个pod成功起来了。


2. 扩缩容


比较简单,一行命令搞定:

kubectl scale --replicas=1 deployment/k8sdemo-deploy回车之后打印如下:

640.png


然后看下pod数量kubectl get pod发现只有一个pod了,这里就不展示了,非常简单。


3. 自愈和故障转移


因为我只有一台机器,没办法验证,所以只列出步骤,下去大家自己可以尝试。


  • 停某一台机器
  • 删除某个pod


大家可以去试试,看看是否停掉机器之后,pod会在别的机器上再起来,保持Deployment的副本集数量不变。或者在某台机器上删除某个pod之后,看看这个pod是否重新建立(归功于Deployment的能力)。


tips:当你要删除pod的时候发现一直删除不掉,pod会自动起来,不要着急莫慌,你应该先删除Deployment,这样pod就会自动删除的。


4. 滚动更新


首先你基于你的代码做了部分更新,比如增加了日志等功能,然后在本地构建镜像,比如k8s-grpc-demo:v2,然后你用一行命令就可以搞定滚动更新:


kubectl set image deployment/k8sdemo-deploy k8s-grpc-demo=k8s-grpc-demo:v2 --record


查看下更新状态


kubectl rollout status deployment/k8sdemo-deploy

640.png


5. 回退能力


  1. 查看历史版本记录
kubectl rollout history deployment/k8sdemo-deploy

640.png


  1. 查看某个历史详情
kubectl rollout history deployment/k8sdemo-deploy --revision=2


640.png


  1. 回滚(回到上次)
kubectl rollout undo deployment/k8sdemo-deploy
  1. 回滚(回到指定版本)
kubectl rollout undo deploymen/k8sdemo-deploy --to-revision=2


6. 小结


其实k8s使用不是很复杂,你可以学完k8s之后搭建自己的服务,但是如果想深入定制k8s,需要有一定golang知识和容器化知识,所以想要进阶的可以在深入学习下源码理解下原理。

下篇文章继续给大家讲解下k8s的service的服务注册和发现能力和ingress的入口网关能力,以及它们的网络架构知识。喜欢这篇文章的童鞋可以关注,转发和分享哈。

github地址:https://github.com/guojiangli/k8s-grpc-demo

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
5月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
8月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
890 0
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
1724 70
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
11月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
601 12
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
3561 37
微服务架构解析:跨越传统架构的技术革命
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
689 1
|
人工智能 安全 Java
微服务引擎 MSE:打造通用的企业级微服务架构
微服务引擎MSE致力于打造通用的企业级微服务架构,涵盖四大核心内容:微服务技术趋势与挑战、MSE应对方案、拥抱开源及最佳实践。MSE通过流量入口、内部流量管理、服务治理等模块,提供高可用、跨语言支持和性能优化。此外,MSE坚持开放,推动云原生与AI融合,助力企业实现无缝迁移和高效运维。
648 1
|
设计模式 负载均衡 监控
探索微服务架构下的API网关设计
在微服务的大潮中,API网关如同一座桥梁,连接着服务的提供者与消费者。本文将深入探讨API网关的核心功能、设计原则及实现策略,旨在为读者揭示如何构建一个高效、可靠的API网关。通过分析API网关在微服务架构中的作用和挑战,我们将了解到,一个优秀的API网关不仅要处理服务路由、负载均衡、认证授权等基础问题,还需考虑如何提升系统的可扩展性、安全性和可维护性。文章最后将提供实用的代码示例,帮助读者更好地理解和应用API网关的设计概念。
360 8