当前位置: 首页 > news >正文

Kubernetes 01

MESOS:APACHE 分布式资源管理框架   2019-5  Twitter退出,转向使用Kubernetes

Docker Swarm 与Docker绑定,只对Docker的资源管理框架,阿里云默认Kubernetes

Kubernetes:Google 10年的容器化基础框架,borg系统   Go语言对borg系统进行翻写,就是Kubernetes

        特点:轻量级   消耗的资源少

                   开源

                   弹性伸缩

                   负载均衡

blog组件

brogcfg:通过文件访问    command-line tools:通过工具访问   web browsers:通过浏览器访问

将任务交给BrogMaster,然后将任务分发出去给Broglet(不同的节点),将数据写入Paxos数据库,然后Broglet监听数据库 

高可用集群副本数据最好是>=3的奇数个

k8s:

scheduler:调度器,负责接收任务,将任务调度到不同的合适的node中。scheduler将任务交给api server,然后api server将任务交给etcd(scheduler并不会与etcd直接交互) 

api server:所有服务访问的统一入口

reolication controller:控制器,维持副本的期望数目

etcd:可信赖分布式键值对数据库,为整个分布式集群存储一些关键数据,协助分布式集群的正常运转,持续化的数据

        不同版本:v2:写入内存中(已在Kubernetes v1.11中弃用)    v3:引入本地的卷的持久化操作

etcd内部架构图:

采用HTTP Server的形式,进行c/s构建

Raft:存放所有读写的信息

WAL:进行日志备份,预写日志,如果想对信息进行更改,先生成一个日志,可以在一段时间后进行完整备份

kuberlet:直接与容器引擎进行交互实现容器的生命周期管理,与docker进行交互,操作docker创建一些容器,维持pod的生命周期

kube proxy:负责写入规则至IPTABLES  IPVS,负载均衡,默认操作防火墙,实现Pod之间的映射访问 

其他插件:CoreDNS:可以为集群中的SVC创建一个域名IP的对应关系解析

                  Dashboard:给k8s集群提供一个B/S结构的访问体系

                  Ingress Controller:官方只能实现四层代理,Ingress可以实现七层代理

                  Federation:提供一个跨集群中心多k8s的统一管理功能

                  Prometheus:提供集群的监控能力

                  ELK:提供集群日志统一分析介入平台

Pod

自主式Pod:不是被控制器管理的Pod

控制器管理的Pod

ReplicationController用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的Pod来替代,如果异常多出来的容器也会自动回收

在新版本的Kubernetes中建议使用ReplicaSet来取代ReplicationController

它们没有本质的不同,只是ReplicaSet支持集合式selector

虽然ReplicaSet可以独立使用,但一般还是建议使用Deployment来自动管理ReplicaSet,这样就无需担心跟其他机制的不兼容问题(RS不支持滚动更新,但是Deployment支持)

StatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务而设计),其应用场景包括:

        稳定的持久化存储,即Pod重新调度后还是能访问待相同的持久化数据(数据不会丢失),基于PVC来实现

        稳定的网络标志,即Pod重新调度后其PodName和HostName不变,基于Headless Service(即没有Cluster IP的Service)来实现

        有序部署,有序扩展,即Pod是有顺序的,在部署或者扩展的时候要依据定义的顺序依次进行(从0到N-1,在下一个Pod运行之前所有之前的Pod必须都是Running和Ready状态),基于init containers来实现

        有序收缩,有序删除(即从N-1到0)

DaemonSet确保全部(或者一些)Node上运行Pod的副本,当有Node加入集群时,也会为他们新增一个Pod,当有Node从集群移除时,这些Pod也会被回收,删除DaemonSet将会删除了它创建的所有Pod

使用DaemonSet的一些典型用来:

  • 运行集群存储daemon,例如在每个Node上运行glustered、ceph
  • 在每个Node上运行日志收集daemon,例如fluented、logstash
  • 在每个Node上运行监控daemon,例如Prometheus Node Exporter

Job负责批处理任务,即今执行一次的任务,它保证批处理任务的一个或多个Pod成功结束

Cron Job管理基于时间的Job:

  • 在给定时间点只运行一次
  • 周期性地在给定时间点运行

网络通信模式

Kubernetes的网络模型假定了所有的Pod都在一个可以直接连通的扁平的网络空间中,这在GCE(Google Compute Engine)里面是现成的网络模型,Kubernetes假定这个网络已经存在,而在私有云里搭建Kubernetes集群,就不能假定这个网络已经存在了。我们需要自己实现这个网络假设,将不同节点上的Docker容器之间的互相访问先打通,然后运行Kubernetes

同一个Pod内的多个容器之间:共用同一个网络栈,网络栈的IO

各Pod之间的通讯:Overlay Network

Pod与Service之间的通讯:各节点的Iptables规则

Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址,而且它还能在这些IP地址之间建立一个覆盖网络(Overlay Network),通过这个覆盖网络,将数据包原封不动地传递到目标容器内

Flannel启动之后会向etcd中插入可以被分配的网段,

etcd存储管理Flannel可分配的IP地址段资源,监控etcd中每个Pod的实际地址,并在内存中建立维护Pod节点路由表

总结:

同一个Pod内部通讯:同一个Pod共享同一个网络命名空间,共享同一个Linux协议栈

Pod1至Pod2:如果Pod1与Pod2不在同一台主机,Pod的地址是与docker0在同一个网段的,但docker0网段与宿主机网卡是两个完全不同的IP网段,并且不同Node之间的通信只能通过宿主机的物理网卡进行,将Pod的IP和所在Node的IP关联起来,通过这个关联让Pod可以互相访问

如果Pod1与Pod2在同一台机器,将Docker0网桥直接转发请求至Pod2,不需要经过Flannel

Pod至Service的网络:目前基于性能考虑,全部为iptables维护和转发

Pod到外网:Pod向外网发送请求,查找路由表,转发数据包至宿主机的网卡,宿主网卡完成路由选择后,iptables执行Masquerade,把源IP更改为宿主网卡的IP,然后向外网服务器发送请求

外网至Pod:Service

注意真实的物理网络只有节点网络,Pod网络与Service网络都是虚拟网络

相关文章:

Kubernetes 01

MESOS:APACHE 分布式资源管理框架 2019-5 Twitter退出,转向使用Kubernetes Docker Swarm 与Docker绑定,只对Docker的资源管理框架,阿里云默认Kubernetes Kubernetes:Google 10年的容器化基础框架,borg…...

node修改文件名称

node修改名称 var fs require(fs); const events require(events); var path require(path);init(); function init() {//要遍历的文件夹所在的路径const dirPath path.resolve(__dirname, "data");//遍历目录fileDisplay(dirPath); }/*** 文件遍历* param dirP…...

ArcGIS 软件中路网数据的制作

内容导读 路网数据是进行网络分析的基础,它是建立网络数据集的数据来源。 本文我们以OSM路网数据为例,详细介绍OSM路网数据从下载,到数据处理,添加属性,完成符合网络分析的网络数据集的全部过程。 01 数据获取 比较…...

transformers microsoft--table-transformer 表格识别

一、安装包 pip install transformers pip install torch pip install SentencePiecepip install timm pip install accelerate pip install pytesseract pillow pandas pip install tesseract 下载模型: https://huggingface.co/microsoft/table-transformer-s…...

【Spark源码分析】规则框架-草稿

规则批:规则集合序列,由名称、执行策略、规则列表组成。一个规则批里使用一个执行规则。 执行策略 FixedPointOnce 规则: #mermaid-svg-1cvqR4xkYpMuAs77 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px…...

迪米特原则的理解和实践

迪米特原则(Law of Demeter,简称LoD),也被称为最少知识原则(Least Knowledge Principle,LKP),是面向对象设计中的一个重要原则。其核心思想是:一个对象应该对其他对象有最…...

jQuery零基础入门速通(中)

大家好,我是小黄。 在上一篇文章中,我们初步了解了jQuery的基本概念、环境搭建、选择器、基本的DOM操作以及事件处理。接下来,我们将继续深入探讨jQuery的DOM操作和事件处理,以及一些实用的技巧和高级用法。 五、高级DOM操作 5…...

【设计模式系列】中介者模式(十八)

一、什么是中介者模式 中介者模式(Mediator Pattern)是一种行为型设计模式,其核心思想是通过一个中介者对象来封装一系列对象之间的交互,使这些对象不需要相互显式引用。中介者模式提供了一个中介层,用以协调各个对象…...

PDF版地形图矢量出现的问题

项目描述:已建风电场道路测绘项目,收集到的数据为PDF版本的地形图,图上标注了项目竣工时期的现状,之后项目对施工区域进行了复垦恢复地貌,现阶段需要准确的知道实际复垦修复之后的道路及其它临时用地的面积 解决方法&…...

小迪安全第四十二天笔记 简单的mysql注入 mysql的基础知识 用户管理数据库模式 mysql 写入与读取 跨库查询

前言 之前的安全开发我们学习了 php联动数据库的模式 ,这个模式是现在常用的模式 这一节来学习 如何 进行数据库的注入和数据库相关知识 1、了解数据库的结构 我们使用 navicate连接数据库之后看一下 一共四层结构 库 》表》字段》数据 这个层级关系…...

11.25.2024刷华为OD

文章目录 HJ76 尼科彻斯定理(观察题,不难)HJ77 火车进站(DFS)HJ91 走格子方法,(动态规划,递归,有代表性)HJ93 数组分组(递归)语法知识…...

你真的会用饼图吗?JVS-智能BI饼图组件深度解析

在数据可视化的世界里,饼图是我们常见的一种可视化图形。在JVS-智能BI中提供了数据可视化饼图组件,接下来我通过这篇文章详细介绍,从配色方案到图形配置,从显示数据到提示信息,饼图的每一个细节配置。 饼图类图表概述…...

HarmonyOS Next 模拟器安装与探索

HarmonyOS 5 也发布了有一段时间了,不知道大家实际使用的时候有没有发现一些惊喜。当然随着HarmonyOS 5的更新也带来了很多新特性,尤其是 HarmonyOS Next 模拟器。今天,我们就来探索一下这个模拟器,看看它能给我们的开发过程带来什…...

医学机器学习:数据预处理、超参数调优与模型比较的实用分析

摘要 本文介绍了医学中的机器学习,重点阐述了数据预处理、超参数调优和模型比较的技术。在数据预处理方面,包括数据收集与整理、处理缺失值、特征工程等内容,以确保数据质量和可用性。超参数调优对模型性能至关重要,介绍了多种调…...

单片机知识总结(完整)

1、单片机概述 1.1. 单片机的定义与分类 定义: 单片机(Microcontroller Unit,简称MCU)是一种将微处理器、存储器(包括程序存储器和数据存储器)、输入/输出接口和其他必要的功能模块集成在单个芯片上的微型…...

【C++】auto和decltype类型推导关键字

1.C11关键字 auto和decltype是C11引入的关键字,负责类型的推导。所有不同的是: auto可直接用来定义变量,编译器会自动推导出变量的类型。decltype是推导出一个操作数的类型,然后用这个类型再去定义。 2.两者区别 尽管两者都是宏…...

OGRE 3D----3. OGRE绘制自定义模型

在使用OGRE进行开发时,绘制自定义模型是一个常见的需求。本文将介绍如何使用OGRE的ManualObject类来创建和绘制自定义模型。通过ManualObject,开发者可以直接定义顶点、法线、纹理坐标等,从而灵活地构建各种复杂的几何体。 Ogre::ManualObject 是 Ogre3D 引擎中的一个类,用…...

ARM + Linux 开发指南

随想:想写一个系列来讲如何嵌入式开发,然后能形成一个知识体系,帮助那些刚刚做嵌入开发的同学们. 1. ARM Linux从开机到Linux完全启动的流程和代码分析 ARM Linux从开机到完全启动的流程与代码分析 ARM Linux的启动过程主要涉及从设备上电开始,到Linux内核完全启动并进入…...

facebook欧洲户开户条件有哪些又有何优势?

在当今数字营销时代,Facebook广告已成为企业推广产品和服务的重要渠道。而为了更好地利用这一平台,广告主们需要理解不同类型的Facebook广告账户。Facebook广告账户根据其属性可分为多种类型,包括个人广告账户、企业管理(BM&#…...

算法训练(leetcode)二刷第三十一天 | 1049. 最后一块石头的重量 II、494. 目标和、*474. 一和零

刷题记录 1049. 最后一块石头的重量 II*494. 目标和二维数组滚动数组 *474. 一和零 1049. 最后一块石头的重量 II leetcode题目地址 本题与416. 分割等和子集类似。依旧是01背包问题,本题尽可能将石头分为相等(相近)的两堆,然后…...

30岁裸辞后,我用两个月拿下AI应用认证,现在OFFER选择困难症犯了

30岁裸辞那天,我最怕的不是没收入,而是突然发现:过去积累的经验,正在被AI重新定价。以前会写方案、做表格、跟项目,算是职场硬通货;到了2026年,招聘JD里开始频繁出现AI工具应用、智能工作流、Pr…...

极致精简,功能强大的PDF编辑工具

这是一款功能全面的PDF编辑工具 你只需要导入一份PDF格式文件 就可以快速的对它进行插入 批注编辑保护转换等各种操作 而且无需登录 也可以直接使用 在插入选项中可以进行插入文字图片 页面页眉页脚页码文档背景水印视频音频等 在批注选项中可以管理批注隐藏批注 高亮显示 文本…...

千亿镁合金产业集群正在成形:成都、抚州、池州的新版图

一个新赛道的地理坐标 如果要在中国地图上标注一条正在成形的新兴产业集群走廊,高强镁合金这条线,值得被认真画出来。 成都龙泉驿——江西抚州临川——安徽池州高新区,三个坐标,三条生产线,一家公司,两年内…...

第三卷第4章:原型模式设计思想

第三卷第4章:原型模式设计思想 目录介绍 01.案例引入与思考 1.1 痛点场景 1.2 它哪里不舒服 1.3 引出本篇主角 02.原型模式介绍 2.1 原型模式由来 2.2 原型模式定义...

关联规则挖掘在Calabi-Yau流形Hodge数分析中的应用与复现

1. 项目概述:当数据挖掘遇见高维几何在理论物理和代数几何的交叉领域,Calabi-Yau流形一直扮演着核心角色。这些具有特殊拓扑结构的空间,不仅是弦理论中额外维度紧化的关键候选者,其本身丰富的数学性质也吸引着无数研究者。然而&am…...

基于ESP8266与MQTT的家庭水压自动控制系统设计与实现

1. 项目概述与核心需求解析家里水压不稳、供水时断时续,这大概是很多朋友都遇到过的烦心事。我所在的城市供水情况就很不理想,为了解决这个问题,我不得不自己动手,搭建了一套基于ESP8266微控制器的家庭水压增压与储水自动控制系统…...

Keil µVision反汇编窗口内容导出方案与调试技巧

1. 问题背景与需求解析在嵌入式开发过程中,调试环节往往占据大量时间。Keil Vision作为业界广泛使用的集成开发环境(IDE),其调试器功能强大但某些细节功能仍有提升空间。最近我在使用C251架构开发汽车电子控制单元时,就遇到了一个看似简单却影…...

AutoWall终极指南:如何在Windows上轻松设置炫酷动态壁纸

AutoWall终极指南:如何在Windows上轻松设置炫酷动态壁纸 【免费下载链接】AutoWall 🌌 Live wallpapers on Windows 7/8/10/11 using open-source wallpaper engine 项目地址: https://gitcode.com/gh_mirrors/au/AutoWall 厌倦了千篇一律的静态桌…...

京东自动购物终极指南:告别缺货烦恼,智能抢购神器

京东自动购物终极指南:告别缺货烦恼,智能抢购神器 【免费下载链接】Jd-Auto-Shopping 京东商品补货监控及自动下单 项目地址: https://gitcode.com/gh_mirrors/jd/Jd-Auto-Shopping 还在为心仪商品瞬间售罄而苦恼吗?还在熬夜等待补货却…...

从零开始的Linux#2 vim编辑器

介绍vi\vim是Linux中最经典的文本编辑器,vim是vi的全面升级版本,我们后面只用vim通过vim编辑器编辑文件,需要使用命令vim 文件路径如果文件路径表示的文件不存在,那么此命令会用于编辑新文件;如果存在则编辑已有文件模…...