黑马程序员技术交流社区
标题: 【郑州校区】Kubernetes核心原理和搭建 上 [打印本页]
作者: 我是楠楠 时间: 2020-4-29 13:40
标题: 【郑州校区】Kubernetes核心原理和搭建 上
本帖最后由 我是楠楠 于 2020-4-29 13:41 编辑
【郑州校区】Kubernetes核心原理和搭建 上
1. 引言 在过去,我们在进行程序部署的时候,是直接将环境和程序统一配置部署到主机上,但是这样做容易造成程序与程序之间的混淆,所以为了处理这种问题,我们可以搭建一台不可变的虚拟机镜像,将环境和程序配置部署到虚拟机镜像中,但是虚拟机镜像部署存在体量过于庞大并且不可移动的问题,所以容器技术应运而生,容器技术是基于操作系统级别的虚拟化技术,各个容器与宿主机是隔离的,各个容器之间也是是隔离的,它比虚拟机镜像更容易搭建,并且可以很方便在不同的主机上移动。但是随着分布式、集群等技术在实际应用中越来越多,在实际的生产环境中,我们可能会涉及到多个容器,而这些容器可能会跨越多个服务器主机进行部署,所以一个基于容器技术的分布式架构解决方案应用而生,它就是Kubernetes。
2. Kubernetes的概念 Kubernetes(k8s)是一个基于容器技术的的分布式架构解决方案,是Google开源的容器集群管理系统,Google内部称为Borg,主要用于自动部署、扩展和管理容器化的应用程序,是以Docer为基础的分布式系统架构。
Kubernetes可以对分布式系统进行完美的支撑,它具备完善的集群控制能力,内建有智能的负载均衡器,拥有强大的故障发现和自我修复能力。同时还针对开发、部署测试、运维监控等提供了完善的管理工具。
Kubernetes的核心思想是:一切以服务为中心,根据这一核心思想,Kubernetes可以让在其上构建的系统独立运行在物理机、虚拟机群或者云上,所以,Service(服务)是Kubernetes进行分布式集群构建的核心,必须拥有如下关键特征:
3. Kubernetes的术语
3.1 Master Kubernetes的集群控制节点,负责整个集群的管理和控制,拥有一个etcd服务,用来保存所有资源对象的数据,我们执行的所有控制命令会发给他,他负责具体的执行过程,Master节点通常会独占一个服务器,在其上会运行以上一组关键的进程:
Kubernetes API Server:提供Http Rest接口的关键服务进程,是Kubernetes中增、删、改、查等操作的唯
一入口,是集群控制的入口进程。
Kubernetes Controller Manager:Kubernetes中所有资源对象的自动化控制中心。
Kubernetes Scheduler:负责资源调度的进程。
3.2 Node Kubernetes集群中的其他机器被称为Node节点,Node节点可以是一台物理主机,也可以是一台虚拟机,每个Node节点会被Master节点分配一些负载,所以Node节点是Kubernetes集群中工作负载节点,当某个Node节点宕机时,工作负载会被Master自动转移到其他节点。Node节点之上会运行一组关键进程:
kubelet:负责Pod对应容器的创建,启动、停止等任务。
kube-proxy:实现Kubernetes Service通讯与负载均衡机制的重要组件。
Docker Engine:Docker引擎,负责容器的创建和管理
3.3 Pod Pod是Kurbernetes进行创建、调度和管理的最小单位,Pod运行在Node节点之上,其中包含多个业务容器,这些业务容器之间共享网络命名空间、Ip地址、端口,可以通过localhost进行通讯。Pod有两种类型:普通Pod和静态Pod。
3.4 Replication Controller Kurbernetes用来管理和保证集群中拥有的Pod。
4. Kubernetes的架构 Kubernetes的一切都是基于分布式的,下面这张图就是Kubernetes的架构图
通过这张架构图我们发现Kurbernetes主要由以下几个核心组件组成:
Etcd:保存整个集群的状态。
API Server:提供认证、授权、访问控制、API注册和发现等机制,是资源操作的唯一入口。
Kurbernetes Controller:负责维护集群的状态。
Scheduler:负责资源的调度。
kubelet:负责维护容器的生命周期,同时管理Volume和网络。
Container:负责镜像管理以及Pod和容器的真正运行。
kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡。
5. Kubernetes的搭建5.1 准备工作 因为Kubernetes的一切都是基于分布式的,那么,要想搭建Kubernetes就需要准备多台服务器主机,因为条件有限,这里我采用搭建多台虚拟机系统的方式进行,所以需要将虚拟机和镜像系统准备好。
虚拟机:这里的虚拟机我采用的是VMware,当然也可以采用VirtualBox,VMware下载地址如下:
镜像系统:虚拟机的镜像系统我采用的是:CentOS-7-x86_64-DVD-1810,下载地址如下:
5.2 虚拟机环境搭建 我们准备安装三个虚拟机节点,一个为Kubernetes的Master节点,剩下两个为Kubernetes的Node节点,这里我们只演示第一个安装第一个节点,剩下的两个节点,采用VMware复制镜像的方式进行。
5.2.1 虚拟机环境要求搭建Kubernetes,虚拟机环境至少要满足以下要求:
操作系统 CentOS 7
内存 2G 【至少】
CPU 2核【至少】
硬盘 20G 【至少】
5.2.2 创建虚拟机 打开VMware,选择“文件”菜单“新建虚拟机”选项,或者直接点击界面上的“创建新的虚拟机”选项,创建新的虚拟机,如下图所示:
在弹出的弹窗中选择“经典”选项,点击“下一步”按钮,如下图所示:
在弹出的新的弹窗中选择“稍后安装操作系统”选项,点击“下一步”按钮,如下图所示:
在弹出的新的弹窗中选择客户机操作系统为“Linux”,版本为“CentOS 64位”,点击“下一步”按钮,如下图所示:
在弹出的新的弹窗中设置虚拟机名称为“K8S_Node1”,选择虚拟机系统的安装位置,点击“下一步”按钮,如下图所示:
在弹出的新的弹窗中设置最大磁盘大小为20G,选择“将虚拟磁盘存储为单个文件”,点击“下一步”按钮,如下图所示:
在弹出的新的弹窗中选择“自定义硬件”选项
在弹出的硬件配置弹窗中,内存设置为2048M,如下图所示:
处理器设置为2个,如下图所示:
镜像文件选择本地下载好的镜像文件,如下图所示:
设置完内存、处理、镜像文件之后,点击“关闭”按钮,回到新建虚拟机向导页面,点击“完成”按钮,完成新建虚拟机。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |