A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 我是楠楠 于 2020-4-29 13:41 编辑

【郑州校区】Kubernetes核心原理和搭建 上

1. 引言
​        在过去,我们在进行程序部署的时候,是直接将环境和程序统一配置部署到主机上,但是这样做容易造成程序与程序之间的混淆,所以为了处理这种问题,我们可以搭建一台不可变的虚拟机镜像,将环境和程序配置部署到虚拟机镜像中,但是虚拟机镜像部署存在体量过于庞大并且不可移动的问题,所以容器技术应运而生,容器技术是基于操作系统级别的虚拟化技术,各个容器与宿主机是隔离的,各个容器之间也是是隔离的,它比虚拟机镜像更容易搭建,并且可以很方便在不同的主机上移动。但是随着分布式、集群等技术在实际应用中越来越多,在实际的生产环境中,我们可能会涉及到多个容器,而这些容器可能会跨越多个服务器主机进行部署,所以一个基于容器技术的分布式架构解决方案应用而生,它就是Kubernetes。
2. Kubernetes的概念
​        Kubernetes(k8s)是一个基于容器技术的的分布式架构解决方案,是Google开源的容器集群管理系统,Google内部称为Borg,主要用于自动部署、扩展和管理容器化的应用程序,是以Docer为基础的分布式系统架构。               
Kubernetes可以对分布式系统进行完美的支撑,它具备完善的集群控制能力,内建有智能的负载均衡器,拥有强大的故障发现和自我修复能力。同时还针对开发、部署测试、运维监控等提供了完善的管理工具。
​        Kubernetes的核心思想是:一切以服务为中心,根据这一核心思想,Kubernetes可以让在其上构建的系统独立运行在物理机、虚拟机群或者云上,所以,Service(服务)是Kubernetes进行分布式集群构建的核心,必须拥有如下关键特征:
  • 拥有一个唯一指定的名称。        
  • 拥有一个虚拟IP和端口。
  • 能够提供某种远程服务能力。可以被映射到提供这种远程服务能力的一组容器应用上。        

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就需要准备多台服务器主机,因为条件有限,这里我采用搭建多台虚拟机系统的方式进行,所以需要将虚拟机和镜像系统准备好。
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个,如下图所示:

镜像文件选择本地下载好的镜像文件,如下图所示:

设置完内存、处理、镜像文件之后,点击“关闭”按钮,回到新建虚拟机向导页面,点击“完成”按钮,完成新建虚拟机。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马