就是管理这些房子的大管家
Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg),它主要用于 容器编排 启动容器、自动化部署、扩展和管理容器应用和回收容器。k8s的目标是让部署容器化的应用简单并且高效,k8s提供了应用部署、规划、更新、维护的一种机制!
要理解k8s必须首先要知道k8s和docker关系。
首先,咋们先来确定一个事,docker 用过吗,用过的打个1,没有用过的打个2。没有用过的成了一股清流,赶紧去找下水源助助教小姐姐。
k8s是一个舵手,专门用来进行给docker掌管方向的。
可能你们没有接触过这样的场景,不是很好理解,咱们再来说一个,公司场景。在座的各位应该都是上班的吧,有没有没上班的
上了那么久的班,公司里面应该有老板和员工。这个都不否认吧,老板是干嘛的?员工是干嘛的?
老板定方向和协调员工做事的,员工是做事的。这些都是他们的职责。那么docker 和 k8s的关系,k8s是老板,docker呢就是员工。作用是一样的,k8s就是让docker来干事的。
咋们在看一个非常形象的例子:我想大家都是非常喜欢坐顺风车的,滴滴,顺风车司机。k8s就是滴滴,docker就是司机
总结:k8s是一个专门的容器编排引擎。k8s就是让应用在docker上运行。
为什么要使用k8s
swarm 优点
1、架构简单,部署运维成本低
docker swarm 集群模式由于原生态集成到docker-engine中,所以首先学习成本低,对于使用docker-engine 1.12版本及以上可以平滑过渡,service服务可以满足动态增减容器个数,同时具备自身的负载均衡,swarm管理者多台设定保证了机器在出错后有一个良好的容灾机制
2、启动速度快
swarm集群只会有两层交互,容器启动是毫秒级
swarm缺点
1 无法提供更精细的管理
swarm API兼容docker API,所以使得swarm无法提供集群的更加精细的管理
2 网络问题
在网络方面,默认docker容器是通过桥接与NAT和主机外网络通信,这样就出现2个问题,一个是因为是NAT,外部主机无法主动访问到容器内(除了端口映射),另外默认桥接IP是一样的,这样会出现不同主机的容器有相同的IP的情况。这样两容器更加不能通信。同时网络性能方面,有人测试经过桥接的网络性能只有主机网络性能的70%。当然以上问题可以通过其他工具解决,比如用 Flannel 或者 OVS网桥
3 容器可靠性
在容器可靠性方面,相较于Kubernetes的Replication Controllers可以监控并维持容器的生命,swarm在启动时刻可以控制容器启动,在启动后,如果容器或者容器主机崩溃,swarm没有机制来保证容器的运行。
kubernetes优点:
1 管理更趋于完善稳定
kubernetes 集群管理更趋于完善稳定,同时pod功能上比swarm的service更加强大
2 健康机制完善
Replication Controllers可以监控并维持容器的生命
3 轻松应对复杂的网络环境
kubernetes默认使用Flannel作为overlay网络。
Flannel是CoreOS 团队针对 Kubernetes 设计的一个覆盖网络(OverlayNetwork)工具,其目的在于帮助每一个使用 Kuberentes 的CoreOS 主机拥有一个完整的子网。
kubernetes劣势:
1 配置、搭建稍显复杂,学习成本高
由于配置复杂,学习成本相对较高,对应运维的成本相对高点
2 启动速度稍逊
kubernetes会有五层交互,启动是秒级,启动速度慢于swarm