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

相关文章

来自专栏SDNLAB

Docker生态系统系列之网络和通信

编者按:网络一直是Docker集群中的最令人头疼的问题,目前Docker已经收购了SocketPlane团队来解决相关问题,也发布了 libnetwork项目。...

34990
来自专栏宝哥的专栏

Docker系列学习文章 - 镜像仓库的介绍(七)

| 导语 前面我们讲了镜像的制作,知道了镜像是怎么生成的。但是镜像制作好了后,要怎么管理?他们存在哪里。通过本篇文章的讲解,大家就清楚了。

2.4K180
来自专栏coding

docker初体验

18510
来自专栏北京马哥教育

docker容器技术系列一:基本概念

前言:从去年下半年开始,我们就尝试在使用docker部署生产应用,至现在已经有十多个项目使用了docker容器部署,docker为我们节约 了大量的服务器资源,...

31340
来自专栏SDNLAB

用防火墙来保障容器安全(Docker/Kubernetes)

在部署任何基于容器的应用程序之前,首先通过确保Docker、Kubernetes或其他容器防火墙来保护容器的安全至关重要。有两种方式来实现容器防火墙:手动或通过...

51260
来自专栏marsggbo

OpenShift的容器映像(第3部分):使你的映像可用

这是我在2017年欧洲、中东和非洲(EMEA)红帽技术交流会议上的一个会议记录,该会议集合了EMEA所有红帽解决方案架构师和顾问。它主要讨论在创建运行于Open...

22990
来自专栏FreeBuf

浅谈Docker隔离性和安全性

介绍 相信很多开发者都默认Docker这样的容器是一种沙盒(sandbox)应用,也就是说他们可以用root权限在Docker中运行随便什么应用,而Docke...

56780
来自专栏DevOps时代的专栏

基于 k8s 的 Jenkins 构建集群实践

在大型团队的 CI 构建里具有丰富最佳实践的经验。今天我给大家分享的更多是聚焦在 Jenkins 本身,结合我在 Jenkins 实际使用过程中和整个 Jenk...

1.3K100
来自专栏程序你好

从 Docker 的新手村出发?那么你需要这11条守则

11720
来自专栏北京马哥教育

写给新手的十一条 Docker 守则

18650

扫码关注云+社区

领取腾讯云代金券