目录
一、背景
服务器经历了三次演变过程:物理机、虚拟机和容器化
物理机的缺点:
●部署慢 :每台服务器都要安装操作系统、相关的应用程序所需要的环境,各种配置;
●成本高:物理服务器的价格十分昂贵;
●资源浪费:硬件资源不能充分利用;
●扩展和迁移成本高:扩展和迁移需要重新配置一模一样的环境。
虚拟机很好解决了物理机的缺点,代表产品为vmware,其特点为:
●易部署:每台物理机可部署多台虚拟机,且可以通过模板,部署快,成本低;
●资源池:开出来的虚拟机可作为资源池备用,充分压榨服务器性能;
●资源隔离:每个虚拟机都有独立分配的内存磁盘等硬件资源,虚拟机之间不会互相影响;
●易扩展:随时都能在一个物理机上创建或销毁虚拟机。
同时,虚拟机同样也有一些缺点,每台虚拟机都需要安装操作系统,每台虚拟机都需要虚拟出完整的操作系统,从而对内存等资源会造成浪费和压力。
但容器化时代解决了虚拟机的缺点,并在继承虚拟机优点的基础之上,代表产品为docker,具有以下特点:
●更高效的利用硬件资源:所有容器共享主机操作系统内核,不需要安装操作系统;
●一致的运行环境:相同的镜像产生相同的行为;
●更小:较虚拟机而言,容器镜像更小,因为不需要打包操作系统;
●更快:容器能达到秒级启动,其本质是主机上的一个进程。
docker在单机上进行编排很方便,但在一些场景下存在明显缺陷:
●当节点较多时需要重复执行指令,并进行负载均衡,不利于自动装箱。
●当增加节点时认为操作繁杂,不利于水平扩缩。
●如果要进行版本变更,更新或回滚,需要停止容器然后更新容器镜像,重新启动,当副本较多时,不利于自动化上线和回滚。
●当出现节点宕机,节点上所有容器都停止,docker的重启策略会失效,不能自我修复。
●如果进行负载均衡时,需要新增负载均衡器,配置节点ip和端口,容器网络隔离导致不能相互访问,维护成本较高,不利于服务发现与负载均衡。
上述均属于容器编排问题,需要一个新技术进行自动化编排,K8S应运而生。
二、K8S 基本概念
K8S 的全称为 Kubernetes (K12345678S),PS:“嘛,写全称也太累了吧,不如整个缩写”。
1.作用:
用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。
可以理解成 K8S 是负责自动化运维管理多个容器化程序(比如 Docker)的集群,是一个生态极其丰富的容器编排框架工具。
由来:
K8S由google的Borg系统(博格系统,google内部使用的大规模容器编排工具)作为原型,后经GO语言延用Borg的思路重写并捐献给CNCF基金会开源。
云原生基金会(CNCF)于2015年12月成立,隶属于Linux基金会。CNCF孵化的第一个项目就是Kubernetes,随着容器的广泛使用,Kubernetes已经成为容器编排工具的事实标准。
含义:
词根源于希腊语的 舵手、飞行员
官网:
https://kubernetes.io
GitHub:
https://github.com/kubernetes/kubernetes
K8S是一款强大的容器编排平台,可以帮助企业实现容器化的业务部署和管理,提升效率和可靠性。
K8S是一个容器集群管理系统,在Docker等容器技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。
2.K8S 的特点包括:
●自动化管理:大大减少了人工干预,提高了应用部署和管理的效率。
●弹性伸缩:能够根据负载自动调整容器的副本数量,实现资源的高效利用。
●高可用性:通过副本和故障转移机制,确保应用的持续可用。
●负载均衡:可以在多个节点上自动分配负载,实现负载均衡。
●跨平台支持:可以在不同的基础设施上运行,包括物理机、虚拟机和云平台。
三、Kubernetes 集群架构与组件
K8S 是属于主从设备模型(Master-Slave 架构),即有 Master 节点负责集群的调度、管理和运维,Slave 节点是集群中的运行工作负载节点。
在 K8S 中,主节点一般被称为 Master 节点,而从节点则被称为 Worker Node 节点,每个 N