Kubernetes 简介

简称k8s

Kubernetes为什么叫k8s呢,中间ks有8个字母。类似i18n,i和n,18为中间的字符数是“国际化”的简称。k8s是建立在容器引擎之上的,但容器不一定是docker。

现在又出来一个新产品k3s,它是容器管理软件提供商Rancher Labs(以下简称Rancher)宣布推出轻量级Kubernetes发行版 K3S 。主要用于一些小型的开发/生产环境、边缘计算节点甚至性能极其有限的设备(比如树莓派3)。

这所有的技术都是为业务服务的。

那k8s到底是解决什么业务问题的?

微服务开发三大指标

高可用,高性能,高并发

高性能方案

  • RPC通信,对外rest,对内RPC
  • Kyro高速序列化
  • HikariCP连接池,号称最快的连接池
  • SQL优化
  • Redis缓存
  • JVM优化
  • GC优化

高并发方案

  • 垂直扩展
  • 水平扩展
  • 负载均衡
  • 集群

高并发这些说白了就是烧钱。

高可用方案

那高可用是什么。就是一直可以用,达到99.999999%。一年允许宕机的时间大概是32秒左右,这个叫高可用。Kubernetes就是高可用方案里面的一个环节。

怎么做到高可用呢?

实现崩溃恢复,解决单点故障问题。
假设我们有2台Tomcat->1, 挂掉一个。那这个怎么办,让我们手动去重启吗?我们肯定是想要自动重启。Kubernetes就提供了这个功能,自动重启。高可用肯定想实现自动重启这个效果。

自动扩缩容

另外一个就是并发大了以后,我开始水平扩展,从两台服务器扩展到5个、7个、9个。我们扩展是不是都要手动去扩展。那能不能自动去扩展?

比如网站压力一上来,我们就想根据压力自动扩展。打个比方一台tomcat抗1000个并发,2台可以2000并发。现在过来5000个并发,是不是至少需要5台服务器。
但是我们怎么知道什么时候会来5000个并发呢?我们是不是不知道,那我们又怎么可能及时上线去扩展服务器。也许就因为我们没有及时去扩展,导致我们前面两台服务器,压力负载过大都奔溃了。奔溃了是不是要重启,重启是不是需要时间。那我们的服务器可用性是不是就下降了。

换句话说,能不能流量来了以后,立即自动的启动多台tomcat来抗这个压力呢。所以这个Kubernetes又有一个功能叫自动扩缩容。这个什么意思呢?正常我们开两台tomcat,压力上来后,根据当前压力自动启动多台。压力离开以后呢,又能自动自释放资源变成两台。我们是不是需要有这样一个功能.

金丝雀发布

除了这个单点故障,自动重启,自动扩缩容还有一个问题就是服务要更新。更新服务是不是要重启,重启是不是可用度就要要往下掉了。
比如我们服务版本从1.0更新到1.1。要是我们运维手动斜街不好的话,上面两台tomcat全部挂掉。我们重新部署重新升级。那是不是代表着这个可用度又不行了。到这里是不是有个解决方案,能不能新旧版本同时,交替使用。

这里就有个新的概念叫金丝雀发布,也叫灰度发布,滚动更新。

又比如我们在更新的时候,1.1版本有bug。是不是要回滚。我们有2000台机器,如果你一次性把它更新上去后,是不是表示你2000台服务器都有bug。那我们是不是先更新一部分,再更新一部分,然后逐渐慢慢更新全部机器。一旦发现有问题,立即进行版本回滚。

概述

从Kubernetes的Logo可以看到它是一个舵,舵是轮船的方向盘,正所谓大海航行靠舵手,为什么叫舵呢?因为Kubernetes它最早出现的时候是和Docker的Swarm做竞争的。作为容器管理系统,Docker是集装箱,我是运集装箱的船,所以Kubernetes叫舵。

Kubernetes这个项目从出来之后就是以一种横扫别人的项目的趋势。别的项目基本上慢慢的被淘汰了。这些项目就有Docker自家的 Swarm。

Kubernetes 是 Google 2014 年创建管理的,是 Google 10 多年大规模容器管理技术 Borg 的开源版本。

Kubernetes 是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。使用 Kubernetes 我们可以:

  • 快速部署应用
  • 快速扩展应用
  • 无缝对接新的应用功能
  • 节省资源,优化硬件资源的使用

Kubernetes 的目标是促进完善组件和工具的生态系统,以减轻应用程序在公有云或私有云中运行的负担。

特点

  • 可移植: 支持公有云,私有云,混合云,多重云(多个公共云)
  • 可扩展: 模块化,插件化,可挂载,可组合
  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

从传统到容器化部署

传统的部署方式

传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。

容器化部署的优势

  • 快速创建/部署应用: 与虚拟机相比,容器镜像的创建更加容易。
  • 持续开发、集成和部署: 提供可靠且频繁的容器镜像构建/部署,并使用快速和简单的回滚(由于镜像不可变性)。
  • 开发和运行相分离: 在 build 或者 release 阶段创建容器镜像,使得应用和基础设施解耦。
  • 开发,测试和生产环境一致性: 在本地或外网(生产环境)运行的一致性。
  • 云平台或其他操作系统: 可以在 Ubuntu、RHEL、CoreOS、on-prem、Google Container Engine 或其它任何环境中运行。
  • 分布式,弹性,微服务化: 应用程序分为更小的、独立的部件,可以动态部署和管理。
  • 资源隔离
  • 资源利用更高效

为什么需要 Kubernetes

可以在物理或虚拟机的 Kubernetes 集群上运行容器化应用,Kubernetes 能提供一个以 “容器为中心的基础架构”,满足在生产环境中运行应用的一些常见需求,如:

  • 多个进程协同工作
  • 存储系统挂载
  • 应用健康检查
  • 应用实例的复制
  • 自动伸缩/扩展
  • 注册与发现
  • 负载均衡
  • 滚动更新
  • 资源监控
  • 日志访问
  • 调试应用程序
  • 提供认证和授权
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值