能不能具体的说说kubernetes有哪些功能?

目前正在研究kubernetes,打算将来用于平台服务的管理。但是目前我不大理解kubernetes的作用,已知的是:

1.可以根据各个pod的资源使用情况,选择压力较小的pod部署服务(如何知道资源使用情况?用go的runtime?);

2.当有pod上服务挂掉时,会自动补充pod。(这里,挂掉的服务中的数据是否有做迁移?)3.除此之外还有哪些好用的功能呢???


1. cAdvisor 来获取使用情况,这里使用的还是 linux 提供的介面。也就是说,linux 提供了介面使得 docker 可以单独建立一个轻量级的虚拟机,这个虚拟机的使用情况 docker 是知道的,cAdvisor 使用了相同的方式。

2. kubernetes 只是做了简单的高可用性,并不会也做不了数据迁移。你可以理解为 stateless scalability.

3. 主要的新功能是结合了 etcd,这个使用了 raft 协议的一致性存储。可以自己写外挂增强功能。

我想说一下,replicaSet并不会进行以下操作

当有pod上服务挂掉时,会自动补充pod

通常情况下你在使用replica时,pod的重启策略都是只能设置为Always的,当服务挂掉时,pod会原地重启,而非增加

只有当active(包含unknown,pending,running)的pod数量不足replica栏位声明的数量时,replicaSet才会添加pod。

至于数据是否迁移,如果你没有使用volume持久化数据,那么在容器被删除后数据就会丢掉,但是重启容器是不会丢数据的。如果你不手动去删除pod就不会有啥问题,如果真的需要持久化数据就需要使用volume


k8s真正强大的是整合了容器相关的项目,并且可以通过抽象配置来定义业务运行形态。谷歌在线上运营这个领域确实总结了很多有价值的东西。这就是为什么k8s坑这么多的情况下,还能把其它容器编排方案打成皮皮虾。


回忆一下你的生产环境,某天产品要做活动,秒请求量会暴增五倍,咋办。。传统的方法是在找来五倍台物理机,配好各种网路,搭好各种环境变数,部署好各种应用,求运维大爷改Nginx配置,然后在夜深人静的时候各种重启,中间如果遇到错误exception。。。。。。如果使用容器云的话,你只需要点两下滑鼠,点击scale,点击数量,输入五倍的数字,点击确定,收官。当然这只是kubernetes的一个功能点。

1. 不是选择压力最小的pod来部署服务,而是选择压力最小的node来部署node,实际上pod里跑的就是你的程序。kubernetes通过一个单独的组件Cadvisor来获取各个节点的信息。

2. kubernetes会维护一个你告诉它的pod的数目,如果有pod挂了就会自动添加。pod可以使用一些共享存储,这样pod来了又去了,数据一直都在。

3. Pod,Service和Replication Controller,这些新概念都比较闪亮。

尝试在不涉及太多细节的前提下概括性的总结一下k8s的优势:通过service, deployment, volume等概念提供了描述分散式系统的一种高层次的语言,这种语言能很好的概括replication,load balancing等概念。

使用k8s管理服务集群时实际上只需要描述预期的服务运行状态,而不需要说明如何一步一步的启动服务和配置网路来达到这个状态,对于开发者和运维人员来说非常省事。


问题太大,还是自己多到官网或者http://dockone.io去看看吧。

关于资源监控 https://kubernetes.io/docs/tasks/debug-application-cluster/resource-usage-monitoring/

The resource metrics pipeline provides a limited set of metrics related to cluster components such as the Horizontal Pod Autoscaler controller, as well as the kubectl top utility. These metrics are collected by the lightweight, short-term, in-memory metrics-server and are exposed via the metrics.k8s.io API.

pod挂掉补充pod,时候通过 replica的概念实现的。 挂掉的服务中的数据是是PV(persistent volume)下面,所以正常来说PV和PVC设置的好不涉及到数据迁移问题。

另外这些问题问的比较笼统,这样讲解估计也很难一时讲明白。建议通过udemy来学习一些k8s的基本概念。


推荐阅读:
相关文章