最近工做用到了kubernetes,因而乎给kubernetes看了一下,感受东西仍是挺多的,不过入门使用不难,仍是挺快的,下面来介绍下kubernetes,让初学者更快的认识、学习kubernetes。
java
kubernetes是什么web
kubernetes是Google的一个大规模容器管理技术的开源版本,可能大部分初学者是学习docker的过程当中认识到kubernetes的,kubernetes确实也能很简单的集成docker,可是,docker只是kubernetes支持的容器之一,并非只有docker才能与kubernetes集成,只不过由于docker比较流行因此优先使用docker。docker
那么为何会有这个kubernetes呢?这与第一句介绍有关:kubernetes是一个大规模容器管理技术的开源版本,也就是说kubernetes是为了管理大规模容器集群的技术,由于当容器多到必定程度后,手动一个个管理就比较麻烦了,耗时耗力,这时就有了众多的容器管理解决方案,方便管理大量的容器,而kubernetes则是其中比较优秀的一个,因此使用者也就比较多了。微信
kubernetes中的概念网络
kubernetes中增长了不少新名词、新概念,新手起初看的时候可能会头晕,感受乱,下面就来介绍一下kubernetes中的几个重要概念。并发
首先是Pod,在kubernetes中,最小的管理单位是Pod而不是docker或其余容器的实例,一个Pod能够包含多个容器,而Pod则对这些容器进行统一管理。
负载均衡
在kubernetes集群中,各个Pod都拥有一个虚拟的IP,该IP会在Pod建立后由kubernetes随机分配,这个IP外部没法直接访问,而在kubernetes内部则是互通的,至关于一个虚拟局域网络。编辑器
一个Pod若是想要对外提供服务,则须要开放端口(也能够经过其余方式解决,这是官方提供的方式),Pod的ClusterIP+端口号就组成了一个Endpoint,该Endpoint对外提供服务,而一个Pod能够开放多个端口,也就是能够对应多个Endpoint。若是想要该Endpoint能够对kubernetes集群外的客户端提供服务,那只须要绑定一个本机端口便可。学习
在kubernetes中,直接编写一个Pod配置文件并发布到kubernetes集群是容许的,可是这相比直接部署docker容器并无什么优点,而kubernetes提供了一种更优优点的方案,那就是经过Pod管理器去管理Pod,在较早的版本中使用的是ReplicationController(后称RC),在新版本中则提供了Deployment,本文不对比两种方案的优劣,只经过RC来介绍该方案的优点。flex
使用RC你能够经过配置文件来完成对Pod数量的控制,只须要在RC文件中指明你须要10个某个Pod的实例,那么RC会自动帮你部署好10个指定Pod的实例,省去了一大笔部署时间,而当其中某个Pod挂掉后,若是是直接部署的Pod,那么就须要手动去重启了,并且还不必定能实时监控到Pod的健康状态,可是经过RC去部署Pod,当Pod挂掉后RC会自动从新部署一个Pod来保证Pod的总数不变。
在kubernetes内网中,调用一个服务能够经过Pod的clusterIP+port的方式调用,可是因为Pod的clusterIP是在Pod建立后随机分配的,也就是没法提早得知Pod的clusterIP,同时Pod有可能被重建,当Pod被重建后IP也会随之变化,这样就形成一个问题,kubernetes也提供了使用环境变量的方法解决,也就是当Pod建立完后会加一条环境变量保存Pod的IP,其余服务调用方能够经过环境变量获取该Pod的IP,进而调用服务,可是以上方式有一些明显的缺点,须要写死IP,可是当Pod重建后以前写死的IP就会失效,若是经过环境变量获取,那么因为Pod可能重建,因此须要每次使用都从新获取,比较麻烦,因此kubernetes提供了Service的概念解决了该问题。
对于一个服务,能够写一个Service统一对外提供服务,Service的IP是固定不变的,同时Service不只解决了Pod的IP没法肯定的问题,若是有多个Pod提供同一服务,那么经过Service还能够为这些Pod作负载均衡,Service会根据指定负载均衡策略去将请求分发到不一样的Pod中。
有了Service就能够经过IP去调用服务了,可是Service的IP不容易记忆,那怎么办?kubernetes同时还提供了一套完善的DNS服务,经过DNS服务,你能够经过Service的名称调用到服务,而DNS服务则会将Service的名称转换为Service的IP。
在kubernetes中,一个Node对应一个主机或者一个虚拟机,Node是Pod的载体,全部Pod都在Node里边部署。当扩展主机时,只须要增长一些配置,该主机就能够自动被kubernetes的master发现并配置为一个Node,供后续部署Pod使用,扩容起来十分的快。
到此,本文就结束了,同时做者本人也是刚开始学习kubernetes,若是有发现不足的欢迎指出~同时使用过程当中有任何问题也能够加我询问,只要我知道的必定帮你解答~
没有关注的能够扫下方二维码关注我,若是在阅读过程当中有任何问题还能够加我QQ1213812243询问~

长按二维码关注我吧
不要错过
本文分享自微信公众号 - java初学者(JoeKerouac_public)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。