跳到主要内容

K8S简介

K8s 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

在 K8S 中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

k8s 发展经历

K8S 官网:https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/

  • Apache MESOS:开源的分布式资源管理框架 2019 年 5 月份 Twitter 转向 K8S
  • Docker Swarm:对docker专门做的 2019 年 7 月份 阿里云宣布从阿里云的选择列表里剔除
  • Kubernetes:Google 10 年前就开始容器化基础架构 组件:borg系统,google 内部的 后来采用了Go语言使用borg的设计思路开发了 K8S 并且开源给了容器基金会

特点:

  • 轻量级:消耗的资源小
  • 开源
  • 弹性伸缩
  • 负载均衡:LVS

功能

  1. 自动装箱

基于容器对应运行环境的资源配置要求自动部署应用容器

  1. 自动修复(自愈能力)

当容器失败时,会对容器进行重启

当所部署的节点有问题时,会对容器进行重新部署和重新调度

当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务

  1. 水平扩展

通过简单的命令、用户 UI 界面或基于 CPU 等资源使用情况,对应用容器进行规模扩大或规模剪裁;

比如:双十一时会有大量请求,会进行扩大;等到活动结束之后会裁剪

  1. 服务发现

用户不需要使用额外的服务发现机制,就能够基于 K8S 自身能力实现服务发现和负载均衡;对外服务有一个统一的入口:Service,如果访问订单服务就只访问订单的节点等,还可以在这两者之间做负载均衡

  1. 滚动更新

可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新;对加进去的服务会进行检测,如果应用没有问题的时候,才会开始对外进行服务。

  1. 版本回退

可以根据应用部署情况,对应应用容器运行的应用,进行历史版本即时回退

  1. 秘钥和配置管理

在不需要重新构建镜像的情况下,可以部署和更新秘钥和应用配置,类似热部署

  1. 存储编排

自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要,存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph 等)、公共云存储服务

  1. 批处理

提供一次性任务、定时任务;满足批量数据处理和分析的场景