k8s概述(背景,组件,Master和Nobe)

Kubernetes是一款开源的容器管理系统,旨在简化容器化应用的部署和管理。它自动化容器部署、扩展和运维,支持Pod和Service的管理,提供负载均衡和容错能力。Master节点负责调度和管理,包括kube-scheduler、kube-apiserver和kube-controller-manager等组件;Node节点运行kubelet和kube-proxy,负责Pod的实际运行和网络代理。Pod作为最小运行单元,包含共享存储和网络的容器,Service则定义了Pod的逻辑集合和访问策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念

Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着,包括将一个容器保持持续,关闭或者其他。

背景和价值

首先了解 k8s的前世今生,k8s是 Kubernetes的缩写,原因是因为 K 和 s 之间有八个字母,以此来简写的。最开始是由 Mesos最先开始的集群的管理和部署,然后 k8s 才慢慢介入进来。

最开始,PaaS(平台即服务)需要大量的运维工程师,当用户买定产品,运维工程师需要为用户安装相应的运营环境,由于不同的配置环境,运营工程师承担着极大的压力。后来包括虚拟机等产出,运维工程师可以将整个系统和环境带给用户,再到后面,docker的出现解决的不同APP以及其对应的不同配置环境的封装技术,有较高的安全性能,利用宿主机的硬件设备,大打算建了对于内存的需要。

然而这依旧存在着问题,就是由于容器化,不同封装环境中的调用会麻烦,并且,不同物理机运营着不同的运营环境,如果只是多台物理机,只需要将端口对接好就可以完成集群(虽然这样的容器占有率很高),但由于容器化,形成映射关系,转换就需要较高的时间处理,而且一台物理机上可能运行着多个运行,大大增加的集群管理的难度,k8s便因此应运而生了。

功能

k8s的功能主要有:

自动化容器的部署和复制
随时扩展或收缩容器规模
将容器组织成组,并且提供容器间的负载均衡
很容易地升级应用程序容器的新版本
提供容器弹性,如果容器失效就替换它

原理

组件

在这里插入图片描述
如图所示,是k8s的所有组件,上半部分是属于Master, 主要做整个集群的任务调配,pod的管理和维护,将不同人物调度到不同node上运行,而下面的是node部分,主要运行不同的任务,位置pod的什么周期,和容器引擎完成交互,以下,是对于master和node内部的组件进行详细的介绍。

Master 和 Nobe

在集群的管理中,k8s 会把其中一个机器作为 Master 来运行着着众多管理相关的进程,

kube-scheduler

用于Pob调度,将任务分散至node中去(主要是为新创建的pod在集群中寻找最合适的node,并将pod调度到Node上,在K8S中,scheduler将改写的请求输送到apiserver, 然后由API-server 写入到etcd中。

kube-apiserver
是一切服务的访问端口,给资源对象删改增减接口。

excd
可信赖的分布式键值储存服务,为整个分布式集群存储关键书籍,协助k8s的正常运营,可以理解为是整个k8s的一个内存空间。

kube-controller-manager
集群内部的的管理控制中心,辅助集群内部的pod,服务空间,命名空间等资源,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。以下是对manager内部的一些控制器的介绍:

在这里插入图片描述
**Replication Controller:**副本控制器,确保容器应用的副本数,当有多余的pod出现则删除,有少于则补充,也可以使用deployment,支持滚动更新。
Node Controller:从API-server出获得Nobe信息,监控和管理各个节点。
ResourceQuota Controller:确保资源对象不会占用多余超量的内存空间。
Namespace Controller:通过API-server读取namespace的信息。
Endpoint Controller:负责生成和监管所有Endpoints对象的控制器,监听service和pod之间的变化。(Endpoints表示一个service对应的pod的访问地址。)

在这里插入图片描述

Node

每个节点都运行如下Kubernetes关键组件。

** Kubelet**
CRI,container,running 和 interfere,直接喝容器引擎交互时间容器的生命周期的管理。与Master节点协作,是主节点的代理,负责Pod对应容器的创建,启动,停止等任务。Kubelet定期向主机点汇报加入集群的Node的各类信息,

Kube-proxy
Kubernetes Service使用其将链接路由到Pod,作为外部负载均衡器使用,在一定数量的Pod之间均衡流量。比如,对于负载均衡Web流量很有用。

Docker
Kubernetes使用的容器技术来创建容器。

Pod

上文一直在提到pod这个概念,那么就详细讲一下pod。

Pod是k8s中能被运行的最小逻辑单元,一个pod里可以运行多个容器,这些容器共享存储、网络和命名空间,以及如何运行的规范。在Pod中,所有容器都被同一安排和调度,并运行在共享的上下文中。对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务相关的多个应用容器。

Kubernetes不只是支持Docker容器,它也支持其他容器。

Pod 的上下文可以理解成多个linux命名空间的联合:

PID 命名空间(同一个Pod中应用可以看到其它进程)
网络 命名空间(同一个Pod的中的应用对相同的IP地址和端口有权限)
IPC 命名空间(同一个Pod中的应用可以通过VPC或者POSIX进行通信)
UTS 命名空间(同一个Pod中的应用共享一个主机名)

Pod 和 Service

Pod 是有生命周期的,他们可以被创造,并且销毁以后不会在启动。例如 Deployment 控制Pod的数量,还可以支持滚动更新,先更新一个新的副本,然后将旧的副本删除掉,以此达到更新换代的目的。

而service定义了一组pods的逻辑集合和用于访问他们的策略。在k8s中,应用服务被法宝封装放入容器中在Pod中运行。每个Pod分配一个IP地址,然而,一个应用可以会被部署到多个Pod中,Pod也可能不断的被创造和销毁,k8s利用service这一抽象层,来讲同一应用下的pod打包,通过service进行统一访问(可能通过label实现,label是一种k8s的管理方式,用于分类管理资源对象,标签和资源属于多对多的对应关系),service将用户的请求转发到pod对应的端口上,创建了pod端口和用户访问端口的一种映射关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值