k8s一、基本概念
Kubernetes的设计架构
Master管理Node,Node管理容器。
Master
Kubernetes集群中的Master节点主要负责管理整个集群,包括集群的健康检查、扩容缩容等。
集群控制节点,所有控制命令都发给Master,Master负责具体的执行过程
- 关键进程:
- API Server:提供HTTP Rest接口的主要组件,是Kubernetes里所有资源的增、删、改、查等操作的唯一入口
- Scheduler:Pod资源的调度器
- etcd:保存所有资源对象的数据
- Controller Manager:所有资源对象的自动化控制中心
Node
除了Master,Kubernetes集群中的其他机器被称为Node
Node主要由3个部分组成,分别是kubelet、kube-proxy和容器运行时(container runtime)。
每个Node都会被Master分配一些工作负载,当某个Node宕机时,其上的工作负载会被Master自动转移到其他节点上。
- 关键进程:
- kubelet:负责Pod对应的容器的创建、启停等任务
- kube-proxy:实现Kubernetes Service的通信与负载均衡机制
- Docker/containerd:负责本节点的容器运行
一旦Node被纳入集群管理范围,kubelet进程就会定时向Master汇报自身的情报
组件简的基本交互流程
kubectl命令将转换为对API Server的调用。
API Server验证请求并将其保存到etcd中。
etcd通知API Server。
API Server调用调度器。
调度器决定在哪个节点运行Pod,并将其返回给API Server。
API Server将对应节点保存到etcd中。
etcd通知API Server。
API Server在相应的节点中调用kubelet。
kubelet与容器运行时API发生交互,与容器守护进程通信以创建容器。
kubelet将Pod状态更新到API Server中。
API Server把最新的状态保存到etcd中。
Kubernetes的核心对象
Pod
Pod是由N个容器组成的,每个 Pod 都包含一个特殊的Pause容器
以Pause的状态代表整个容器组的状态
Pod里的多个业务容器共享Pause容器的IP,共享Pause容器挂接的Volume
Kubernetes要求底层网络支持集群内任意两个Pod之间的TCP/IP直接通信,这通常采用虚拟二层网络技术来实现
- 普通pod
- 普通的Pod一旦被创建,就被放入etcd中存储,随后会被Kubernetes Master调度到某个具体的Node上并进行绑定(Binding),随后该Pod被对应的Node上的kubelet进程实例化成一组相关的容器并启动
- 当Pod里的某个容器停止时,Kubernetes会自动检测到这个问题并且重新启动这个Pod(重启Pod里的所有容器),
- 如果Pod所在的Node宕机,就会将这个Node上的所有Pod重新调度到其他节点上。
- 静态Pod
- 存放在某个具体的Node上的一个具体文件中,并且只在此Node上启动、运行,并且不会被Kubernetes Master管理
在Kubernetes里,一个计算资源进行配额限定时需要设定以下两个参数。
- Requests:该资源的最小申请量,系统必须满足要求。
- Limits:该资源最大允许使用的量,不能被突破,当容器试图使用超过这个量的资源时,可能会被Kubernetes“杀掉”并重启
控制器
一般来说,用户不会直接创建Pod,而是创建控制器,让控制器来管理Pod。
控制器中定义了Pod的部署方式,如有多少个副本、需要在哪种Node上运行等。
Replication Controller 和 ReplicaSet
RC可定义Pod模板,并可以设置相应控制参数以实现水平伸缩,以调节正在运行的相同的Pod数。
ReplicaSet逐渐取代RC,但ReplicaSet无法实现滚动更新,无法像RC那样在后端轮流切换到最新版本。
Deployment
Deployment控制器以ReplicaSet控制器为基础
StatefulSet
提供了排序和唯一性保证的特殊Pod控制器。
StatefulSet控制器通常与面向数据的应用程序(比如数据库)相关联
分布式存储系统适合使用StatefulSet控制器
Pod转移到其他节点时,StatefulSet控制器会保证Pod的唯一性[稳定的网络标识、持久化存储绑定和有序的生命周期管理。]
当需要重新调度时,可以通过Pod转移持久性数据卷。即使删除了Pod,这些卷也依然存在,以防止数据意外丢失。
Deployment控制器下的每一个Pod都毫无区别地提供服务
StatefulSet控制器下的Pod。虽然各个Pod的定义是一样的,但是因为其数据的不同,所以提供的服务是有差异的。
DaemonSet
DaemonSet控制器是另一种特殊的Pod控制器,它会在集群的各个节点上运行单一的Pod副本。
日志收集和转发、监控以及运行以增加节点本身功能为目的的服务,常设置为DaemonSet控制器
DaemonSet控制器可以越过基于Pod的限制,确保基础服务的运行
Job和CronJob
Job:用于执行一次性任务
CronJob:用于周期性执行任务
服务与存储
Service组件和Ingress
Pod只是一个运行的应用示例,随时可能在一个节点上停止,并在另一个节点使用新的IP地址启动新的Pod,因此Pod根本无法以固定的IP地址和端口号提供服务。
通过Service组件可以发布服务,可以跟踪并路由到所有指定类型的后端容器。内部使用者只需要知道Service组件提供的稳定端点即可进行访问
Service是内部负载均衡器中的一种组件,会将相同功能的Pod在逻辑上组合到一起,让它们表现得如同一个单一的实体
存储卷和持久卷
允许Pod中的所有容器共享数据
持久性数据可预防节点级的故障
资源划分
命名空间(namespace)的主要作用是对Kubernetes集群资源进行划分。实现多租户的资源隔离。
标签和注解:
标签:键值对
注解:将任意键值信息附加到某一对象中,注解更灵活,可以包含少量结构化数据。
k8s一、基本概念的更多相关文章
- 为什么k8s引入pod概念?
为什么k8s引入pod概念? 1.可管理性 有些容器天生需要紧密关联,以pod为最小单位进行调度 扩展 共享资源 管理生命周期 例如: 一个容器写日志,一个容器读取日志进行相关内容的展示 2.通信和资 ...
- k8s弹性伸缩概念以及测试用例
k8s弹性伸缩概念以及测试用例 本文原文出处:https://juejin.im/post/5c82367ff265da2d85330d4f 弹性伸缩式k8s中的一大亮点功能,当负载大的时候,你可以对 ...
- 5分钟让你理解K8S必备架构概念,以及网络模型(上)
写在前面 在这用XMind画了一张导图记录Redis的学习笔记和一些面试解析(源文件对部分节点有详细备注和参考资料,欢迎关注我的公众号:阿风的架构笔记 后台发送[导图]拿下载链接, 已经完善更新): ...
- K8s - Kubernetes重要概念介绍(Cluster、Master、Node、Pod、Controller、Service、Namespace)
K8s - Kubernetes重要概念介绍(Cluster.Master.Node.Pod.Controller.Service.Namespace) Kubernetes 是目前发展最 ...
- Kubernetes(K8s)基础概念 —— 凿壁偷光
Kubernetes(K8s)基础概念 -- 凿壁偷光 K8s是什么:全称 kubernetes (k12345678s) 作用:用于自动部署,扩展和管理"容器化应用程序"的 ...
- 【k8s】基础概念 + 工作原理
工作原理: 原理图 工作原理描述: 1>用户通过kubectl或者API server的REST API接口,提交需要运行的docker容器(创建pod请求): 2>api server将 ...
- 从零开始入门 K8s | Kubernetes 网络概念及策略控制
作者 | 阿里巴巴高级技术专家 叶磊 一.Kubernetes 基本网络模型 本文来介绍一下 Kubernetes 对网络模型的一些想法.大家知道 Kubernetes 对于网络具体实现方案,没有什 ...
- 7. 丈母娘嫌我不懂K8s的Service概念,让我去面壁
文章目录 怎么跟你说 Service的出现,就是 解决ip不固定的问题 ,怎么解决呢 ? 听小刘慢慢道来 当Pod宕机后重新生成时,其IP等状态信息可能会变动,Service会根据Pod的Label对 ...
- 5分钟让你理解K8S必备架构概念,以及网络模型(中)
写在前面 在这用XMind画了一张导图记录Redis的学习笔记和一些面试解析(源文件对部分节点有详细备注和参考资料,欢迎关注我的公众号:阿风的架构笔记 后台发送[导图]拿下载链接, 已经完善更新): ...
- 5分钟让你理解K8S必备架构概念,以及网络模型(下)
写在前面 在这用XMind画了一张导图记录Redis的学习笔记和一些面试解析(源文件对部分节点有详细备注和参考资料,欢迎关注我的公众号:阿风的架构笔记 后台发送[导图]拿下载链接, 已经完善更新): ...
随机推荐
- SRAM的读、写操作、信息保持原理
\(Vcc\)会使得\(T_3\)和\(T_4\)导通,但是哪个先导通是随机的,那么当\(T3\)先导通的时候,\(a\)点变为高电平,此时电流经由 \(a\) 点导通\(T2\),\(T2\)导通, ...
- Python科学计算系列11—几何绘图
1.显函数图像绘制 例:绘制y=sinx的图像 代码如下: from sympy import * x = symbols('x') plot(sin(x), (x, -2 * pi, 2 * pi) ...
- Python科学计算系列1—方程和方程组
1.一元方程求解 例1:求下列一元二次方程的解 代码如下: # 定义数学符号 from sympy import symbols, solve x = symbols('x') f = x ** 2 ...
- JDBC-增删查改操作
使用场景:测试家族族长分成时需要批量添加家族流水记录,但手动添加和SQL语句添加较为麻烦 操作步骤 运行环境:Java8+IDEA 1.打开IDEA 点击File->New->Projec ...
- 为什么 Spring 循环依赖需要三级缓存,二级不够吗?
Spring循环依赖解决机制中引入了三级缓存,这是因为仅使用二级缓存无法灵活处理代理Bean的早期暴露需求.以下是为什么需要三级缓存的详细分析: 1. 二级缓存的局限性 二级缓存通常用于存储早期暴露的 ...
- 2319. 判断矩阵是否是一个 X 矩阵
2319. 判断矩阵是否是一个 X 矩阵 题解: 模拟 class Solution { public boolean checkXMatrix(int[][] grid) { int n = gri ...
- js判断对象任意深度的key属性是否存在,js的iset方法
方法一: 支持纯对象的obj // isset.js module.exports = (obj, keyPath) => { const keys = keyPath.split('.') ...
- 6.4K star!企业级流程引擎黑马,低代码开发竟能如此高效!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 AgileBPM 是一个基于Activiti7深度优化的企业级流程引擎开发平台,支持低代码. ...
- 信息资源管理文字题之“IT服务管理的理念以及ITIL管理体系中IT服务十大核心流程”
一.阐述IT服务管理的理念以及ITIL(信息技术基础架构库)管理体系中IT服务十大核心流程 二.答案 答:IT服务管理的理念是:以流程为导向,以客户为中心 ITIL标准中归纳了两大类核心流程:服务支持 ...
- Flutter视频压缩技术:如何在应用中优化视频文件的质量和大小?
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...