kubernetes 是一个开放的开发平台。对现有的编程语言、编程框架、中间件没有任何的侵入性。它有完备的集群管理能力,包括多层次的安全防护和准入控制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建的智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制,以及多粒度的资源配额管理能力。kubernetes还提供了完善的管理工具,包括开发、测试、部署、监控等流程。因此kubernetes是一个基于容器技术的分布式架构解决方案,并且是一个一站式的完备的分布式系统开发和支撑平台。

image.png

Master

Master 指的是集群的控制节点,在每个kubernetes集群中都需要一个Mater来负责整个集群的管理和控制。几乎所有的控制命令都会给到master,它负责具体的执行过程。matster通常会占用一个独立的服务器(高可用部署建议用3台服务器)。如果master宕机,那么kubernetes对集群应用的管理将会失效。

master上运行以下关键进程:

  • kubernetes API Server (lube-apiserver):提供了HTTP Rest接口的关键服务进程,是kubernetes里所有资源的增删改查等操作的唯一入口,也是集群控制的入口进程。
  • kubernetes Controller Manager(kube-controller-manager): 所有资源对象的自动化控制中心。
  • kubernetes Scheduler (kube-scheduler):负责资源调度(pod调度)的进程。

另外,在Master上还需要部署etcd服务,因为kubernetes里的所有资源对象都被保存在etcd中。

Node

kubernetes中的其它机器被称为Node,是kubernetes中的工作负载节点,每个Node都会被master分配一些工作负载(Docker容器),当某个Node宕机时,其上的工作负载会被Master自动转移到其它节点上。

每个Node上都运行着以下关键进程。

  • kubelet : 负责pod对应的容器的创建、启停等任务,同时与Master密切协作实现基本的集群管理功能、
  • kube-proxy :实现service的通信和负载均衡机制的重要组件。
  • Docker Engine (docker):Docker 引擎,负责本机的容器的创建和管理工作。

Pod

image.png

Pod是kubernetes最小部署单元,一个Pod包含多个容器。每个Pod都有一个被称为根容器的Pause容器。Pause容器对应的镜像属于kubernetes平台的一部分,除了Pause容器,每个Pod还包含一个或多个密切相关的用户业务容器。

一个Pod中有多个容器的设计可以有以下优势:

  • 整体的控制一组容器,让他们有相同的生命周期。
  • Pod 中的容器共享挂载或网络命名空间

Label

Label是一个可以让用户自定义的key/value形式的键值对,Label可以被附加到如Pod、Service、RC等各种kubernetes资源对象上。Label通常在定义资源时指定,也可以在对象创建后动态的添加或删除。

"metadata": {"labels": {"key1" : "value1","key2" : "value2"}
}

Label Selector可以查询或筛选具有某些标签的kubernetes资源对象,其在kubernetes重要使用场景如下:

  • kube-controller 进程通过在资源对象RC上定义的Label Selector来筛选要监控的Pod副本数量,使Pod副本数量始终符合预期设定的全自动控制流程。
  • kube-proxy 进程通过Service的Label Selector来选择对应的Pod,自动建立每个Service到Pod的请求转发路由表,从而实现Service的智能负载均衡机制。
  • 通过某些Node定义特定的Label,并且在Pod定义文件中使用NodeSelector这种标签调度策略,kube-schduler进程可以实现Pod定向调度的特性。

Replication Controller

简称RC,它定义了某种Pod的副本数量在任意时刻都符合某个预期的期望,RC包括如下几个部分:

  • Pod期待的副本数量
  • 用于筛选目标Pod的LabelSelector
  • 当Pod的副本数量小于预期数量时,用于创建新Pod的Pod模板。

Deployment

Deployment内部使用Replia Set来解决Pod的编排问题,在未来这个功能正在一点点的替换RC。其典型使用场景有以下几个:

  • 创建一个Deployment对象来生成对应的Replica Set并完成Pod副本的创建。
  • 检查Deployment来看部署动作是否完成(Pod副本数量是否达到预期的值)。
  • 更新Deployment以创建新Pod(比如镜像更新)。
  • 如果当前的Deployment不稳定,则回滚到一个早先的Deployment版本。
  • 暂停Deployment以便于一次性修改多个PodTemplateSpec的配置项,之后再恢复Deployment,进行新的发布。
  • 扩展Deployment以应对高负载。
  • 查看Deployment状态,以此作为发布是否成功的指标。
  • 清理不再需要的旧版本ReplicaSets。

    image.png

Service

Service 是一个抽象的概念,,它定义了一个服务的的访问入口地址,前端应用通过这个入口地址来访问其背后由Pod组成的集群实例,Service与其后端的Pod副本之间则是通过LabelSelector之间无缝对接的。

image.png

kubernetes 服务发现

通过提供特定的api接口来做服务发现对导致平台的侵入性较强,也增加了开发、测试的难度。所以kubernetes使用DNS作为服务发现,直接使用服务名作为域名。

外部系统访问Service

internet|[ Ingress ]--|-----|--[ Services ]

Service的Cluster Ip特点如下:

  • Cluster IP 仅仅作用域Service这个对象,并由kubernetes管理和分配ip地址(来源与Cluster IP地址池)。
  • 无法被ping,因为没有一个“实体的网络对象”来响应。
  • 只能结合Service Port组成一个具体的通信端口,单独的Cluster IP不具备TCP/IP通信的基础,并且它们属于kubernetes集群这样一个私有空间,集群外部的节点如果要访问这个通信端口,需要做一些额外的工作。
  • 在kubernetes集群内,Node IP网、Pod IP网与Cluster IP网之间的通信,采用的是kubernetes自己设计的一种编程式的特殊路由规则,与我们熟知的ip路由有很大的不同。

StatefulSet

StatefulSet是kubernetes专门为有状态的应用集群定制的一种集群模式,如kafka集群、etcd集群这些集群有以下4个共同点:

  1. 每个节点都有固定的身份ID,集群成员可以通过这个ID相互发现并通信。
  2. 集群规模比较固定,不会随意变动。
  3. 每个节点都是有状态的,通常会持久化数据到永久存储中。
  4. 如果磁盘损坏或某个节点无法正常运行,则集群可能受损。

RC和Deployment无法满足上述四点,所以StatefulSet作为补充提供了以下特性:

  • 每个Pod都很稳定,拥有唯一的网络标识。
  • Pod副本的启停顺序是受控的。
  • Pod采用稳定的持久化存储卷,通过PV或PVC来实现。
  • 支持Headless Service,不使用Cluster IP,解析DNS域名时返回全部Pod的Endpoint列表。

从上面的特性可以看出,Cluster IP属于kubernetes集群内部私有地址,无法在集群外部直接使用这个地址。

Namespace

namespace是kubernetes实现多租户隔离的重要概念,通过namespace可将集群内部的资源分配到不同的命名空间中,形成逻辑上不同的分组,便于不同的分组共享使用集群资源时还能被分别管理。默认情况下用户创建的RC、Pod、Service都被分配到default命名空间中。

ConfigMap

kubernetes提供的配置中心,原理是通过Volume的方式挂载位于etcd的配置数据。

apiVersion: v1kind: ConfigMapmetadata:Name: game-demodata:# 类属性键;每一个键都映射到一个简单的值player_initial_lives: 3ui_properties_file_name: "user-interface.properties"## 类文件键game.properties: |enemy.types=aliens,monstersplayer.maximum-lives=5user-interface.properties: |color.good=purplecolor.bad=yellowallow.textmode=true

Volume

Volume存储卷是Pod中能够被多个容器共享的的目录,其生命周期只与Pod有关,而与容器无关。kubernetes支持多种类型的volume,举例如下:

emptyDir

emptyDir Volume在Pod分配到Node时创建,它无需对应宿主机上的任何文件,当Pod从Node上移除时自动删除。emptyDir应用场景如下:

  • 临时空间。
  • 多容器共享目录。

hostPath

挂载宿主机是哪个的文件或目录到Pod,主要使用场景如下:

  • 保存日志文件。
  • 访问docker引擎内部数据结构。

注意hostPath上无法使用资源配额管理。

云存储

如 GCE和AWS。

其它存储

支持nfs等网络或开源存储。

Persistent Volume

Volume存储被定义在Pod上,属于计算资源的一部分。而PV是集群某个网络存储对应的一块存储。其与Volume有以下区别:

  • PV只能是网络存储,不属于任何Node,但是可以在每个Node上访问。
  • PV并不定义在Pod上。

Horizontal Pod Autoscaler

水平扩容的设计目标是使kubernetes中的应用有根据当前负载的变化,自动的触发水平扩容或缩容。HPA通过追踪RC控制的所有的Pod负载变化情况,来确定是否有必要针对性的调整目标副本数量。当前HPA有以下两种方式作为Pod负载度量指标:

  • CPUUtilizationPercentage :Pod当前的cpu使用率除以Pod Request的平均值。
  • 应用程序自定义度量指标,例如TPS、QPS。

Job

Job 资源对象控制一组Pod容器,用于定义并启动一个批处理任务。批处理任务通常串行或并行的启动多个计算进程去处理一批工作项,在处理完成后,整个批处理任务结束。Job与RC等控制器有以下差别:

  1. Job控制的副本是短暂运行的,可以将其视为一组docker容器,其中每个docker容器都仅仅运行一次。Job生成的Pod副本的RestartPoliy被设置为Nerver,意思是不会自动重启。kubernetes还支持cronJob,用于支持某些批处理任务需要反复执行的问题。
  2. Job所控制的Pod副本的工作模式能够多实例并行计算。

http://www.taodudu.cc/news/show-4317732.html

相关文章:

  • 超详细!K8s 面试知识点
  • 【k8s权威指南】第三章 k8s核心原理
  • IOS的后台任务
  • 根据RGB​值判断颜色是否深浅色(附深浅色颜色集合)
  • Flutter 设置 App 的主色调与字体
  • 【mongoDB】一一一一安装报错1058解决方案
  • 1058: 素数判定
  • 1058: 素数
  • JAVA 1058:求一元二次方程
  • SDNU 1058
  • hdu1058
  • mysql 1058_MySQL数据库之mysql启动服务报1058错误的解决方法
  • mysql 系统错误 1058,mysql启动服务报1058错误的解决方法
  • 为什么计算机会出现两个用户,Win7登录时有2个账户|为什么电脑开机时有二个账户...
  • Java——为什么要有接口?
  • 为什么迷茫
  • 华为证书HCIE怎么样?考华为HCIE有用吗?
  • 华为认证报考流程(详细步骤)-手把手教你注册华为账号,预约华为考试,下载华为证书
  • 华为认证三个等级区别在哪?
  • 一篇文章,带你详细了解华为认证体系证书(二)
  • 华为hcie证书怎么样 如何报考华为认证HCIE
  • 华为防火墙笔记-加密与证书
  • 华为都有哪些认证?
  • 现在都在考华为认证,含金量高不高呢?该如何备考?
  • 一篇文章,带你详细了解华为认证体系证书 (一)
  • Virtualbox源码分析4:VMM虚拟化实现源码分析1
  • 外网访问群晖NAS VMM搭建Openwrt的admin界面
  • VMM验证方法学学习随笔
  • VMR7100/VMM7100 Typ-C/DP转HDMI2.1 8K设计方案|替代VMM7100/VMR7100芯片|GSV6201可完全替代兼容 VMM7100/VMR7100
  • 通关4级之词汇(2021.02.26)

kubernetes 核心术语相关推荐

  1. Kubernetes 核心概念介绍

    云计算.容器化以及容器编排是 DevOps 中最重要的发展趋势,无论你是数据科学家.软件开发者还是产品经理,了解 Docker 和 Kubernetes 的基本概念总是有好处的,二者可以帮助你与他人协 ...

  2. 大数据领域75个核心术语讲解!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 选自:DataConomy,来源:机器之心 近日,Ramesh Dont ...

  3. 读债务危机0901:第三部分48个案例研究概要-核心术语表 1、国际收支差额:一个国家/货币区的个人或机构与世界其他地区之间进行的所有交易的余额。 2、国际收支危机:经济危机的一种,表现为一国的国际收

    graph TD; A–>读债务危机0901:第三部分48个案例研究概要-核心术语表 1.国际收支差额:一个国家/货币区的个人或机构与世界其他地区之间进行的所有交易的余额. 2.国际收支危机:经 ...

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

    原文地址:http://www.dockone.io/article/932 十分钟带你理解Kubernetes核心概念 本文将会简单介绍Kubernetes的核心概念.因为这些定义可以在Kubern ...

  5. 大数据领域75个核心术语讲解(下)

    来源:Datawhale Ramesh Dontha 曾在 DataConomy 上连发两篇文章,扼要而全面地介绍了关于大数据的 75 个核心术语,这不仅是大数据初学者很好的入门资料,对于高阶从业人员 ...

  6. [k8s] 第一章 十分钟带你理解Kubernetes核心概念

    本章节主要介绍应用程序在服务器上部署方式演变以及kubernetes的概念.组件和工作原理. 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署 ...

  7. Kubernetes 核心概念

    本节课程要点 什么是 Kubernetes :介绍 Kubernetes 的主要功能以及能力: Kubernetes 的架构:介绍 Kubernetes 的核心组件,以及介绍它们之间是如何相互互动连接 ...

  8. Kubernetes 核心概念 1

    概述 Kubernetes 有各类资源对象来描述整个集群的运行状态.这些对象都需要通过调用 kubernetes api 来进行创建.修改.删除,可以通过 kubectl 命令工具,也可以直接调用 k ...

  9. 深入剖析Kubernetes:容器编排与 Kubernetes 核心特性剖析

    容器本质 一个"容器",实际上是一个由 Linux Namespace.Linux Cgroups 和 rootfs 三种技术构建出来的进程的隔离环境. 从这个结构中我们不难看出, ...

最新文章

  1. 人体肺活量测试软件,人体肺活量怎么测试
  2. 【论文笔记】node2vec:可扩展的网络特征学习
  3. Docker学习总结(35)——Docker全面认识再总结
  4. NAT集群部署solo之session server
  5. java 中特殊的_Java中一些特殊关键字
  6. 基于OpenCV的PHP图像人脸检测识别…
  7. Legion使用:半自动化网络渗透工具
  8. java 发送邮件怎么抄送_javaMail发送qq邮件(二):可发送抄送密送多人,支持附件...
  9. 回顾15个月的工作经历
  10. 金蝶迷你版所有数据引出excel没有反应,如何处理
  11. 利用反正切函数展开计算∏的近似值
  12. 凯云水利水电造价工程系统 (三) 材料单价模块(1)
  13. 7500字拆解林清轩:说透了的“数字化转型”还有什么秘密武器?
  14. PVZ系列六 | 僵尸动画转换
  15. Android内存管理优化建议
  16. angular2后台管理系统
  17. MapGis 二次开发 常见问题 转
  18. 无名namespace
  19. python 使用smtp发送群邮件
  20. your browser doesn't support html5,video

热门文章

  1. 机器人 python 路径规划_基于Q-learning的机器人路径规划系统(matlab)
  2. 不要混淆事件的互不相容和互相独立
  3. 解放双手!用 Python 控制你的鼠标和键盘
  4. eclipse 换背景图片
  5. [量化-034]金融哲学-道德经解读-005-“道”是什么
  6. Mathematica实例——利用Mathematica演示量子力学中的波包演化
  7. 【读书笔记】减法——完美无缺,不是增无可增,而是减无可减
  8. 【技术干货】聊聊在大厂推荐场景中embedding都是怎么做的
  9. SAP ALE学习手册
  10. 复旦计算机教师,复旦教师:我有无人能及的相声天赋