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 ...
随机推荐
- windows下QJson的编译和安装
本文是编译安装Qjson过程中遇到的问题解决过程.主要参照网上资料和自己试验得到. 关于Qjson的用处参照:Qt 学习之路 2(63):使用 QJson 处理 JSON Qjson clone地址: ...
- Error:(1, 0) Plugin with id 'com.android.application' not found
Error:(1, 0) Plugin with id 'com.Android.application' not found.Open File 这个错误是build.gradle造成的,我们打开文 ...
- missing gradle project information
需要在android studio 中配置gradle的代理,当然是用goagent了.打开setting->gradle->Gradle VM Options:-Dhttp.proxyH ...
- == equals hashCode 总结比较
在Java中: ==是运算符,用于比较两个变量是否相等. equals,是Objec类的方法,用于比较两个对象是否相等,默认Object类的equals方法是比较两个对象的地址,跟==的结果一样.Ob ...
- ADT安装
Eclipse安装ADT很简单,直接把下载好的ADT文件解压,覆盖到eclipse目录下的features和plugins目录即可, MyEclipse配置就稍微麻烦了点,我刚开始配置了好几次都不成功 ...
- tomcat部署时war和war exploded区别
war模式—-将WEB工程以包的形式上传到服务器 war exploded模式—-将WEB工程以当前文件夹的位置关系上传到服务器
- CI框架 -- 核心文件 之 Model.php
class CI_Model { /** * Class constructor * * @return void */ public function __construct() { log_mes ...
- titlesplit源码
) UNSIGNED NOT NULL AUTO_INCREMENT, innserSessionid ), times ), channelType ), sourcetitle ), title ...
- linux cfs调度器_理论模型
参考资料:<调度器笔记>Kevin.Liu <Linux kernel development> <深入Linux内核架构> version: 2.6.32.9 下 ...
- 【Jupyter notebook】access remotly
http://jupyter-notebook.readthedocs.io/en/latest/public_server.html