K8s学习(1)---基本介绍和概念理解

1 Kubernetes介绍

用于自动化容器化应用程序的部署、规划、扩展和管理,它将组成应用程序的容器分组为逻辑单元,以便于管理和发现,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效,很多细节都不需要运维人员去进行复杂的手工配置和处理。

官网
GitHub源码

2 Kubernetes整体架构

在这里插入图片描述

2.1 Master

kubernetes里的Master指的是集群控制节点。每个kubernetes集群里都需要一个Master节点来负责整个集群的管理和控制,基本上kubernetes所有的控制命令都是发给它,它来负责具体的执行过程,我们后面所有的执行的命令基本上都是在Master节点上运行的。Master节点通常会占据一个独立的服务器或虚拟机,就是它的重要性体现,一个集群的大脑,如果它宕机,那么整个集群将无法响应控制命令。

Master节点上运行着以下几组关键进程:

  1. Kubernetes API Server(kube-apiserver):提供了HTTP Rest接口的关进服务进程,是Kubernetes里所有资源增删改查等操作的唯一入口,也是集群管理的入口进程。
  2. Kubernetes Controller Manage(kube-controller-manage):Kubernetes里所有资源对象的自动化控制中心,可以理解为资源对象的“大总管”。
  3. Kubernetes Scheduler(kube-scheduler):负责资源的调度(Pod调度)的进程。
    Master还启动了一个etcd server进程,因为kubernetes里所有的资源对象的数据都是保存在etcd中的。
2.2 Node

除了Master,kubernetes集群的其它机器也被称为Node节点,同样的它也是一台物理机或是虚拟机。Node节点才是Kubernetes集群中工作负载节点,每个Node都会被Master分配一些工作负载(Docker容器),当某个Node宕机之后,其上的工作负载会被Master自动转移到其它节点上面去。

每个Node节点运行着以下几个关键进程:

  • kubelet:负责pod对应的同期创建、启动停止等任务,同时与Master节点密切协作,实现集群管理的基本功能。
  • kube-proxy:实现Kubernetes Service的通信与负载均衡的重要组件。
  • Docker-Engine(docker):docker引擎,负责本机容器的创建和管理工作。

Node节点可以在运行期间动态增加到Kubernetes集群中,前提是这个节点已经正确安装、配置和启动的上述关键进程。在默认情况下kubenet会向Master注册自己,这也是kubernetes推荐的管理方式。一旦Node被纳入集群管理范围,kubelet进程就会定时向Master节点汇报自身的情况,包括操作系统、Docker版本、机器cpu和内存情况及有哪些pod在运行。这样Master可以获知Node的资源使用情况并实现高效均衡的资源调度策略。而某个Node超过时间不进行上报信息时,master将会将其标记为失联(Not Ready),随后会触发资源转移的自动流程

2.3 Pod

pod的组成与容器的关系,pause为根容器,其他为业务容器。
在这里插入图片描述
k8s为每个Pod都都分配了唯一的ip,称之为Pod IP,一个Pod里的多个容器共享Pod IP地址。k8s要求底层网络支持集群内任意两个Pod之间的TCP/IP直接通信,这通常采用虚拟二层网络技术来实现,如Flannel、Openswith等,牢记在k8s中,一个Pod容器与另外主机上的Pod容器能够直接通信。
Pod其实有两种类型:普通的Pod及静态的Pod(static Pod),后者比较特殊,并不存放在k8s的etcd里面存储,而是存放在某一个具体的Node上的一个文件中,并且只在此Node上启动运行而普通的Pod一旦被创建,就会被放入到etcd中存储,随后会被k8s Master调度到某个具体的Node上面进行绑定(Binding),随后该Pod被对应的Node上的kubblet进程实例化成一组的Docker容器并启动起来。默认情况下,当Pod里的某个容器停止时,k8s会自动检测这个问题并重启启动这个Pod(Pod里面的所有容器),如果Pod所在的Node宕机,则会将这个Node上的所有Pod重新调度到其它节点上。Pod、容器与Node的关系如下:

在这里插入图片描述

3 kubernetes组件调用关系的应用示例

以部署一个Nginx服务来说明Kubernetes系统各个组件调用关系:

  • 首先需要明确,一旦Kubernetes环境启动之后,master和node都会将自身的信息存储到etcd数据库中
  • 一个Nginx服务的安装请求首先会被发送到master节点上的API Server组件。
  • API Server组件会调用Scheduler组件来决定到底应该把这个服务安装到那个node节点上。此时,它会从etcd中读取各个node节点的信息,然后按照一定的算法进行选择,并将结果告知API Server
  • API Server调用Controller-Manager去调用Node节点安装Nginx服务。
  • Kubelet接收到指令后,会通知Docker,然后由Docker来启动一个Nginx的Pod。Pod是Kubernetes的最小操作单元,容器必须跑在Pod中。
  • 一个Nginx服务就运行了,如果需要访问Nginx,就需要通过kube-proxy来对Pod产生访问的代理,这样,外界用户就可以访问集群中的Nginx服务了。

4 kubernetes概念

  • Master:集群控制节点,每个集群要求至少有一个Master节点来负责集群的管控。-
  • Node:工作负载节点,由Master分配容器到这些Node工作节点上,然后Node节点上的Docker负责容器的运行。
  • Pod:Kubernetes的最小控制单元,容器都是运行在Pod中的,一个Pod中可以有一个或多个容器。
  • Controller:控制器,通过它来实现对Pod的管理,比如启动Pod、停止Pod、伸缩Pod的数量等等。
  • Service:Pod对外服务的统一入口,其下面可以维护同一类的多个Pod。
  • Label:标签,用于对Pod进行分类,同一类Pod会拥有相同的标签。
  • NameSpace:命名空间,用来隔离Pod的运行环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术闲聊DD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值