十分钟了解kubernetes的核心概念

十分钟了解kubernetes的核心概念

下文将简单介绍kubernetes的核心概念。因为这些定义可以kubernetes的官档中找到,中文文档地址,所以下文中也会避免用大段枯燥的文字介绍。相反,我们会使用一些图表和示例来解释这些概念,借助它们我们可以全面理解晦涩难懂的一些概念。

1、什么是kubernetes

kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括布署,调度和节点集群间扩展。如果你曾经用docker容器技术布署容器,那么可以将docker看成kubernetes内部使用的低级别组件。kubernetes不仅仅支持docker,还支持rocker(另一种容器技术)。

使用kubernetes拥有下面的特点:

  • 自动化容器的布署和复制。
  • 随时扩展与收缩容器规模。
  • 将容器组织成组,并提供容器间的负载均衡。
  • 较容易升级应用程序容器的新版本。
  • 提供容器弹性,如果容器失效就替换它等。

实际上,kubernetes只需一个部署文件,使用一条命里就可以布署多层容器(前后端)的完整集群。

$ kubectl create -f single-config-file.yaml

2、集群

集群是一组节段,这些节点可以是物理服务器或者虚拟机,之上安装了kubernetes平台。下图展示这样的集群,注意概图为了强调核心概念有所简化。

k8s集群示意

上图可以看到如下组件,使用特别的图标表示Service和Label:

  • Pod Pod
  • Container(容器)
  • Label(标签)
  • Replication Controller(复制控制器)
  • Service(服务)
  • Node(节点)
  • Kubernetes Master(kubernetes主节点)

2.1 Pod

Pod(上图绿色框)安排在节点上,包括一组容器和卷。同一个Pod里面的容器共享一个命名网络空间,可以使用localhost互相通信。Pod是短暂的,不是持续性实体。你可以有下面的问题:

  • 如果Pod是短暂的,那么我怎么才能持久化容器数据使其能够重启后存在呢?是的,kubernetes支持卷的概念,因此可以使用持久化的卷类型。
  • 是否手动创建Pod,如果想要创建同一个容器的多份拷贝,需要一个个分别创建出来么?可以手动创建单个Pod,也可以使用Replication Controller使用Pod模版创建出来多份拷贝。
  • 如果Pod是短暂的,那么重启时IP地址可能会改变,那么怎么才能从前端容器正确可靠地指向后台容器呢?这时可以用Service。

2.2 Label

如上图所示,一些Pod有Label。一个Label是attach到Pod的一对键值对,用来传递用户定义的属性。比如你可能创建了一个"tier"和"app"标签,通过Label(tier=frontend, app=myapp)来标记前端Pod容器,使用Label(tier=backend, app=myapp)标记后台容器,然后可以使用Seletors选择带有特定标签Label的Pod,并且将Service或Replication Controller应用到上面。

2.3 Replication Controller

是否手动创建Pod,如果想要创建同一个容器的多份拷贝,需要一个个分别创建出来么?能否将Pods划分到逻辑组里面去。

Replication Controller确保任意时间都有着指定数量的Pod副本在运行。如果为某个Pod创建了Replication Controller并制定3个副本,它会创建3个副本,并且持续监控它们。如果某个Pod不响应,那么Replication Controller会替换它,

Replication Controller监控Pod

如果之前不响应的Pod恢复了,现在就有了4个Pod,那么Replication Controller就会将其中一个终止并保持总数为3。如果在运行中将副本总数改为5,Replication Controller就会立即启动2个新的Pod,保证总数为5。还可以按照这样的方式缩小Pod,这个特性在执行滚动升级时比较有用。

当创建Replication Controller时,需要执行两个东西:

  • Pod模版:用来创建Pod副本的模版。
  • Label:Replication Controller需要监控的Pod的标签。

现在已经创建了Pod的副本,那么在这些副本上如何进行均衡负载?我们需要的是Service。

2.4 Service

如果Pods是短暂的。那么重启时IP地址可能会发生变化,怎么才能从前端容器正确可靠的指向后端容器呢?

Service是定义一些列Pod以及访问这些Pod的策略的一层抽象。Service通过Label找到Pod组。因为Service是抽象的,所以在图表中通常看不到它们的存在,这也就让这一概念更难理解。

现在,假定有两个后台Pod,并定义后台Service的名称为‘backend-service’,label选择器为(tier=backend, app=myapp)。backend-service会完成如下两件重要的事情:

  • 会为Service创建一个本地集群的DNS入口,因此前端Pod只需要DNS查找主机名为‘backend-service’,就能够解析出前端应用可用的IP地址。
  • 现在前端已经得到了后台服务的IP地址,但是它应该访问2个后台Pod的哪一个呢。Service在这2个后台Pod之间提供了透明的负载均衡,会将请求分发给其中任意一个(如下面的动画所示)。通过每个Node上运行的代理(kube-proxy)完成。

下图动画展示了Service的功能。注意该图做了很多简化。如果不进入网络配置,那么达到透明的负载均衡目标所涉及的底层网络和路由相对先进。

service - pod组抽象.gif

有一个特别类型的Kubernetes Service,称为‘LoadBlancer’,作为外部负载均衡器使用,在一定数量的Pod之间负暂均衡。

2.5 Node

节点(上橘色方框)是物理机或虚拟机,作为kubernetes worker,通常称为Minion。每个节点都运行如下Kubernetes关键组件:

  • Kubelet:直接点代理。
  • Kube-proxy:Service使用其将链接路由到Pod,如上所述。
  • Docker或Rocker:Kuberbetes使用的容器技术来创建容器。

2.6 Kubernetes Master

集群拥有一个Kubernetes Master(紫色方框)。Kubernetes Master提供集群的独特视角,并且拥有一系列组件,如Kubernetes API Service。API Server提供可以用来和集群交互的REST端点。master节点包括用来创建和复制Pod的Replication Controller。

3、感谢

十分钟带你理解Kubernetes核心概念

再下面会继续理解属于和概念,最后尝试使用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容