Kubernetes 相关概念
Node:
(1) Node(节点)也就是宿主机,宿主机可以是物理机 、云主机 、虚拟机等等,我们可以在一个宿主机上跑多个容器(container)
(2) Node 上会被分配一些工作负载(即 docker 容器),当 Node 宕机后,其上面跑的应用会被转移到其他 Node 上
(3) Node 上有这些关键的进程:
① kubelet,负责Pod对应容器的创建、启动、停止等任务,同时与Master节点密切协作,实现集群管理的基本功能
② kube-proxy,实现 Kubernetes Service 之间的通信与负载均衡机制的重要组件
③ Docker Engine,Docker引擎,负责本机容器的创建和管理
Pod:
(1) 我们可以在一个宿主机上跑多个容器,为了高可用和负载均衡,我们把多个容器组成一个Pod,同一个Pod里的容器共享同一个网络命名空间,可以使用 localhost 互相通信;
(2) 每个Pod里都有一个特殊的容器(Pause),这个容器提供网络栈和数据卷,其他普通容器共享这个容器的资源,因此同一个Pod内容器之间的通信和数据交换更为高效;
(3) 因为每个Pod都有一个Pause(根容器),因此每个Pod至少有两个容器,一个根容器和一个工作容器,只有当根容器挂了,才认为Pod挂了
Service:
(1) 多个功能相同的Pod组成一个Service(微服务),Kubernetes 集群是由多个 Service 组成的,我们可以通过 ip:port 的形式来访问Service
(2) 同一个Service下的所有Pod是通过 kube-proxy 实现负载均衡,而每个Service都会分配一个全局唯一的虚拟ip,也叫做 Cluster ip
Master:
(1) 在一个Kubernetes集群里面,会有多个节点(Node),而 Kubernetes Master 这个节点作为主节点,用来管理其他的工作节点;
(2) Master 节点的功能包括资源管理 、Pod调度 、弹性伸缩 、安全控制 、系统监控 、纠错等;
(3) Master 是整个集群的控制中心,kubernetes 的所有控制指令都是发给Master,它负责具体的执行过程;
(4) Master上有这些关键的进程:
① Kubernetes API Server,是所有资源增、删、改、查等操作的唯一入口,比如我们要增加Pod,增加Service都要通过这个入口来配置
② Kubernetes Controller Manager,是所有资源的自动化控制中心,比如弹性伸缩功能,就是通过 Controller Manager 控制Pod的数量来实现的
③ Kubernetes Scheduler,负责资源调度,主要是调度Pod到合适的Node上
④ etcd Server,etcd是一个高可用的键值存储系统,Kubernetes使用它来存储各个资源的状态及资源的数据
Label:
(1) Label是一个键值对,其中键和值都由用户自定义,Label 可以附加在各种资源对象上,如 Node、Pod、Service、RC 等;
(2) 比如多个功能相同的Pod会组成一个Service,那么Service怎么区分这些Pod呢?我们会给每个Pod打一个Label(标签),Service 通过 Label 来找到指定的Pod;
(3) 一个资源对象可以定义多个 Label,同一个 Label 也可以被添加到任意数量的资源对象上;Label可以在定义对象时定义,也可以在对象创建完后动态添加或删除;
RC:
(1) RC(Replication Controller)定义了一个期望的场景,即声明某种Pod的副本数量在任意时刻都符合某个预期
(2) 比如 Master 上运行的 RC 就是用来控制弹性伸缩的,通过控制Pod的数量来实现,如果某个Pod挂了,RC会重新选用另一个Pod
(3) RC 也可以用来实现动态升级,比如新版本每增加1个Pod,旧版本就减少一个Pod,始终保持固定的值,最终旧版本Pod数为0,全部为新版本
(4) Deployment:这个工具相当于RC的升级版,可能会取代RC,目的是为了解决Pod编排问题,跟RC比较,最大的一个特点是可以知道Pod部署的进度
HPA:
(1) HPA(Horizontail Pod Autoscaler)用来实现Pod的动态扩容、缩容,它通过追踪分析RC控制的所有目标Pod的负载变化情况,来决定是否要调整目标Pod的副本数
(2) 有两种指标作为判断的依据,第一种是cpu的平均值,比如所有Pod的cpu平均值达到90%就扩容;第二种是Service请求数,达到指定的请求数就扩容
Volume:
(1) Volume存储卷,是Pod中能够被多个容器访问的共享目录,定义在Pod上,然后被一个Pod里的多个容器挂载到具体的目录下
(2) Volume与Pod生命周期相同,但与容器的生命周期没关系,当容器终止或者重启时,Volume中的数据并不会丢失
(3) Kubernetes支持多种类型的Volume,如 glusterfs,ceph 等先进的分布式文件系统
PV:
(1) PV(persistent volume)可以理解成 Kubernetes 集群中某个网络存储中对应的一块存储,它与 Volume 类似,但也有一些区别
(2) PV只能是网络存储,不属于任何Node,但可以在每个Node上访问到;PV并不是定义在pod上,而是独立于pod之外定义
Namespace:
(1) 当Kubernetes集群中存在多租户的情况下,就需要有一种机制实现每个租户的资源隔离,而 Namespace(命名空间)的目的就是为了实现资源隔离
(2) Namespace(命名空间)可以理解为划分子网,使得网段不同,从而实现资源隔离
Kubernetes 相关概念的更多相关文章
- Kubernetes相关概念
This page explains how Kubernetes objects are represented in the Kubernetes API, and how you can exp ...
- Kubernetes 简介
一.Kubernetes 相关概念 1. Kubernetes 是一个开源的容器集群管理系统,主要用来自动化部署容器 .自动扩展与收缩容器规模 .提供容器间的负载均衡2. Node:Node(节点)也 ...
- kubernetes入门学习系列
一.kubernetes基础概念 初识kubernetes kubernetes相关概念 二.kubernets架构和组件 kubernetes架构 kubernetes单Master架构 kuber ...
- Kubernetes学习-相关概念
Kubernetes架构图 上图可以看到如下组件,使用特别的图标表示Service和Label: Pod Container(容器) Label()(标签) Replication Controlle ...
- kubernetes学习笔记
docker实现了更便捷的单机容器虚拟化的管理, docker的位置处于操作系统层与应用层之间; 相对传统虚拟化(KVM,XEN): docker可以更加灵活的去实现一些应用层功能, 同时对资源的利用 ...
- Kubeadm 安装部署 Kubernetes 集群
阅读目录: 准备工作 部署 Master 管理节点 部署 Minion 工作节点 部署 Hello World 应用 安装 Dashboard 插件 安装 Heapster 插件 后记 相关文章:Ku ...
- ASP.NET Core在Azure Kubernetes Service中的部署和管理
目录 ASP.NET Core在Azure Kubernetes Service中的部署和管理 目标 准备工作 注册 Azure 账户 AKS文档 进入Azure门户(控制台) 安装 Azure Cl ...
- 安装部署 Kubernetes 集群
安装部署 Kubernetes 集群 阅读目录: 准备工作 部署 Master 管理节点 部署 Minion 工作节点 部署 Hello World 应用 安装 Dashboard 插件 安装 Hea ...
- Kubernetes 学习(十)Kubernetes 容器持久化存储
0. 前言 最近在学习张磊老师的 深入剖析Kubernetes 系列课程,最近学到了 Kubernetes 容器持久化存储部分 现对这一部分的相关学习和体会做一下整理,内容参考 深入剖析Kuberne ...
随机推荐
- 解决studio的URI is not registered (Setting|Language&Frameworks|Schemas and DTDs)
高高兴兴过完国庆来上班,studio一打开发现布局文件跟不进去,点进去就到了R文件里,layout的文件里 xmlns:android="http://schemas.android.com ...
- sparkr跑通函数 包含排序
spark1.4.0的sparkR的思路:用Spark从大数据集中抽取小数据(sparkR的DataFrame),然后到R里分析(DataFrame). 这两个DataFrame是不同的,前者是分布式 ...
- ubantu linux的bash shell初接触
本人是Linux初习者,同时也刚刚开始学习,将我的学习成长记录下来,来和大家一同分享! 我用的系统是Ubuntu 12.04,脚本编辑器用的是VIM,觉得很顺手!Shell语言用的是Bash Shel ...
- idea破解,idea激活,使用破解补丁无需注册码
dea激活,JetBrain旗下软件激活 前言 idea激活有多种方式,网上较多的是使用注册码或者填License server网址,目前(2017年8月19日)使用注册码的方式,亲测可用的只有lan ...
- selenium(java)处理HTML5的视频播放
大多数浏览器使用控件(如 Flash) 来播放规频,但是,不同的浏览器需要使用不同的插件.HTML5 定义了一个新的元素<video>,,指定了一个标准的方式来嵌入电影片段.IE9+.Fi ...
- (笔记)Linux 如何查看线程数最佳解决方案
背景:很多学linux的人都会使用ps查看进程状态,却一直不清楚如何查看线程的状态. 方法:可使用ps -a 或 ps -T命令查看 一.使用ps -a命令查看 比如拿我的测试进程./lc300-le ...
- python程序中的调试:pdb
python中,也有像c/c++语言的 gdb 一样的调试程序,即pdb: 只简单说明一个怎么使用它. 假设已经有了一个python程序名为 test.py, 我们在命令行输入以下内容,即可以进行 p ...
- SpringBoot系列十一:SpringBoot整合Restful架构(使用 RestTemplate 模版实现 Rest 服务调用、Swagger 集成、动态修改日志级别)
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot整合Restful架构 2.背景 Spring 与 Restful 整合才是微架构的核心,虽然在整 ...
- Asp.net webapi Owin Get request form data
var formData = await context.Request.ReadFormAsync() as IEnumerable<KeyValuePair<string, strin ...
- Eclipse/MyEclipse上配置Spring环境
在MyEclipse上配置Spring环境 myeclipse其实已经集成Spring的开发环境,我们只需在新建的项目上添加spring的配置环境就可以 新建一个java项目 选中创建好的项目之后,在 ...