本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。

Hi,大家好,欢迎大家和我一起学 K8S,这是系列第三篇。

每一种技术,为了描述清楚它的设计理念,都会自定义一堆概念或术语。在进入一门技术的研究之前,我们有必要扫清它的基本概念。

资源对象

K8S 的操作实体,在 K8S 中,有很多的操作对象,比如容器、Pod、Deployment、Service、Node 等,我们统统称它们为资源对象。

Cluster

K8S 集群,是计算、存储和网络资源的集合,K8S 基于这些资源来承载容器化的应用。

Master

K8S 集群的大脑,负责整个集群的管控、资源调度。可以部署在普通物理机或虚拟机上,为了实现高可用,可以部署多个 Master。

Node

K8S 集群的执行者,受 Master 指挥,负责运行和监控容器应用、管理容器的生命周期,并向 Master 定期汇报容器的状态。同样,Node 也可以部署在物理机或虚拟机之上,也可以部署多个。

Pod

在 K8S 集群中,Pod 是资源调度的最小单位,一个 Pod 可以包含一个或多个容器应用,这些容器应用彼此之间存在某种强关联。Pod 内的所有容器应用共享计算、存储、网络资源。

Controller

Controller 是 K8S 中负责管理 Pod 的资源对象,它定义 Pod 的部署属性,比如有几个副本,副本异常怎么处理等,如果把 Pod 副本看做是一个公司职员,那么 Controller 就像是 HR,会不断根据人员的变动来招人满足公司的发展需求。

为了满足多种业务场景,K8S 提供了多种 Controller,包括 Deployment、ReplicaSet、DaemonSet、StatefulSet、Job 等。

Deployment

Deployment 是最常用的 Controller,定义了用户的期望场景,实现了 Pod 的多副本管理,如果运行过程中有一个副本挂了(员工离职),那么 K8S 会根据 Deployment 的定义重新拉起一个副本继续工作(招一个新员工),始终保证 Pod 按照用户期望的状态运行。

ReplicaSet

ReplicaSet 和 Deployment 实现了同样的功能,确切的说是 Deployment 通过 ReplicaSet 来实现 Pod 的多副本管理。我们通常不需要直接使用 ReplicaSet。

DaemonSet

DaemonSet 用于每个 Node 最多只运行一个副本的场景,通常用于运行 Daemon。

Job

Job 用于运行结束就删除的应用,而其他 Controller 则是会长期保持运行。

StatefulSet

以上 Controller 都是无状态的,也就是说副本的状态信息会改变,比如当某个 Pod 副本异常重启时,其名称会改变。StatefulSet 提供有状态的服务,能够保证 Pod 的每个副本在其生命周期中名称保持不变。这是通过持久化的存储卷来实现的。

Label

Label 定义了其他资源对象所属的标签,类似于你在公司被分到 A 小组、B 小组。有了标签,就可以针对性地对每个小组进行管理。比如把某个小组搬到哪个办公区(把某个 Pod 部署到哪个 Node 上)。给指定的资源对象定义一个或多个不同的标签能够实现多维度的资源分组管理,方便进行资源分配、调度、配置、部署等管理工作。

Selector

Label 选择器,K8S 通过 Selector 来过滤筛选指定的资源对象,类似于 SQL 语句中的 where 查询条件,Label 实现了简单又通用的对象查询机制。

Service

在 K8S 中,Service 是对 Pod 对象的抽象,通常,Pod 会以多副本的形式部署,每个 Pod 都有自己的 IP,都可以对外提供服务,但 Pod 是脆弱的,也就是说,它随时都有可能被频繁地销毁和重启,IP 也会随之改变,这样,服务的访问就会出现问题。

Service 就是提出来解决这个问题的,它定义了一个虚拟 IP(也叫集群 IP),这个 IP 在 Service 的整个生命周期内都不会改变。当有访问到达时,Service 会将请求导向 Pod,如果存在多个 Pod,Service 还能实现负载均衡。

Volume

K8S 的存储卷,定义了一个 Pod 中多个容器可访问的共享目录。和 Docker 的 Volume 不太一样的是,K8S 的 Volume 是以 Pod 为单位的,也就是 Volume 的生命周期和 Pod 相关,和 Pod 内的容器不相关,即使容器终止或重启,Volume 中的数据也不会丢失,只有当 Pod 被删除时,数据才会丢失。

Namespace

当有多个用户或租户使用同一个 K8S 集群时,如何区分它们创建的资源呢?答案就是 Namespace。

Namespace 将一个物理的集群从逻辑上划分成多个虚拟的集群,每个集群就是一个 Namespace,不同 Namespace 里的资源是完全隔离的。每个用户在自己创建的 Namespace 里操作,都不会影响到其他用户。

Annotation

Annotation 与 Label 类似,但和 Label 不同 的事,Annotation 不用于过滤筛选,它只是用户定义的某一种资源的附加信息,目的是方便外部查找该资源。有点类似于我们常说的别名,没有它完全可以,但有了它可以很方便查找。


我的公众号 「Linux云计算网络」(id: cloud_dev) ,号内有 10T 书籍和视频资源,后台回复 「1024」 即可领取,分享的内容包括但不限于 Linux、网络、云计算虚拟化、容器Docker、OpenStack、Kubernetes、工具、SDN、OVS、DPDK、Go、Python、C/C++编程技术等内容,欢迎大家关注。

Kubernetes 笔记 03 扫清概念的更多相关文章

  1. Kubernetes笔记(二):了解k8s的基本组件与概念

    前文 Kubernetes笔记(一):十分钟部署一套K8s环境 介绍了如何快速搭建一个k8s系统.为了继续使用k8s来部署我们的应用,需要先对k8s中的一些基本组件与概念有个了解. Kubernete ...

  2. C++ GUI Qt4学习笔记03

    C++ GUI Qt4学习笔记03   qtc++spreadsheet文档工具resources 本章介绍创建Spreadsheet应用程序的主窗口 1.子类化QMainWindow 通过子类化QM ...

  3. Kubernetes笔记(四):详解Namespace与资源限制ResourceQuota,LimitRange

    前面我们对K8s的基本组件与概念有了个大致的印象,并且基于K8s实现了一个初步的CI/CD流程,但对里面涉及的各个对象(如Namespace, Pod, Deployment, Service, In ...

  4. Java:并发笔记-03

    Java:并发笔记-03 说明:这是看了 bilibili 上 黑马程序员 的课程 java并发编程 后做的笔记 3. 共享模型之管程-2 本章内容-2 Monitor wait/notify 3.6 ...

  5. 《30天自制操作系统》笔记(03)——使用Vmware

    <30天自制操作系统>笔记(03)——使用Vmware 进度回顾 在上一篇,实现了用IPL加载OS程序到内存,然后JMP到OS程序这一功能:并且总结出下一步的OS开发结构.但是遇到了真机测 ...

  6. JS自学笔记03

    JS自学笔记03 1.函数练习: 如果函数所需参数为数组,在声明和定义时按照普通变量名书写参数列表,在编写函数体内容时体现其为一个数组即可,再传参时可以直接将具体的数组传进去 即 var max=ge ...

  7. 机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理、源码解析及测试

    机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理.源码解析及测试 关键字:决策树.python.源码解析.测试作者:米仓山下时间:2018-10-2 ...

  8. CS229 笔记03

    CS229 笔记03 局部加权线性回归 Non-Parametric Learning Algorithm (非参数学习方法) Number of parameters grows with the ...

  9. OpenCV 学习笔记03 边界框、最小矩形区域和最小闭圆的轮廓

    本节代码使用的opencv-python 4.0.1,numpy 1.15.4 + mkl 使用图片为 Mjolnir_Round_Car_Magnet_300x300.jpg 代码如下: impor ...

随机推荐

  1. spark2.0源码学习

    [Spark2.0源码学习]-1.概述 [Spark2.0源码学习]-2.一切从脚本说起 [Spark2.0源码学习]-3.Endpoint模型介绍 [Spark2.0源码学习]-4.Master启动 ...

  2. Vs2017的git真S B

    1.先是无法克隆 2.修改用户还是无法克隆 3.修改用户凭据还是无法克隆 4.重装机器,将vs改为2017企业版,他妈的还是无法克隆 5.测试发现我这台机子无法克隆,其他的可以 6.提示永远是 Git ...

  3. HDU 3586.Information Disturbing 树形dp 叶子和根不联通的最小代价

    Information Disturbing Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/ ...

  4. “天龙八步”细说浏览器输入URL后发生了什么

    本文摘要: 1.DNS域名解析: 2.建立TCP连接: 3.发送HTTP请求: 4.服务器处理请求: 5.返回响应结果: 6.关闭TCP连接: 7.浏览器解析HTML: 8.浏览器布局渲染: 总结 输 ...

  5. python11 装饰器与闭包

    一.装饰器定义 本质:一种函数,为其他函数增加新功能 原则: 1.不修改被修饰函数的源代码 2.不修改被修饰函数的调用方式 需要技能:装饰器=高阶函数+函数嵌套+闭包 二.高阶函数 定义:函数接收的参 ...

  6. Unique Letter String LT828

    A character is unique in string S if it occurs exactly once in it. For example, in string S = " ...

  7. EasyPOI校验实现返回错误信息及行号

    IExcelModel 获取错误信息 public class ExcelVerifyEntity implements IExcelModel { private String errorMsg; ...

  8. 常用API String

    Java的API以及Object类 Java的API Java的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JD ...

  9. CSS追加笔记

    box-shadow 属性向框添加一个或多个阴影. 语法 box-shadow: h-shadow v-shadow blur spread color inset;注释:box-shadow 向框添 ...

  10. nlp L1

    前向最大匹配: 最大匹配出的词必须保证下一个扫描不是词表中的词或词的前缀才可以结束. 正向最大匹配算法:从左到右将待分词文本中的几个连续字符与词表匹配,如果匹配上,则切分出一个词.但这里有一个问题:要 ...