一个Kubernetes集群首先需要包含两个部分 :
● master(主控节点)和node(工作节点)
(1)master组件
● API server:集群的一个统一入口,以restful的方式,交给etcd进行存储。
● scheduler:节点调度,选择node节点应用部署
● controller-manager:处理集群中常规后台任务,一个资源对应一个控制器,维持副本的期望数目
● etcd:存储系统,用于保存集群相关的数据(持久化)
(2)node组件
● kubelet:可以理解为master派到node里的一个代表,管理本机的容器,直接跟容器引擎交互,实现容器生命周期的管理
● kube-proxy:提供网络代理,负载均衡等操作
● CoreDNS:可以为集群中的SVC创建一个域名IP的对应关系解析
● Dashboard:给K8s集群提供一个B/S结构访问体系
● Ingress Controller:官方的只能实现四层代理,INGRESS可以实现七层代理
● FEDERATION:提供一个可以跨集群中心多K8s统一管理功能
● PROMETHEUS:提供K8s集群的监控能力
● ELK:提供K8s集群日志统一分析介入平台
K8S核心概念:
① Pod:
● K8S中的最小部署单元
● 一组容器的集合
● 一个Pod中的容器是共享网络的
● 一个Pod的生命是短暂的
② controller:
● 确保预期的pod副本数量
● 有状态应用部署
● 无状态应用部署
● 确保所有的node运行同一个Pod
● 一次性任务和定时任务
③ Service:
● 定义一组Pod的访问规则
过程:通过Service统一入口进行访问,由controller去创建Pod进行部署。