? ? ? ? K8s集群包含Master(控制节点)和Node(工作节点),应用部署在Node节点上。
集群架构图:
? ? ? ? Master节点分成四个组件:scheduler、ApiServer、Controller Manager、ETCD。类似三层结构,controller,service,dao,scheduler。
? ? ? ? 负责应用调度组件。
? ? ? ? 组件间互相通信,接受外部请求,将配置信息保存到ETCD中。
? ? ? ? 执行集群级功能,如复制组件,跟踪Node节点,处理故障等。
? ? ? ? 分布式存储组件,负责存储集群的配置信息。
? ? ? ?集群的工作节点,容器实际运行的节点。
kubelet: 负责与Container runner和Api Server交互,调度节点上的容器。
kube-proxy: 组件间访问代理,解决节点上访问问题。
Container runner:? 节点中容器实际运行的地方。
容器运行时接口(CRI)、容器网络接口(CNI)和容器存储接口(CSI)。? ?
????????图3?Kubernetes基本对象
? ? ? ? Pod是k8s调度的最小单元,一个Pod可以包含多个容器(Conatiner),存储资源(Volume),一个独立的网络IP及控制容器的策略选项。
? ? ? ? Deployment对Pod的服务化封装。可以通多Deployment创建多个相同的Pod。
? ? ? ? 有状态的对象。相同容器定义的一组Pod,StatefulSet为它们的每个Pod维护了一个固定的ID。每个Pod都有一个永久不变的ID。
????????Job是用来控制批处理型任务的对象。
????????CronJob是基于时间控制的Job,在指定的时间周期运行指定的任务。
????????DaemonSet是这样一种对象(守护进程),它在集群的每个节点上运行一个Pod,且保证只有一个Pod,这非常适合一些系统层面的应用,例如日志收集、资源监控等,这类应用需要每个节点都运行,且不需要太多实例,一个比较好的例子就是Kubernetes的kube-proxy。
????????Service是用来解决Pod访问问题的。Service有一个固定IP地址,Service将访问流量转发给Pod,而且Service可以给这些Pod做负载均衡。
????????Service是基于四层TCP和UDP协议转发的,Ingress可以基于七层的HTTP和HTTPS协议转发,可以通过域名和路径做到更细粒度的划分。
????????ConfigMap是一种用于存储应用所需配置信息的资源类型,用于保存配置数据的键值对。通过ConfigMap可以方便的做到配置解耦,使得不同环境有不同的配置。
????????Secret是一种加密存储的资源对象,您可以将认证信息、证书、私钥等保存在Secret中,而不需要把这些敏感数据暴露到镜像或者Pod定义中,从而更加安全和灵活。
????????PV指持久化数据存储卷,主要定义的是一个持久化存储在宿主机上的目录,比如一个NFS的挂载目录。
????????Kubernetes提供PVC专门用于持久化存储的申请,PVC可以让您无需关心底层存储资源如何创建、释放等动作,而只需要申明您需要何种类型的存储资源、多大的存储空间。