1.定义和功能。
1.1定义:kubernets解释为舵手或者飞行员,以Borg为主衍生出。
1.2功能:自动装箱,自我修复,水平扩展,服务发现和负载均衡,自动发布和回滚。
密钥和配置管理,存储编排,批量处理执行。
2.架构。
2.1master(本身集群)主要包含三部分:1.API server 2.Scheduler 3.Controller-Manage
•API server:负责接收和处理请求
•Scheduler调度器:来观察各个node的资源情况,选择最好的资源响应用户的请求;两级调度:1.海选2.在海选中优选。
•Controller-Manage(冗余性):负责监控每个Controller的状态。Controller,控制器,持续不断(loop)的对容器做检测,是否符合用户预期或者宕机等。
2.2node上的一个组件kuberlet,对node上容器引擎(docker为主)做响应的启动等和健康检查。kube-proxy和API server进行通信,管理Service。
2.3pod是k8s集群中最小的逻辑单元,每个pod中主要包含容器。特性如下:
2.3.1pod中的容器共享网络和存储卷。
2.3.2一般一个pod是单容器模式或一主多辅模式(如nginx和logstach共存)。
2.3.3Client和pod通信,中间经过一层中间层(Service),其本质就是类似iptables的端口转发(DNAT)。
2.3.4pod的控制器
分别对应不同的后台资源,Depolyment还支持二级控制器,HPA(HorizontalPodAutosclar),能根据请求量自动扩容或者缩容。
2.3.5pod地址是不断变化的,所以Service和pod是通过Lable Selector(标签选择器)进行通信。相同功能的podLable是一样的。
2.4网络层(三层网络,不同网段)
2.4.1简单架构图
网络提供上只要遵循CNI(容器网络接口),就能为k8s提供网络服务。
2.4.2二层维度:
1.为pod和Service提供ip服务
2.提供网络策略(隔离不同pod之间通信等)。
canel是flannel和calico的结合,flannel提供网络配置,calico提供网络策略。不直接使用calico是因为配置较为复杂。
2.4.3整体网络架构:三层网络
2.5架构中存储架构信息是存在共享存储(etcd)中。架构之间的通信需要五套ca证书。
1.etcd(一般是三个)之间的内部通信;
2.etcd和API server之间通信;
3.API server和client之间通信;
4.API server和kuberlet之间通信;
5.API server和kube-proxy之间通信。