K8s-架构

发布时间:2024年01月17日

一、K8s节点划分?

? ? ? ? K8s集群包含Master(控制节点)和Node(工作节点),应用部署在Node节点上。

集群架构图:

二、Master节点

? ? ? ? Master节点分成四个组件:scheduler、ApiServer、Controller Manager、ETCD。类似三层结构,controller,service,dao,scheduler。

2.1 shceduler

? ? ? ? 负责应用调度组件。

2.2 ApiServer

? ? ? ? 组件间互相通信,接受外部请求,将配置信息保存到ETCD中。

2.3 Controller Manager

? ? ? ? 执行集群级功能,如复制组件,跟踪Node节点,处理故障等。

2.4 ETCD

? ? ? ? 分布式存储组件,负责存储集群的配置信息。

三、Node工作节点

? ? ? ?集群的工作节点,容器实际运行的节点。

kubelet: 负责与Container runner和Api Server交互,调度节点上的容器。

kube-proxy: 组件间访问代理,解决节点上访问问题。

Container runner:? 节点中容器实际运行的地方。

四、Kubernetes的扩展性

? ? ? ? 4.1 扩展接口

容器运行时接口(CRI)、容器网络接口(CNI)和容器存储接口(CSI)。? ?

  • CRI(Container Runtime Interface):容器运行时接口,提供计算资源,CRI隔离了各个容器引擎之间的差异,而通过统一的接口与各个容器引擎之间进行互动。
  • CNI(Container Network Interface):容器网络接口,提供网络资源,通过CNI接口,Kubernetes可以支持不同网络环境。例如CCE就是开发的CNI插件支持Kubernetes集群运行在VPC网络中。
  • CSI(Container Storage Interface):容器存储接口,提供存储资源,通过CSI接口,Kubernetes可以支持各种类型的存储。例如CCE就可以方便的对接块存储(EVS)、文件存储(SFS)和对象存储(OBS)。

五、K8s基本对象

????????图3?Kubernetes基本对象

5.1 Pod

? ? ? ? Pod是k8s调度的最小单元,一个Pod可以包含多个容器(Conatiner),存储资源(Volume),一个独立的网络IP及控制容器的策略选项。

5.2 Deployment

? ? ? ? Deployment对Pod的服务化封装。可以通多Deployment创建多个相同的Pod。

5.3 Stateful

? ? ? ? 有状态的对象。相同容器定义的一组Pod,StatefulSet为它们的每个Pod维护了一个固定的ID。每个Pod都有一个永久不变的ID。

5.4?Job

????????Job是用来控制批处理型任务的对象。

5.5?CronJob

????????CronJob是基于时间控制的Job,在指定的时间周期运行指定的任务。

5.6 DaemonSet

????????DaemonSet是这样一种对象(守护进程),它在集群的每个节点上运行一个Pod,且保证只有一个Pod,这非常适合一些系统层面的应用,例如日志收集、资源监控等,这类应用需要每个节点都运行,且不需要太多实例,一个比较好的例子就是Kubernetes的kube-proxy。

5.7?Service

????????Service是用来解决Pod访问问题的。Service有一个固定IP地址,Service将访问流量转发给Pod,而且Service可以给这些Pod做负载均衡。

5.8?Ingress

????????Service是基于四层TCP和UDP协议转发的,Ingress可以基于七层的HTTP和HTTPS协议转发,可以通过域名和路径做到更细粒度的划分。

5.9?ConfigMap(资源配置)

????????ConfigMap是一种用于存储应用所需配置信息的资源类型,用于保存配置数据的键值对。通过ConfigMap可以方便的做到配置解耦,使得不同环境有不同的配置。

5.10?Secret(加密存储)

????????Secret是一种加密存储的资源对象,您可以将认证信息、证书、私钥等保存在Secret中,而不需要把这些敏感数据暴露到镜像或者Pod定义中,从而更加安全和灵活。

5.11?PersistentVolume(PV)(持久化存储卷)

????????PV指持久化数据存储卷,主要定义的是一个持久化存储在宿主机上的目录,比如一个NFS的挂载目录。

5.12?PersistentVolumeClaim(PVC)(持久化存储卷声明)

????????Kubernetes提供PVC专门用于持久化存储的申请,PVC可以让您无需关心底层存储资源如何创建、释放等动作,而只需要申明您需要何种类型的存储资源、多大的存储空间。

文章来源:https://blog.csdn.net/qq_16803227/article/details/135632126
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。