k8s 理论知识基本介绍

目录

一     k8s 理论前言   

(一)微服务是什么

1,应用场景

2,API 是什么

(二),微服务 如何做版本迭代

1. Docker镜像构建

2. 版本标记

3. Docker Registry

4. 环境一致性

5. 滚动更新与蓝绿部署

6. 健康检查与就绪检查

7. 日志与监控

8. 版本回滚

(三)什么是 蓝绿部署/金丝雀发布

(四) 云原生  介绍

(五) 为什么 tomcat 不建议放在docker 里

(六) 生产环境架构

二     k8s 理论·介绍

(一) k8s 是什么

(二)k8s 作用

(三)k8s 由来

(四)为什么要用k8s

1, 传统后端 部署的弊端

2,K8S 解决了裸跑Docker 的若干痛点

(五) K8S 功能

(六)K8S 的特性

(七)Kubernetes 集群架构与组件

(八) 核心组件

1,架构图

2,Master 组件

2.1 Kube-apiserver

2.2 Kube-controller-manager

2.21 Node Controller(节点控制器)

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(服务控制器)

2.3  Kube-scheduler

3,   配置存储中心 etcd

4, Node 组件

4.1 Kubelet

4.2  Kube-Proxy

4.3  docker 或 rocket

(九)  k8s  数据流向


一     k8s 理论前言   

(一)微服务是什么

微服务是一种软件架构风格,它将一个大型复杂的应用程序拆分成一组小型、自治的服务。每个服务都围绕着特定的业务功能进行构建,可以独立部署、运行和扩展服务之间通过API(通常是RESTful API)进行通信。这种架构模式强调模块化、松耦合和领域驱动设计原则。

1,应用场景

微服务架构适用于以下场景:

  1. 复杂系统:当应用程序变得非常庞大,包含众多功能模块,维护和扩展困难时,采用微服务可以将系统分解为更易于管理的部分。
  2. 敏捷开发:需要快速迭代和频繁部署的环境,每个服务可以由独立的团队开发和维护,加速开发周期。
  3. 水平扩展:系统需要根据负载动态调整资源,每个服务可以根据需求独立扩展。
  4. 技术多样性:不同服务可以根据其需求选择最适合的技术栈,提高开发效率和系统性能。
  5. 组织结构:大型组织或企业,不同部门或团队负责不同业务领域,微服务架构与其组织结构自然契合。

2,API 是什么

API,全称为Application Programming Interface,即应用程序编程接口,是一系列规则、协议和工具的集合,它们定义了软件应用程序之间如何相互交流。API规定了不同软件组件应如何相互作用,允许开发者构建能够与现有服务、操作系统、硬件或其他软件无缝协作的应用程序,而无需了解其底层实现细节。

API的核心作用在于提供模块化功能,它将复杂的系统、库、框架或服务的功能封装起来,暴露给外部调用者一个简单、标准的接口。开发者通过调用API中的预定义函数或方法,可以访问和控制这些功能,从而实现特定任务,如数据检索、文件操作、设备控制等。

API的常见应用场景包括:

  1. 数据共享与集成:例如,社交媒体平台通过API允许第三方应用访问用户数据或发布内容。
  2. 云服务访问:云服务商提供API,使得开发者能管理云资源,如创建虚拟机、存储数据或处理消息队列。
  3. 操作系统功能调用:操作系统提供API供应用程序调用,以实现文件读写、网络通信等功能。
  4. Web服务交互:RESTful API、SOAP等Web服务API使得不同系统之间可以通过HTTP协议交换数据。
  5. 硬件设备控制:硬件制造商提供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)是一种构建和运行应用程序的方法论和一整套技术实践,旨在充分利用云计算的优势,如弹性伸缩、分布式处理能力以及自动化管理等。它强调应用程序从设计之初就应该考虑到云环境的特点,使得应用能够更好地在云平台上部署、运行和管理。云原生的核心要素和技术栈包括但不限于:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值