kubernetes学习记录(1)——kubernetes初理解

入门时,学习阅读的为《你闺女也能看懂的插画版Kubernetes指南》。由Deis的平台架构师Matt Butcher向他女儿介绍什么是Kubernetes,内容短小精悍、浅显易懂。

Kubernetes是一个开源的Docker容器编排系统,它可以调度计算集群的节点,动态管理上面的作业,保证它们按用户期望的状态运行。通过使用「labels」和「pods」的概念,Kubernetes将应用按逻辑单元进行分组,方便管理和服务发现。

以只有一个界面的简单PHP应用为例。 PHP应用运行在一个托管服务里,与其他的应用共享环境。 如果想与其他应用分离,则可以通过一个web server提供给该PHP应用一个专属的环境。

每个应用的运行都要依赖一个环境,对于一个PHP应用来说,这个环境包括了一个webserver,一个可读的文件系统和PHP的engine。

这个环境也可以封装进一个容器里。容器可以为应用提供隔离的环境,在这个环境里应用就能运行起来。但是这些相互隔离的容器需要管理,也需要跟外面的世界沟通。共享的文件系统、网络、调度、负载均衡和资源分配等都是挑战。

Kubernetes就可以管理这些容器。Kubernetes项目由Google发起,旨在为生产环境中成千上万的容器构建一个健壮的平台。

Kubernetes使用label作为nametag来区分事物,也可以根据label来查询。label是开发式的,可以根据角色、稳定性或其它重要的特性来指定。

Label是用于区分Pod、Service、RC的Key/Value对。每个对象可以有多个Label,但每个Label的Key只能对应一个Value。

Kubernetes在容器上又做了一层封装,将容器封装到pod里。在Kubernetes中,创建、调度和管理的最小单位是pod而不是容器。

在Kubernetes中,pod代表着一个运行着的工作单元。一般情况下,每个pod中只有一个容器(原因是为了避免容器之间发生端口冲突)。如果几个容器是紧耦合的,也可以放在同一个pod中,但一定要避免同一个pod下容器之间发生端口冲突。Kubernetes承担了pod与外界环境的通信工作。

Kubernetes是使用Replication controller,可以管理任意数量的pod。一个replication controller包含了一个pod模板,这个模板可以被不限次数地复制。通过replication controller,Kubernetes可以管理pod的生命周期,包括扩/缩容,滚动部署和监控等功能。

RC可以确保在任何时候Kubernetes集群中有指定数量的Pod副本在运行。如果少于指定数量,RC会自动创建新的Pod副本,反之会杀死多余的副本以保证数量不变。RC是实现弹性伸缩、滚动升级的核心。

Kubernetes通过Service能够提供pod间的相互通信。service可以和Kubernetes环境中其它部分(包括其它pod和replication controller)进行通信,告诉它们你的应用提供什么服务。Pod可以四处移动(会改变IP地址),但是service的IP地址和端口号是不变的。而且其它应用可以通过Kubernetes的服务发现找到对应的service。

Service是真实应用服务的抽象。将代理的Pod对外表现为一个单一的访问接口,外部不需要了解后端Pod如何运行,提供了一套简化的服务代理和发现机制。

Volume代表一块容器可以访问和存储信息的空间,对于应用来说,volume是一个本地的文件系统。实际上,除了本地存储,Ceph、Gluster、Elastic Block Storage和很多其它后端存储都可以作为volume。

Namespace是Kubernetes内的分组机制。Service,pod,replication controller和volume可以很容易地和namespace配合工作。namespace为集群中的组件间提供了一定程度的隔离。

最后放一张Kubernetes的架构图。摘自《云计算架构技术与实践第2版》第五章。

目前打算看的书有两本,一本为《Kubernetes实战》,一本为《Kubernetes权威指南-从Docker到Kubernetes实践全接触》。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏魏艾斯博客www.vpsss.net

云服务器装了 linux 面板挂载磁盘后不显示数据盘

1843
来自专栏乐百川的学习频道

在虚拟磁盘中安装Windows Server 2016

说起来我一直没有安装过Windows服务器版的系统,所以最近想尝试一下Windows Server 2016,这个最新的Windows服务器系统。当然如果是家用...

3776
来自专栏Linyb极客之路

Nginx配置详解

Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。

981
来自专栏杂烩

centos7安装Rancher 原

    Rancher号称是全栈化容器管理平台,官网:https://www.cnrancher.com/。

1314
来自专栏北京马哥教育

10个方法助你轻松完成Linux系统恢复

在Linux中有一些应用程序可以帮助你保存系统快照。大多数应用程序都是针对于新手的,并不需要高级的Linux操作技巧。我们在这里挑选了10个,你可以从中选择适合...

3265
来自专栏Youngxj

[教程]超简单搭建WEB服务器

3065
来自专栏小狼的世界

谈一下Docker与Kubernetes集群的日志和日志管理

日志对于我们管理Kubernetes集群及其上的应用具有非常重要的作用,特别是在出现故障或者Bug的时候。如果你能回答下面几个问题,那么可以不用再看本文了,如果...

811
来自专栏木子昭的博客

免代理下载安装纯净Chrome插件离线包

Chrome的插件非常好用, 作者还为此在简书开了一个文集Chrome插件英雄榜, 用于详细介绍一些小众插件的使用方法

871
来自专栏青青天空树

mongodb3 ubuntu离线安装(非apt-get)及用户管理

  目前mongodb已经出到3.x,相对于2.x改动较大,本着学新不学旧的原则来捣鼓nosql数据库。最初想着apt-get安装但是软件源上都是2.x的,遂下...

661
来自专栏FreeBuf

Docker从入门到放弃

本文将以比较简单的的方式让大家理解docker,以平时常用到的测试环境为主,从用开始,慢慢理解docker。

893

扫码关注云+社区