目录
2.22 Replication Controller(副本控制器)
2.23 Endpoints Controller(端点控制器)
2.24 Service Account & Token Controllers(服务帐户和令牌控制器)
2.25 ResourceQuota Controller(资源配额控制器)
2.26 Namespace Controller(命名空间控制器)
2.27 Service Controller(服务控制器)
一 k8s 理论前言
(一)微服务是什么
微服务是一种软件架构风格,它将一个大型复杂的应用程序拆分成一组小型、自治的服务。每个服务都围绕着特定的业务功能进行构建,可以独立部署、运行和扩展,服务之间通过API(通常是RESTful API)进行通信。这种架构模式强调模块化、松耦合和领域驱动设计原则。
1,应用场景
微服务架构适用于以下场景:
- 复杂系统:当应用程序变得非常庞大,包含众多功能模块,维护和扩展困难时,采用微服务可以将系统分解为更易于管理的部分。
- 敏捷开发:需要快速迭代和频繁部署的环境,每个服务可以由独立的团队开发和维护,加速开发周期。
- 水平扩展:系统需要根据负载动态调整资源,每个服务可以根据需求独立扩展。
- 技术多样性:不同服务可以根据其需求选择最适合的技术栈,提高开发效率和系统性能。
- 组织结构:大型组织或企业,不同部门或团队负责不同业务领域,微服务架构与其组织结构自然契合。
2,API 是什么
API,全称为Application Programming Interface,即应用程序编程接口,是一系列规则、协议和工具的集合,它们定义了软件应用程序之间如何相互交流。API规定了不同软件组件应如何相互作用,允许开发者构建能够与现有服务、操作系统、硬件或其他软件无缝协作的应用程序,而无需了解其底层实现细节。
API的核心作用在于提供模块化功能,它将复杂的系统、库、框架或服务的功能封装起来,暴露给外部调用者一个简单、标准的接口。开发者通过调用API中的预定义函数或方法,可以访问和控制这些功能,从而实现特定任务,如数据检索、文件操作、设备控制等。
API的常见应用场景包括:
- 数据共享与集成:例如,社交媒体平台通过API允许第三方应用访问用户数据或发布内容。
- 云服务访问:云服务商提供API,使得开发者能管理云资源,如创建虚拟机、存储数据或处理消息队列。
- 操作系统功能调用:操作系统提供API供应用程序调用,以实现文件读写、网络通信等功能。
- Web服务交互:RESTful API、SOAP等Web服务API使得不同系统之间可以通过HTTP协议交换数据。
- 硬件设备控制:硬件制造商提供API,使得软件可以控制特定硬件设备,如打印机、传感器等。
API的使用显著提高了软件开发的效率和灵活性,促进了技术生态的协同与创新。
(二),微服务 如何做版本迭代
在微服务架构中,Docker为版本迭代提供了便利的环境隔离和标准化部署方式。下面是利用Docker进行微服务版本迭代的关键步骤和实践:
1. Docker镜像构建
- Dockerfile:为每个微服务编写Dockerfile,详细描述服务的运行环境、依赖库和启动命令。这确保了构建过程的一致性和可重复性。
- 多阶段构建:使用Docker的多阶段构建特性,可以更高效地构建镜像,减少最终镜像的大小,仅包含运行服务所需的最小依赖。
2. 版本标记
- 在构建镜像时,为每个版本的镜像打上明确的标签,例如
<service-name>:v1.0.0
,便于管理和追溯版本。
3. Docker Registry
- 将构建好的镜像推送到私有或公有的Docker Registry,如Docker Hub、Harbor或Google Container Registry。这使得新版本镜像在部署环境中可获取。
4. 环境一致性
- 利用Docker容器,确保开发、测试和生产环境的一致性。相同的镜像可以在任何支持Docker的环境中运行,减少了因环境差异导致的问题。
5. 滚动更新与蓝绿部署
- Docker Compose:对于小型部署,可以使用Docker Compose文件定义服务、网络和卷,通过更新Compose文件并重启服务来实现版本迭代。
- Kubernetes (k8s):在Kubernetes集群中,可以利用Deployment资源进行滚动更新,自动逐步替换旧版本的Pod为新版本Pod,同时保持服务可用性。
- 滚动更新策略:设置最大不可用Pod数量、更新间隔时间等参数,细粒度控制更新过程。
- Blue/Green Deployment:在Kubernetes中通过创建新Deployment并逐渐切流至新服务,最后清理旧版本资源。
6. 健康检查与就绪检查
- 配置健康检查和就绪检查,确保新部署的服务实例在接收到流量前已经准备就绪,减少服务中断风险。
7. 日志与监控
- 集成日志收集和监控系统,如Fluentd、Prometheus,实时监控新版本服务的性能和异常,快速响应问题。
8. 版本回滚
- 在Docker和Kubernetes中,提供一键回滚机制,当新版本出现问题时,快速恢复到之前的稳定版本。
综上,Docker通过提供标准化的构建、部署和管理流程,极大地简化了微服务的版本迭代过程,增强了部署的灵活性和可靠性。
(三)什么是 蓝绿部署/金丝雀发布
- 蓝绿部署:维护两个相同的生产环境(蓝环境和绿环境)。新版本首先部署到非活跃环境(比如蓝环境),完成部署并验证无误后,通过切换路由或负载均衡器配置,将流量从旧环境(绿环境)无缝转移到新环境。
- 金丝雀发布:逐步将新版本部署到一部分用户或服务器上,监控性能和错误率。如果一切正常,逐渐扩大新版本的覆盖范围,直至完全替换旧版本。
(四) 云原生 介绍
云原生(Cloud Native)是一种构建和运行应用程序的方法论和一整套技术实践,旨在充分利用云计算的优势,如弹性伸缩、分布式处理能力以及自动化管理等。它强调应用程序从设计之初就应该考虑到云环境的特点,使得应用能够更好地在云平台上部署、运行和管理。云原生的核心要素和技术栈包括但不限于: