认识K8S的基本概念和原理

K8S:Kubernetes8个字母省略就是k8s

自动部署,自动扩展和容器化部署的应用程序的一个开源系统

k8s是负责自动化运维管理多个容器化程序的集群。是一个功能强大的容器编排工具。分布式和集群化的方式进行容器管理。

k8s的版本:1.15或1.18。使用最多的是1.20版本。最新的是1.29

k8s是Google的Borg系统作为原型。后期经由go语言编写的开源软件。

docker微服务,开源满足微服务使用,那为什么还要使用k8s呢?

1、 传统的部署方式:一般意义上的二进制部署,安装-运行-运行维护。需要专业的人员,如果出了故障,还不要人工重新拉起来。而且如果业务量增大,只能水平拓展。 再部署一个。

2、 容器化部署:可以使用dockerfile编写好自定义的容器。基于镜像随时都可以运行。数量少,还能管得过来,数量一旦太多,管理起来太复杂。而且docker一般是单机运行。没有容灾,没有高可用。

k8s的作用

简单、高效地部署容器化应用

1、 解决了docker的单机部署和无法集群的特点。

2、 解决了随着容器数量的增加,对应增加的管理成本。

3、 解决了容器的高可用。还提供了容器的自愈机制。如果容器停止,可以自动拉起。

4、 解决了容器没有预设模板,以及无法快速、大规模部署。以及大规模的容器调度。

5、 k8s提供了集中化配置管理的中心。

6、 解决了容器的生命周期的管理工具。

7、 提供了图形化工具,可以对容器进行管理。

k8s是基于开源的容器集群管理系统。在docker容器技术的基础之上。为容器化的应用提供部署、运行、资源调度、服务发现、动态伸缩等一系列完整的功能。大规模的容器管理。

1、 对docker等容器技术,从应用的包----部署-----运行-----停止------销毁。全生命周期管理

2、 集群方式运行。可以跨机器管理

3、 可以解决docker的跨机器运行的网络问题

4、 k8s可以自动修复。使得整个容器集群可以在用户期待的状态下运行。

K8S的特性

1、 弹性伸缩:基于命令或者图形化界面基于cpu的使用情况,自动的对部署的程序进行扩容和缩容。以最小的成本运行服务。

2、 自我修复;如果出现节点故障时,重新启动失败的容器,可以手动替换和重新部署、

3、 自带服务发现和负载均衡:k8s为多个容器提供一个统一的访问入口(内部地址和内部的DNS名称)自动负载均衡关联的所有容器。

4、 自动发布和回滚:k8s采用滚动的策略来更新应用。如果更新过程中出现问题,可以立刻回滚

5、 集中化的配置管理和密钥管理。

k8s集群内的各个组件都是要进行密钥队验证的。但是k8s的安全性不够,核心的组件不建议部署。可以部署一些自定义应用。

6、 存储编排:自动化的把容器部署在节点上。也可以通过命令行或者yml文件(自定义pod)实现指定节点部署。也可以通过网络存储。例如NFS共享目录,或者GFS文件共享

7、 任务进行批次处理。提供一次性的任务,定时任务。满足需要批量处理和分析的场景。

k8s的核心组件

1、 kube-apiserver:k8s集群之中每个组件都是要靠密钥队来进行验证,组件之间的通信靠apiserver来解决。

API:应用接口服务,在集群当中k8s的所有资源请求和调用操作都是kube-apiserver来完成。

所有对象资源的增、删、改、查和监听的操作都是kube-apiserver处理完之后交给etcd来进行。

api-server是k8s所有请求的入口服务,api-server接收k8s的所有请求(命令行、图形化界面),然后根据用户的具体请求,通知对应的组件展示或者运行命令。

APIserver相当于整个集群的大脑调度整个集群的资源。接受请求、转发请求给对应的组件。展示或者运行命令。

2、 kube-controller-manger:运行管理控制器。是k8s集群中处理常规任务的后台线程。是集群中所有资源对象的自动化控制中心。一个资源对应一个控制器。controller-manager负责管理这些控制器。

  1. node controller:节点控制器。负责节点的发现以及节点故障时的发现和响应。

  2. replication controller:副本控制器。控制关联pod的副本数。可以随时扩缩容。

  3. Endpoints controller:端点控制器。监听service和对应pod的副本变化。端点就是服务暴露出的访问点。要访问这个服务,必须要知道他的Endpoints

    就是内部每个服务的IP地址+端口

  4. service account和roken controllers:服务账户和令牌控制。为命名空间创建默认账户和API访问令牌。

    namespace:访问控制不同的命名空间。

  5. resourcequota controller:资源控制器。可以对命名空间的资源使用进行控制。也可以对pod的资源进行控制。

  6. namespace controller:命名空间控制器。管理命名空间的生命周期。

  7. service controller:服务节点控制器。k8s集群和外部的主机之间的接口控制器。

3、 kube-scheduler:资源调度组件。根据调度算法为新创建的pod选择一个合适的node节点。

可以理解为k8s的所有node节点的调度器。部署和调度node

预先策略:人工定制。指定的node节点上部署

优先策略:限制条件,根据调度算法选择一个合适的node,根据限制条件,例如:node节点的资源情况,node的资源控制的情况等等。选择一个资源最富裕。负载最小的node来部署。

4、 ETCD组件:是k8s的存储服务。etcd是分布式键值存储系统。(ket:value)存储k8s的关键配置和用户配置。先通过APIserver调用etcd当中的存储信息。然后再实施。(在整个集群当中,能对etcd存储进行读写权限的。只有API-server)

这些组件一般都在主节点上。

node组件

1、 kubelet:node节点的监视器,以及于master节点的通讯器。也可以理解为master在node节点上的监控。

kubelet会定时向API server汇报自己的node上的运行服务状态。API-server会把节点状态保存在ETCD存储当中。

接受来自master节点的调度命令。如果发现自己的状态和master节点的状态不一致。它会调用docker容器的接口同步数据。

对节点上容器的生命周期进行管理。保证节点上的镜像不会占满磁盘空间。退出的容器的资源进行回收。

2、 kube-porxy:实现每个node节点上pod网络代理。负责节点上的网络规划和四层负载均衡工作。还可以写入iptables(快淘汰)、ipvs实现服务映射。

kube-porxy:本身不直接给pod提供网络代理,porxy是service资源的载体。

由集群分配IP地址

service是pod集中的IP地址。每个pod对外提供代理的统一地址。

外部iIP地址:34943-----10.299.96.10:80(proxy)-----nginx1

访问外部地址实际上就是访问service地址再跳转到后端的服务实现负载均衡

porxy代理的是service对外统一的地址。

kube-porxy实际上代理的是pod集群网络(虚拟网络)

k8s的每个node节点上个都有一个kube-proxy组件。实现负载均衡。

3、 docker容器:容器引擎。运行容器。负责本机的容器创建和管理。

当k8s要创建pod时,kube-scheduler调度到节点上(node节点),节点上的kubelet指示docker启动特定的容器。kubelet把容器的信息收集收集,发送给主节点。只需要在主节点发布指令。节点上kubelet就会指示docker拉取镜像还是启动或者是停止容器。

4、 pod运行在节点上的。是k8s当中创建或者部署最小/最简单的基本单位。一个pod代表集群上正在运行的一个进程。

同一个pod内每一个容器都是都是一颗豌豆

pod是由一个或者多个容器组成。pod中的容器共享网络、存储和计算资源。可以部署在不同的docker主机上。

一个pod里面可以运行多个容器,也可以是一个容器。在生产环境中一般都是单个容器或者是具有关联关系的多个容器组成一个pod

容器是容器,但是pod不是容器。基于容器创建的pod

deployment:无状态应用部署,作用是管理和控制pod,以及replicaset(运行几个容器)。管控他的运行状态。

replicaset:保证pod的副本数量,受控于deployment

在k8s当中,部署服务,实际上就是pod。deployment部署的服务就是pod。replicaest就是定义pod容器的数量。可以保证pod的不可重复性。在当前的命名空间不能重复。不同命名空间名称可以重复。

官方推荐使用deployment进行服务部署

daemonset:确保所有节点运行同一类的pod

statefulset:有状态应用部署。

job:可以在pod中设置一次性的任务,运行完即退出。

cronjob:一直在运行的周期性任务。

service的作用?

service又叫cluster-ip

在k8s集群当中,每创建一个pod之后,都会为其中运行的容器分配一个集群内的IP地址。由于业务的变更。容器可能会法神变化,IP地址也会发生变化。service的作用就是提供整个pod对外统一的IP地址。

service可以理解为一个网关(路由器)。通过访问service就可以访问pod内部的容器集群。

service能实现负载均衡和代理------kube-porxy-----来实现负载均衡。

service是k8s微服务的核心。屏蔽了服务的细节。统一的对外暴露的端口。真正实现了“微服务”。

service的流量调度:userpace(用户空间已经废弃)、iptables(即将废弃)、ipvs(目前1.20都使用ipvs)

label:标签,k8s的特色管理方式,分类管理资源对象。label标签可以用户自定义

lable标签选择器:等于、不等于。使用定义的标签名。

ingress:k8s集群对外暴露提供访问的接口。属于应用层(在第七层)。七层代理转发的是http请求。访问方式是http或者是https。

service是四层转发。转发的是流量

www.zyg.com:80--------ingress---------service-------pod------容器

namespace:在k8s上可以通过namespace来实现资源隔离。项目隔离。通过namespace可以把集群划分为多个资源不可共享的虚拟及群组。

不同命令空间里的资源名称可以重复

总结整合

1、kbs的管理员访问集群

2、 通过AUTH权限验证

3、 API-SERVER提供集群统一的访问接口

  1. 调用ETCD的存储信息

  2. KUBE-controller-manager:节点控制器。对容器控制。

  3. KUBE-schudel:节点调度器,在每个不同的位置部署不同的容器。

4、 node1节点和node2节点:每一个节点上会部署不同的pod。不同的pod里面都是不同的容器。

5、 节点的监控器是kubelet:来管理node节点上的docker资源

6、 kube-proxy:来管理每个pod的网络节点

7、 当客户端来访问时,会先通过防火墙访问kube-proxy获取容器内部的资源。kube-schudel调度器创建pod安排到指定的资源上。通过API调用pod再将获取到的信息统一保存到ETCD当中。KUBE-controller-manager来管理不同的节点。

ETCD的存储方式:分布式的存储

ingress和service的区别是什么?

ingress是七层代理转发http或者https请求

service是四层代理转发的流量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/586491.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RO-NeRF论文笔记

RO-NeRF论文笔记 文章目录 RO-NeRF论文笔记论文概述Abstract1 Introduction2 Related Work3 Method3.1 RGB and depth inpainting network3.2 Background on NeRFs3.3 Confidence-based view selection3.4 Implementation details 4 Experiments4.1 DatasetsReal ObjectsSynthe…

YOLOv5算法进阶改进(9)— 引入ASPP | 空洞空间金字塔池化

前言:Hello大家好,我是小哥谈。ASPP是空洞空间金字塔池化(Atrous Spatial Pyramid Pooling)的缩写。它是一种用于图像语义分割任务的特征提取方法。ASPP通过在不同尺度上进行空洞卷积操作,从而捕捉到图像中不同尺度的上下文信息。ASPP的主要思想是在输入特征图上应用多个不…

华为服务器安装银河麒麟V10操作系统(IBMC安装)

iBMC是华为面向服务器全生命周期的服务器嵌入式管理系统。提供硬件状态监控、部署、节能、安全等系列管理工具,标准化接口构建服务器管理更加完善的生态系统。 服务器BMC IP:192.168.2.100 一、准备工作 1、确保本机和服务器BMC管理口在同一网络 2、银…

浅层神经网络时间序列预测和建模

目录 时间序列网络 NARX 网络 NAR 网络 非线性输入-输出网络 定义问题 使用神经网络时间序列拟合时间序列数据 使用命令行函数拟合时间序列数据 选择数据 选择训练算法 创建网络 准备要训练的数据 划分数据 训练网络 测试网络 查看网络 分析结果 闭环网络 向…

第七课:计算机网络、互联网及万维网(WWW)

第七课:计算机网络、互联网及万维网(WWW) 第二十八章:计算机网络1、局域网 Local Area Networks - LAN2、媒体访问控制地址 Media Access Control address - MAC3、载波侦听多路访问 Carrier Sense Multiple Access - CSMA4、指数…

Stable Diffusion 系列教程 - 5 ControlNet

ControlNet和LORA的定位都是对大模型做微调的额外网络。作为入门SD的最后一块拼图是必须要去了解和开发的。为什么ControlNet的影响力如此的大?在它之前,基于扩散模型的AIGC是非常难以控制的,扩散整张图像的过程充满了随机性。这种随机性并不…

激光 GPS 卫星实现无边界精度

GPS 卫星领域已经发生了重大创新,将变得更加精确和强大。我们正在谈论激光后向反射器阵列( LRA)的发展。 这些可以精确跟踪地球的形状、自转和环境变化,从而扩展卫星的能力。 GPS卫星的主要用途是确定各种情况下的位置&#xff…

C++继承与派生——(7)类型兼容原则

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 站在巨人的肩上,是为了超过…

nodejs+vue+ElementUi摄影预约服务网站系统91f0v

本系统提供给管理员对首页,个人中心,用户管理,员工管理,摄影套餐管理,套餐系列管理,客片欣赏管理,摄影预约管理,摄影订单管理,取片通知管理,摄影评价管理&…

【linux】Linux管道的原理与使用场景

Linux管道是Linux命令行界面中一种强大的工具,它允许用户将多个命令链接起来,使得一个命令的输出可以作为另一个命令的输入。这种机制使得我们可以创建复杂的命令链,并在处理数据时提供了极大的灵活性。在本文中,我们将详细介绍Li…

Peter算法小课堂—浮点数危机

大家先想想下面这个代码运行结果&#xff1a; #include <bits/stdc.h> using namespace std; int main(){double x5.2;double y4.11.1;cout<<(x<y)<<endl;cout<<x-y<<endl;return 0; } 最终发现&#xff0c; &#xff1f;&#xff1f;&…

Unity之ShaderGraph如何实现瓶装水效果

前言 有一个场景在做效果时,有一个水瓶放到桌子上的设定,但是模型只做了个水瓶,里面是空的,所以我就想办法,如何做出来瓶中液体的效果,最好是能跟随瓶子有液体流动的效果。 如下图所示: 水面实现 水面效果 液体颜色设置 因为液体有边缘颜色和内里面颜色,所以要分开…

WEB渗透—PHP反序列化(十一)

Web渗透—PHP反序列化 课程学习分享&#xff08;课程非本人制作&#xff0c;仅提供学习分享&#xff09; 靶场下载地址&#xff1a;GitHub - mcc0624/php_ser_Class: php反序列化靶场课程&#xff0c;基于课程制作的靶场 课程地址&#xff1a;PHP反序列化漏洞学习_哔哩…

【力扣题解】P106-从中序与后序遍历序列构造二叉树-Java题解

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P106-从中序与后序遍历序列构造二叉树-Java题解&#x1f30f;题目描述&#x1f4a1;题…

2024 通义语音 AI 技术图景,大模型引领 AI 再进化

自 1956 年达特茅斯会议上&#xff0c;约翰麦卡锡首次提出了“人工智能”这一术语。AI 在此后七十年的发展中呈现脉冲式趋势&#xff0c;每隔 5-10 年会出现一次技术革新和域定。在这一技术探索进程之中&#xff0c;预训练基础模型逐渐成为主流探索方向&#xff0c;受到学术界和…

C#下将点云数据保存为PLY格式

目前没有找到C#下将点云数据保存为PLY格式的库&#xff0c;查看了一下PLY格式&#xff0c;所以自己写了个方法实现点云数据保存PLY格式 public static string SavePointCloudToPLY(string No, float[] x, float[] y, float[] z){ string result "";Task.Run(() >…

基本运算器实验静态随机存储器实验

1.1 基本运算器实验 1. 实验记录 ①运算结果 首先按照实验指导书进行连线&#xff0c;然后打开试验箱电源&#xff0c;把A&#xff0c;B两个数存到寄存器中&#xff0c;然后改变s3 s2 s1 s0 的值&#xff0c;产生脉冲&#xff0c;观察对应的数据总线上的值以及两个标志位。 …

机器学习分类模型

机器学习常见分类模型及特点 机器学习常见分类模型优缺点 决策树模型 决策树&#xff08;Decision Tree&#xff09;是一类常见的机器学习方法&#xff0c;可应用于分类与回归任务&#xff0c;这里主要讨论分类决策树。决策树是基于树结构来进行决策的。下图是使用决策树来决定…

分布式技术之分布式发布订阅通信

文章目录 什么是发布订阅&#xff1f;发布订阅的原理Kafka 发布订阅原理及工作机制 发布订阅的应用 什么是发布订阅&#xff1f; 发布订阅的三要素是生产者、消费者和消息中心&#xff0c;生产者负责产生数据放到消息中心&#xff0c;消费者向消息中心订阅自己感兴趣的消息&am…

【详解】KMP算法——每步配图让你打穿KMP

介绍 什么是KMP算法&#xff1a; KMP算法主要运用串的模式匹配中&#xff08;简单来说就是在s串中找到一个与t串相等的子串&#xff0c;称为模式匹配&#xff09;例如s为abcdef&#xff0c;t为bcd&#xff0c;那么就是在s中找到bcd&#xff0c;并返回其在s中的首下标&#xf…