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 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

使用Glimpse 监测ASP.NET MVC网站

使用MiniProfiler调试ASP.NET MVC网站性能,MiniProfiler可以很好的处理网站后端每个处理时间的事件,但是MiniProfiler是...

1909
来自专栏云计算

Kubernetes服务网格(第8部分):Linkerd作为入口控制器

Linkerd旨在使应用程序内部服务间的通信安全,快速和可靠。但是,这些目标同样适用于网络的接入层(应用程序对外的服务)。在这篇文章中,我们将展示Linkerd...

4218
来自专栏智能大石头

多线程带智能采集策略的采集系统

    去年年底的时候曾经发过一个数据采集器《网页数据采集器》,那是专门针对某一个网站来进行采集的,如果需要采集新的网站内容,就需要修改代码并重新编译。    ...

1878
来自专栏开源FPGA

SDRAM读写状态解析

(1)在IDLE状态需要先给ACT命令激活某一行,此时处于Row Active状态。

680
来自专栏腾讯云服务器团队的专栏

腾讯云 CBS 性能测试用例参考

2、fio测试建议在空闲的、未保存重要数据的硬盘上进行,并在测试完后重新制作文件系统。请不要在业务数据硬盘上测试,避免底层文件系统元数据损坏导致数据损坏。

31013
来自专栏北京马哥教育

Linux之HA高可用集群的基础概念总结

HA(High Availability)高可用集群,其特点为根据实际需求为前端Diretor,后端RS-server,数据库服务器,共享存储等集群节点做一个...

3646
来自专栏张善友的专栏

为什么 web 开发人员需要迁移到. NET Core, 并使用 ASP.NET Core MVC 构建 web 和 webservice/API

如果你是一个初学者开始学习 ASP.NET 或 ASP.NET MVC, 你可能并不知道什么是. net Framework和. net ore。不用担心!我建...

1544
来自专栏jessetalks

Windows平台分布式架构实践 - 负载均衡(下)

概述   我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现...

35010
来自专栏腾讯云中间件团队的专栏

Raft 算法原理及其在 CMQ 中的应用(下)

Raft 算法是一种分布式一致性算法。与 paxos 相比,它更易理解和工程化。我们完整实现了该算法并将其应用在自研的高可靠消息中间件 CMQ 中,同时沉淀出对...

6990
来自专栏分布式系统进阶

Kafka是如何处理客户端发送的数据的?

// respond immediately if // 1) fetch request does not w...

761

扫码关注云+社区