1.介绍
什么是kubernetes:
Google主导的分布式容器调度和业务编排。
容器编排,通常包括容器管理、调度、集群定义和服务发现等,实现了单机到集群的容器管理。
来源于 Google 内部系统 Borg(博格)
希腊语:舵手
价值别称: 网络操作系统
容器编排系统
Open-source software for automating deployment, scaling, and management of containerized applications
Kubernetes发展历程:
2014 年 9 月第一个正式版本,2017年时具有里程碑的一年
主要贡献者:Google,Redhat,Microsoft,IBM,Intel
72927 commits,1907 contributors
466 Release, Stable: v1.13.0
100 节点->2,000 节点,1000 pods -> 150,000 pods
2.架构
master节点
node节点
数据etcd,采用raft一致性算法,共识算法
(raft协议中,一个节点任一时刻处于以下三个状态之一:
- leader
- follower
- candidate(候选者)
可以看出所有节点启动时都是follower状态;在一段时间内如果没有收到来自leader的心跳,从follower切换到candidate,发起选举;如果收到majority的造成票(含自己的一票)则切换到leader状态;如果发现其他节点比自己更新,则主动切换到follower。
总之,系统中最多只有一个leader,如果在一段时间里发现没有leader,则大家通过选举-投票选出leader。leader会不停的给follower发心跳消息,表明自己的存活状态。如果leader故障,那么follower会转换成candidate,重新选出leader。)
3.资源以及术语
pod
service
rc 控制器:
Deployment 声明式地升级应用
Statefulset 部署有状态的多副本应用
DaemonSet
job
4.通信网络
从k8s的1.8版本开始,kube-proxy引入了IPVS模式,IPVS模式与iptables同样基于Netfilter,但是采用的hash表,因此当service数量达到一定规模时,hash查表的速度优势就会显现出来,从而提高service的服务性能。