K8s-架构

一、K8s节点划分 

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

集群架构图:

K8s-架构_第1张图片

二、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基本对象
K8s-架构_第2张图片

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可以让您无需关心底层存储资源如何创建、释放等动作,而只需要申明您需要何种类型的存储资源、多大的存储空间。

你可能感兴趣的:(架构)