k8s学习-基础组件以及核心概念
  TEZNKK3IfmPf 2023年11月14日 23 0

Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。 使用Kubernetes可以:

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

Master组件是集群的控制平台

  • master负责进群中的全局决策(调度)
  • master组件探测并响应集群使劲按,例如,当Deployment的实际Pod副本数量未达到replicas字段的规定的时候,启动一个新的pod

master组件可以运行于集群的任何机器上,但是为了简洁性,通常在同一台机器上运行所有的master组件,且不在此机器上运行用户的容器。

kube-apiserver

此组件提供k8s API,这是kubernetes控制平台的前端,可以水平扩展,通过部署更多的实例达到性能要求。kubectl/kubernetes dashboard /kuboard等k8s管理工具就是通过api实现对集群的管理。

etcd

支持一致性和高可用的键值对存储组件,集群的所有配置都存储在etcd中。

kube-scheduler

此组件监控所有的新创建尚未的分配到节点上的Pod,并且自动为pod选择一个核实的节点区运行。

影响调度的因素有:

  • 单个或者多个pod资源要求
  • 硬件、软件、策略的限制
  • 亲和与反亲和的预定
  • 数据本地化的要求
  • 工作负载间的相互作用

 

kube-controller-manager

此组件运行了所有的控制器。

逻辑上来说,每一个控制器都是一个独立的进程,但是为了降低复杂度,这些控制器都被合并运行到一个进程里面。

其中包含的控制器有;

  • 节点控制器:负责监听节点停机的事件并作出对应响应
  • 副本控制器,负责为集群中的每一个副本控制器对象(Replication Conroller Object)维护期望的POD副本数
  • 端点(Endpoints)控制器,负责为端点对象(Endponts Object,连接service和pod)赋值
  • Service Account & Token 控制器:负责为新的名称空间创建default Service Account以及API Access Token

cloud-controller-manager

 此组件中运行了与具体云基础设施供应商互动的控制器,它只运行特定于云基础设施供应商的控制器,默认k8s集群不安装cloud-controller-manager

Node组件

node组件运行在每一个节点上,包括master和worker节点,负责运维运行中pod并负责提供k8s运行环境。

kubelet

此组件是运行在每一个集群节点上的代理程序,它确保pod 中的容器处于运行状态。kubelet通过多种途径获取PodSpec定义,并确保PodSpec定义中所描述的容器处于运行和监控的状态。

 

kube-proxy

kube-proxy 是一个网络代理程序,运行在集群的每一个节点上,是实现kubernets Service概念的重要部分。

kube-proxy在节点上维护网络规则,这些规则可以在集群内外正确的于Pod进行网络通信。如果操作系统中存在packet filtering layer,kube-porxy将使用这一特性,(iptabes代理模式),否则,kube-proxy将自行转发网络请求(User space代理模式)

容器引擎

容器引擎负责运行容器,支持多种容器,包括docker,containderd,cri-o,rktlet以及任何实现的k8s容器引擎接口的容器引擎。

 

Addons

Addons使用k8s资源( DaemonSet,Deployment等)实现进群的功能特性。由于提供集群级别的功能特性,addons使用到的kubernetes 资源都放在kube-system名称空间下。

以下为常用的Addons

DNS

除了DNS Addon以外,其他的addon都不是必须的,所有的kubernetes 集群都应该有Cluster DNS

Cluster DNS 是一个 DNS 服务器,是对您已有环境中其他 DNS 服务器的一个补充,存放了 Kubernetes Service 的 DNS 记录。

Kubernetes 启动容器时,自动将该 DNS 服务器加入到容器的 DNS 搜索列表中。

 

Web UI (Dashboard)

 

Dashboard (opens new window)是一个Kubernetes集群的 Web 管理界面。用户可以通过该界面管理集群。

 

 

集群

集群是一组节点,这些节点可以是物理服务器或者虚拟机,之上安装了Kubernetes平台

以下是k8s典型架构图

k8s学习-基础组件以及核心概念

 

 

Pod

安排在节点上,包含一组容器和卷。同一个Pod里的容器共享同一个网络命名空间,可以使用localhost互相通信。Pod是短暂的,不是持续性实体。

Label

一些pod有Lable,一个label 是attach到pod的一堆键值对,用来传递用户定义的属性。比如通过label来标记前端pod容器,使用label标记后端pod容器。然后使用selectors选择带有特定label的pod。

Replication Controller

 

Replication Controller确保任意时间都有指定数量的Pod“副本”在运行。如果为某个Pod创建了Replication Controller并且指定3个副本,它会创建3个Pod,并且持续监控它们。如果某个Pod不响应,那么Replication Controller会替换它,

k8s学习-基础组件以及核心概念

如果之前不响应的Pod恢复了,现在就有4个Pod了,那么Replication Controller会将其中一个终止保持总数为3。如果在运行中将副本总数改为5,Replication Controller会立刻启动2个新Pod,保证总数为5。还可以按照这样的方式缩小Pod。

Service

pods是短暂的,重启的时候ip可能会改变,可以通过service来保证。

  • 会为Service创建一个本地集群的DNS入口,因此前端Pod只需要DNS查找主机名为 ‘backend-service’,就能够解析出前端应用程序可用的IP地址。
  • 现在前端已经得到了后台服务的IP地址,Service在这2个后台Pod之间提供透明的负载均衡,会将请求分发给其中的任意一个()。通过每个Node上运行的代理(kube-proxy)完成。

k8s学习-基础组件以及核心概念

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

  • Kubelet:是主节点代理。
  • Kube-proxy:Service使用其将链接路由到Pod,如上文所述。
  • Docker或Rocket:Kubernetes使用的容器技术来创建容器。
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月15日   31   0   0 k8s
TEZNKK3IfmPf