K8S:基于容器技术的分布式架构领先方案
Kubernetes是一款容器编排工具,“容器编排”指的是一种基于容器技术的分布式架构方案,了解过docker可能对“容器”一词并不陌生,但“编排”又是何意?
为什么需要容器编排?Kubernetes又有什么特殊之处?带着这些问题进入本文吧。
一、应用部署方式的发展
在了解为什么需要容器编排之前不妨先来看一下应用部署方式的发展历程。
1、早期部署
在最开始,我们是直接将项目部署在物理机上,这里的物理机即是有实体的服务器,可以理解为将一个项目部署在了一台电脑上。
并且通常只会在一台机器上部署一个应用,因为在这种部署方式下,应用程序的资源使用边界难以定义,如果多个应用部署在一台机器上,
可能会因某个应用占用了大部分的资源而导致其他应用无法获取资源的情况。
这种部署方式优点不用多说,无需其他技术的参与,简单;但它的缺点也显而易见,一个应用就会占用一台机器,成本太高。
2、虚拟化部署
进入虚拟化时代,一个物理机上可以运行多个虚拟机,每个虚拟机有自己独立的环境,互不影响,这就为在一台物理机上部署多个应用提供了可能。
优点:一台服务器上可以部署多个应用,应用之间互不影响,成本和利用率相对于早期部署来说都大大提高;
缺点:每个虚拟机都是独立的操作系统,这些操作系统的运行也会产生额外开销,另外通常情况下我们的应用运行环境很可能都是一样的,
这样的话我们需要在每个虚拟机上都要搭一遍环境,重复性工作太多,给运维带来不便。
3、容器化部署
在虚拟化部署的基础上,人们把关注点放到了在进行虚拟化部署时如何进一步降低资源消耗、减少重复性运维工作、同时保证系统间的隔离性上,这便促使了容器技术的产生。
其实容器技术的本质仍然是一种虚拟化技术,不过它与上面提到的虚拟化部署方式不同,这里引用一句网上的概述:
“容器是通过一种虚拟化技术来隔离运行在主机上不同进程,从而达到进程之间、进程和宿主操作系统相互隔离、互不影响的技术。
这种相互孤立进程就叫容器,它有自己的一套文件系统资源和从属进程。”
容器与虚拟机相比,容器更为轻量级,占用资源少,并且启动时间远小于虚拟机,但从隔离层面来说,虚拟机更为彻底。
虽然容器技术优点很多,但它也存在着一些问题:大量容器无法管理以及在分布式架构中应用容器无法自动收缩扩展,
这也是为什么需要容器编排的原因,由此各种编排工具应运而生。
二、容器编排
在微服务架构中,我们的服务以容器化的方式部署在服务器上,这些服务少则十个多到百个形成大量的容器化组件,并且这些容器组件之间往往需要相互协作,
怎样很好的将这些容器组织在一起就是刚才提到的无法管理问题,所以这个时候有一个管理员出来维护这么多的容器秩序是很有必要的。
另外在分布式架构中,往往我们的同一个服务会以容器化的方式部署到不同的服务器上,既然是同样的一个服务难道我们需要在每个服务器上都手动的部署一遍吗?
这样的话又带来重复性工作,这就是上面提到的无法自动收缩扩展问题。
容器编排的诞生就是为了解决上述问题,来看看容器编排技术K8s能给我们带来什么:
1、自动收缩扩展:会对集群中正在运行的容器数量进行自动调整,提升系统的抗压能力。
2、负载均衡:一个应用如果有多个容器,会对请求进行负载均衡。
3、存储编排:可以自动创建存储卷。存储卷是定义在pod之上的一个共享目录,它可以被内部所有容器进行挂载,用于记录pod中容器的相关数据,至于pod的概念我们后面再谈。
4、故障转移:当集群中某个节点挂掉之后,上面原先运行的容器会被自动转移到正常的节点中。
三、快速搭建
1. 安装要求
在开始之前,部署Kubernetes集群机器需要满足以下几个条件:
3台以上机器,操作系统 CentOS7.7以上64位系统(安装三台虚拟机,一台作master节点,两台作node节点)
硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
集群中所有机器之间网络互通
可以访问外网,需要拉取镜像
禁止swap分区
2.部署k8s的两种方式:
a.目前生产部署Kubernetes集群主要有两种方式:
kubeadm
Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。
b.二进制包
从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。.从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。
认识K8S
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 【云原生 • Kubernetes】认识 k8s、k8s 架构、核心概念点介绍 一、Kubernetes 简介 K...