1、kubernetes特性前端
自动装箱,自我修复,水平扩展,服务发现和负载均衡,自动发布和回滚,密钥和配置管理,存储编排,批量处理执行。node
2、kubernetes clusterdocker
Masters * 3 <===> Node(worker) * n数据库
3个Master节点,保持高可用。多个Node工做节点。服务器
3、基本概念网络
1. Master
kubernetes里德Master是集群的控制节点,一般3台服务器做为冗余部署。
Master中有三个组件:
(1)API Server:集群的入口API
(2)scheduler:调度器,调度Pod
(3)Controller Manager:管理各类控制器。(控制器在loop中监控容器状态,在须要时向API Server发送请求。)负载均衡
2. Pod
(1)Pod是Kubernetes的基础单元,Pod能够认为是容器的外壳,给容器做了一层抽象的封装。
(2)一个Pod能够包含多个容器,多个容器共享一个网络名称空间(net,UTS,IPC),而PID,USER,Mount是隔离的。
(3)一个Pod内的容器共享存储卷。
(4)一个Pod内的全部容器必须运行在同一个Node上。分布式
3. Node
工做节点,多个Node的资源造成统一资源池。
每一个Node节点上都运行一下关键进程:
(1)kubelet:负责Pod对应的容器的建立、启停等任务,同时与Master节点密切协做,实现集群管理的基本功能。
(2)kube-proxy:实现Kubernetes Service的通讯与负载均衡机制的重要组件。
(3)Docker:Docker引擎,负责本机的容器建立和管理工做。oop
4. Label
键值对造成的标签,key与value均由用户自定。label能够附加到各类资源上。经过Label Selector(标签选择器)查询与筛选资源对象。spa
5. Pod控制器
(1)RC(Replication Controller)保持Pod副本数量,多退少补。
(2)Replica Set与Deployment,RS是RC的升级版本,通常被Deployment所使用。
(3)StatefulSet,面向有状态服务
(4)Daemon Set
(5)Job,一次性任务
(6)HPA,Horizontal Pod Autoscaler,横向自动扩容
6. Service
(1)定义了服务的访问入口地址。不是应用程序,只是一个iptables的dnet规则。
(2)前端Pod经过service入口访问,Service负载后面经过Label Selector筛选出的Pod。
(3)每个Service会生成一个虚拟IP,经过Kubernetes的DNS映射,访问Service的name就好。
7. 三种网络通讯
(1)同一个Pod内的多个容器间经过lo
(2)各Pod之间的通讯(跨host)Overlay叠加网络,即隧道
(3)Pod与Service之间通讯:Pod内某容器 ——> 网关(docker0) ——> IPV或iptables规则 ——> Service ——> Pod
三种IP
NodeIP:Node节点的IP
PodIP:Pod的IP
CluserIP:Service的IP
注:每一个node节点中的kube-proxy组件负责更新IPVS或iptables规则。API server ——> kube-proxy ——> 规则
8. etcd
一个高可用的分布式键值数据库。
用来维护全部主节点的状态。
9. CNI
容器网络接口,遵循CNI开发的服务就能够做为kubernetes的网络解决方案。
常见的三方方案:
(1)flannel:配置网络,不支持网络策略
(2)calico:配置网络,配置策略,但使用复杂
(3)canel:使用flannel配置网络,使用calico配置策略。
注:能够像DNS同样做为kubernetes的附件,也能够在node上做为守护进程来使用。
10. Namespacekubernetes的Namespace是逻辑上的分组,以便于管理与资源隔离。与docker的Namespace是不一样的概念。