Kubernetes学习笔记 Kubernetes基本概念及原理

本文详细介绍了Kubernetes的基本概念,包括Master、Node、Pod、Label、Replication Controller、Deployment、Horizontal Pod Autoscaler (HPA)、Service、Volume、Persistent Volume (PV)、Namespace和Annotation。此外,还深入解析了Kubernetes的API Server、Controller Manager、Scheduler、kubelet和kube-proxy的工作原理,阐述了如何实现资源调度、管理与通信。
摘要由CSDN通过智能技术生成

Kubernetes学习笔记

1.Kubernetes基本概念

1.1 Master

Master是K8S里的集群控制节点,每个K8S集群里需要一个Master节点来负责整个集群的管理和控制,基本上K8S所有的命令都是发给它,它来负责具体的执行过程。

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

  • Kubernetes API Server,提供了HTTP Rest接口的关键服务进程,是Kubernetes里所有资源增、删、改、查等操作的唯一入口,也是集群控制的入口进程。
  • Kubernetes Controller Manager,Kubernetes里所有资源对象的自动化控制中心,可以理解为资源对象的“大总管”
  • Kubernetes Scheduler,负责资源调度(Pod调度)的进程,相当于公交公司的“调度室”
  • etcd Server,Kubernetes里的所有资源对象的数据都是保存在etcd中的

1.2 Node

除了Master之外的运行在Kubernetes集群中的节点成为Node节点。Node节点是Kubernetes集群中的工作负载节点,每个Node都会被Master分配一些工作负载(Docker容器),当某个容器宕机时,其上的工作负载会被Master自动转移到其他节点上去。

每个Node节点都运行着以下一组关键进程:

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

1.3 Pod

Pod是Kubernetes中管理,创建,计划的最小单元。每个Pod都有一个特殊的被称为“根容器”的Pause容器。Pause容器对应的镜像属于Kubernetes平台的一部分,除了Pause容器,每个Pod还包含一个或多个紧密相关的用户业务容器。如图1.1所示
Pod的组成与容器的关系

图1.1 Pod的组成与容器的关系

Kubernetes为每个Pod都分配了唯一的IP地址,称之为Pod IP,一个Pod里的多个容器共享Pod IP地址。在Kubernetes里,一个Pod里的容器与另外主机上的Pod容器能够直接通信。

Pod有两种类型:普通的Pod及静态的Pod。

静态的Pod并不存放在Kubernetes的etcd存储里,而是存放在某个具体的Node上的一个具体文件中,并且只在此Node上启动运行。

普通的Pod一旦被创建,就会被放入到etcd中存储,随后会被Kubernetes Master调度到某个具体的Node上并进行绑定,随后该Pod被对应的Node上的kubelet进程实例化成一组相关的Docker容器并启动起来。在默认情况下,当Pod里的某个容器停止时,Kubernetes会自动检测到这个问题并且重新启动这个Pod(重启Pod里的所有容器),如果Pod所在的Node宕机,则会将这个Node上的所有Pod重新调度到其他节点上。Pod、容器与Node的关系如图1.2所示。
Pod、容器与Node的关系

图1.2 Pod、容器与Node的关系

Endpoint(Pod IP + ContainerPort)是Pod里的一个服务进程的对外通信地址。一个Pod可能有多个Endpoint。

Pod Volume是定义在Pod之上,然后被各个容器挂载到自己的文件系统中的。

Event是一个事件的记录,记录了事件的最早产生事件、最后重现时间、重复次数、发起者、类型,以及导致此事件的原因等众多信息。Event通常会关联到某个具体的资源对象上,是排查故障的重要参考信息。

Pod及其周边对象的示意如图1.3所示
Pod及周边对象

图1.3 Pod及周边对象

1.4 Label

一个Label是一个key=value的键值对,其中key与value由用户自己指定。Label可以附加到各种资源上,例如Node、Pod、Service、RC等。一个资源对象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上去,Label通常在资源对象定义时确定,也可以在对象创建后动态添加或者删除。

Label Selector在Kubernetes中的重要使用场景有以下几处:

  • kube-controller进程通过资源对象RC上定义的Label Selector来筛选要监控的Pod副本的数量,从而实现Pod副本的数量始终符合预期设定的全自动控制流程。
  • kube-proxy进程通过Service的Label Selector来选择对应的Pod,自动建立起每个Service到对应Pod的请求转发路由表,从而时间Service的智能负载均衡机制。
  • 通过对某些Node定义特定的Label,并且在Pod定义文件中使用Nod
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值