Kubernetes入门-大简介

目录

何为微服务

何为云原生

何为编排器


  • “Kubernetes”这个名字来自希腊语,意思是“舵手”
  • 舵手是一个航海/航行术语,指掌舵的人
  • 从本质上说,Kubernetes是云原生微服务(cloud-native microservice)应用的编排器(orchestrator)

何为微服务

  • 在过去,开发人员构建和部署的是单体应用
  • 单体应用中每个功能都被捆绑在一起作为单个大的包
  • 如图所示:
  • Web前端、认证、日志生成、数据存储、报告系统等被紧密地耦合在一起,捆绑成一个应用
  • 这意味着,如果想改变某个部分,必须改变每一部分
  • 举个简单的例子,如果需要修补或更新上图中的应用的报告功能,必须关闭整个应用并修补/更新整个应用
  • 像这样的工作需要详尽的计划,面临巨大的风险且十分复杂
  • 但是,单体应用带来的痛苦还不止于此
  • 如果想对它们的某个功能进行扩缩容,不得不对整个单体应用扩缩容
  • 基本上,应用的每个功能都被作为一个单体的单元捆绑、部署、升级和扩缩容,这是很笨拙的,显然不是很理想
  • 另外,微服务应用采用完全相同的一组功能——Web前端、认证、日志生成、数据存储、报告系统等
  • 将每个功能拆分为自己的小应用
  • “小”的另一个词是“微”,“应用”的另一个词是“服务”
  • 这就是“微服务”这个术语的由来
  • 如果仔细观察下图你会发现,它就是和上图完全相同的一组应用功能
  • 不同的是,每个功能都是独立开发、独立部署的,并且可以独立更新和扩缩容
  • 但它们依然协同工作,创造与单体应用完全相同的应用体验
  • 最常见的模式是每个微服务都作为独立的容器来开发和部署
  • 例如,Web前端微服务会是一个容器,认证微服务会是另一个不同的容器,报告系统微服务又会再是不同的容器
  • 以此类推
  • 每个微服务都是独立的,但又是通过网络松散耦合的,以创建相同的应用体验
  • 通过设计让微服务之间是松散耦合的,这是修改一个微服务而不影响其他微服务的基础
  • 从技术上讲,每个微服务都通过IP网络暴露一个API,让其他微服务能够通过这个API来使用它
  • 如果不熟悉API这个概念,下面这个类比对你可能会有所帮助
  • 汽车的外形和大小各异,它们配置的可能是直列四缸、水平对卧六缸、八缸的发动机,甚至可能是电动发动机
  • 但是,所有这些复杂的细节都通过使用标准化控制器---方向盘、加速器、刹车踏板和车速表对驾驶员隐藏了
  • 在这个模型中,控制器相当于汽车的API---驾驶员通过它们来使用汽车的功能
  • 这种模型的一个主要优点是,学会驾驶后就能驾驶任何一款汽车
  • 例如,我学开车时用的是一辆前轮驱动的汽车,它配置的是四缸汽油发动机
  • 但我无须学习任何新的驾驶技能就能开全轮驱动的电动汽车
  • 这就是因为标准化的方向盘和脚踏板(API)将发动机和传动系统的复杂细节隐藏起来了
  • 同样,更换汽车的发动机、替换其方向盘和轮胎、升级其排气系统后,驾驶员依然能够驾驶它,而无须学习任何新的驾驶技能
  • 回到正题---微服务应用
  • 只要没有修改微服务的API,就可以在其他微服务和应用用户不会注意到的情况下对微服务进行修补或更新
  • 除了让微服务能够独立地更新和扩缩容,微服务设计模式还让开发团队更小、更敏捷,能够更快地迭代功能
  • 一般来说,与大团队相比,2~8人团队的沟通和合作的职场政治因素会更少,也会更敏捷
  • 微服务设计模式还有其他优点---将功能开发成独立的微服务,可以在不影响应用任何部件的情况下对它们进行开发、部署、更新、扩缩容等
  • 但是,微服务并不完美
  • 如果有很多由不同团队管理的移动部件,微服务可能会变得很复杂
  • 最后,这两种设计应用的方式——单体与微服务---被称为设计模式
  • 微服务设计模式是当前云时代最常见的模式

何为云原生

  • 一个云原生应用必须能够:
  • 按需扩缩容
  • 自我修复
  • 支持滚动更新
  • 可以在任何有Kubernetes的地方运行
  • 让我们花点时间来定义其中一些流行术语的含义
  • 按需扩缩容是指应用和相关基础设施为了满足当前需求的自动增长和收缩的能力
  • 例如,在线零售应用可能需要在特殊的假期增加基础设施和应用资源,然后在假期结束时缩小规模
  • 如果配置正确,Kubernetes可以在需求增加时自动对应用和基础设施进行扩容,也可以在需求下降时对它们进行缩容
  • 这不仅有助于企业对突发变化做出更快速的反应,还能在缩容时帮助其降低基础设施的成本
  • Kubernetes还可以自我修复应用和单个微服务,这需要更多关于Kubernetes的知识,将会在后面介绍
  • 但现在要知道的是,当用户把一个应用部署到Kubernetes时,用户告诉Kubernetes这个应用应该是什么样子
  • 例如,每个微服务有多少个实例,应该连接到哪些网络
  • Kubernetes将其保存为期望状态(desired state),并监视应用,以确保它始终与期望状态匹配
  • 如果有什么变化,例如,某个微服务崩溃,Kubernetes会注意到这一点,并启动一个副本作为替代,这就是所谓的自我修复或弹性
  • 滚动更新是一种在不让应用离线甚至客户不会注意到的情况下更新应用的某些部分的能力
  • 它改变了现代商业世界的游戏规则,稍后我们就可以看到它的实际效果
  • 关于云原生还有最后一点要讲
  • 云原生几乎是与公有云无关的,它是一组我们讨论过的功能和能力
  • 因此,云原生应用可以在任何有Kubernetes的地方运行,如AWS、Azure、Linode、本地数据中心或者家中的树莓派集群
  • 总之,云原生应用是具有弹性的、可以自动扩缩容的,并且可以在不停机的情况下进行更新
  • 它们还可以在任何拥有Kubernetes的地方甚至是内部环境运行

何为编排器

  • 借助一个类比可以更好地解释编排器这个概念
  • 一个管弦乐队由一群演奏不同乐器的音乐家组成
  • 每位音乐家都可以用不同的乐器,在演奏开始后发挥着不同的作用
  • 乐器包括小提琴、大提琴、竖琴、双簧管、长笛、单簧管、小号、长号、鼓,甚至三角琴
  • 每一个音乐家在管弦乐队中扮演着不同的角色
  • 如下图所示,每位乐器都是独立的个体,还没有被指定扮演什么样的角色——这简直是一团糟,鼓甚至是上下颠倒的
  • 一位指挥家拿着乐谱和指挥棒走过来,维持秩序
  • 她把弦乐器都安排到舞台前面,木管乐器安排在中间,铜管乐器安排在后面一点儿,打击乐器安排在后面高一些的地方
  • 她还指挥一切,告诉每组乐器什么时候演奏、演奏多大声以及以什么速度演奏
  • 简而言之,指挥家将上图中的混乱情况变成如下图所示那样井井有条,以确保音乐按照作曲家的意图演奏
  • 云原生微服务应用就像管弦乐队
  • 每个云原生应用都是由很多小的微服务组成的
  • 它们各司其职:有的服务于Web请求,有的用于认证会话,有的进行日志记录,有的用于持久化数据,还有一些生成报告
  • 但就像一个管弦乐队一样,它们需要有人或某种东西将它们组织成一个有用的应用
  • 由此,我们真正走进Kubernetes世界
  • Kubernetes将独立的微服务组织成一个有意义的应用,如下图所示
  • 如前所述,它可以对应用进行扩缩容、自我修复和更新等操作
  • 总之,像Kubernetes这样的编排器将不同的微服务组合在一起,并将它们组织成一个有用的应用
  • 它还提供并管理云原生功能,如扩缩容、自我修复和更新

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣刷题--728. 自除数【简单】

题目描述 自除数 是指可以被它包含的每一位数整除的数。 例如,128 是一个 自除数 ,因为 128 % 1 0,128 % 2 0,128 % 8 0。 自除数 不允许包含 0 。 给定两个整数 left 和 right ,返回一个列表,列表的…

安利一款非常不错浏览器文本翻译插件(效果很不错,值得一试)

官网地址:https://immersivetranslate.com/ “沉浸式翻译”这个词,由我们发明创造。如今,它已然成为“双语对照翻译”的代名词。自2023年上线以来,这款备受赞誉的 AI 双语对照网页翻译扩展,已帮助超过 100 万用户跨越语…

USB (3)

USB 流控 USB是polled bus,这和PCIe不一样,所有的transfer都是由host发起的。 对于IN(从device到host)。 如果device没有数据,那么只能回复NAK。 Token received corrupted

2024年高考作文考人工智能,人工智能写作文能否得高分

前言 众所周知,今年全国一卷考的是人工智能,那么,我们来测试一下,国内几家厉害的人工智能他们的作答情况,以及能取得多少高分呢。由于篇幅有限,我这里只测试一个高考真题,我们这里用百度的文心…

MySQL事务,视图,用户管理学习笔记【事务概念 | 事务隔离级别 | 设置级别 | 视图 | 用户管理】

博客主页:花果山~程序猿-CSDN博客 文章分栏:MySQL之旅_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一,事务初…

109.网络游戏逆向分析与漏洞攻防-装备系统数据分析-商店与捨取窗口数据的处理

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 现在的代码都是依据数据包来写的,如果看不懂代码,就说明没看懂数据包…

使用 Scapy 库编写 TCP ACK 洪水攻击脚本

一、介绍 TCP ACK洪水攻击是一种分布式拒绝服务攻击(DDoS),攻击者通过向目标服务器发送大量伪造的TCP ACK(确认)数据包,使目标服务器不堪重负,无法正常处理合法请求。虽然ACK包通常用于确认接收…

【上海大学计算机组成原理实验报告】七、程序转移机制

一、实验目的 学习实现程序转移的硬件机制。 掌握堆栈寄存器的使用。 二、实验原理 根据实验指导书的相关内容,实验箱系统的程序转移硬件机制在于,当LDPC有效时,如果此时DUBS上的值就是转移的目标地址,则此目标地址被打入PC&am…

【数据分析基础】实验三 文件操作、数组与矩阵运算

一.实验目的 掌握上下文管理语句with的使用方法。掌握文本文件的操作方法。了解os、os.path模块的使用。掌握扩展库Python-docx、openpyxl的安装与操作word、Excel文件内容的方法。熟练掌握numpy数组相关运算和简单应用。熟练使用numpy创建矩阵,熟悉常用…

Python | Leetcode Python题解之第135题分发糖果

题目: 题解: class Solution:def candy(self, ratings: List[int]) -> int:n len(ratings)ret 1inc, dec, pre 1, 0, 1for i in range(1, n):if ratings[i] > ratings[i - 1]:dec 0pre (1 if ratings[i] ratings[i - 1] else pre 1)ret p…

27-LINUX--I/O复用-poll

一.poll概述 poll是一个多路复用的I/O模型&#xff0c;一个进程监视多个文件描述符&#xff0c;当文件描述符就绪时&#xff0c;poll返回可读并做相应处理。 1.poll的模型 #include <poll.h>struct pollfd {int fd; //文件描述符short events; //事件类型 s…

codesys【CAN总线】

1下载设备描述文件&#xff1a; 必须下载设备描述文件&#xff0c;要不然编程软件无法正确组态。 根据实际设备【品牌】去官网搜索下载。 以 DMA882-CAN 为例 CAN的设备描述文件是【.eds】的扩展名 安装设备描述文件。 2添加CAN总线&#xff1a; 1添加【CAN总线】&#xff1a…

Chroium 源码目录结构分析(1):源码目录体积一栏

获取源码 首先&#xff0c;我们拉一份最新的源代码&#xff08;笔者是2024.6.6日拉取的&#xff09;&#xff1a; fetch --nohistory chromium 源码预处理 如果运行build&#xff0c;会生成许多生成的代码&#xff0c;因此我们不运行build。 然后&#xff0c;把干扰后续分析…

Map深度学习

Map Map是一个键值对的集合&#xff0c;和object类似&#xff0c;Map作为构造函数&#xff0c;可以通过全局对象获取到。需要通过new操作创建实例对象&#xff0c;直接调用会报错。Map构造函数接受一个iterable类型的函数&#xff0c;用来初始化Map。 var m new Map([[1, &qu…

centos7安装字体

1.安装命令 yum install fontconfig #字体库命令 yum install mkfontscale #更新字体命令2.安装字体&#xff08;注意权限问题&#xff09; 进入目录 /usr/share/fonts &#xff0c;该目录是 centos7 字体库的默认安装目录。在该目录下创建一个文件夹 ekp &#xff08;名字…

理解我的积木编程思想

1 学习教程&#xff0c;至少7139手册2 编程实践&#xff0c;遇到实际问题后&#xff0c;在技术资料中查找关键词3 选择适合的条目找到代 码。修正&#xff0c;组合。

封装了一个简单理解的iOS竖直文字轮播

效果图 原理 就是持有两个视图&#xff0c;并且两个视图同时改变origin.y 动画结束之后&#xff0c;判断哪个视图是在上面并且看不到的&#xff0c; 则将该视图移动到底部&#xff0c;并且该视图展示下一跳内容 在开始下一轮动画 代码 - (void)startAnimationWithDuration:(…

若依项目部署(Linux2.0)

解压jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 配置Java环境变量&#xff1a; vim /etc/profile export JAVA_HOME/root/soft/jdk1.8.0_151 export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH${JAVA_HOME}/bin:$PATH 设置环境…

WordPress 高级缓存插件 W3 Total Cache Pro 详细配置教程

说起来有关 WordPress 缓存插件明月已经发表过不少文章了,但有关 W3 Total Cache Pro 这个 WordPress 高级缓存插件除了早期【网站缓存插件 W3 Total Cache,适合自己的才是最好的!】一文后就很少再提及了,最近因为明月另一个网站【玉满斋】因为某些性能上的需要准备更换缓存…

MySQL基础---库的操作和表的操作(配着自己的实操图,简单易上手)

绪论​ 勿问成功的秘诀为何&#xff0c;且尽全力做您应该做的事吧。–美华纳&#xff1b;本章是MySQL的第二章&#xff0c;本章主要写道MySQL中库和表的增删查改以及对库和表的备份处理&#xff0c;本章是基于上一章所写若没安装mysql可以查看Linux下搭建mysql软件及登录和基本…