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

【Kubernetes】 Kubernetes 了解云原生的原理

Kubernetes 了解云原生的原理

云原生是一种软件设计、实施和部署方法,旨在充分利用基于云的服务和交付模型。云原生[1]应用程序通常也使用分布式架构运行。这意味着应用程序功能被分解为多个服务,然后分布在托管环境中,而不是整合到单个服务器上。

有点令人困惑的是,云原生应用程序不一定在云中运行。可以根据云原生原则构建应用程序,并使用Kubernetes[2]等平台将其部署在本地,该平台模仿云环境的分布式、基于服务的交付模型。

尽管如此,大多数云原生应用程序都在云中运行。任何按照云原生原则设计的应用程序都可以在云中运行。

云原生是如何工作的?
云原生是一个高级概念,而不是特定类型的应用程序架构、设计或交付过程。因此,有多种方法可以创建云原生软件以及可以帮助实现这一目标的各种工具。

然而,一般来说,云原生应用程序共享某些核心功能:

它们是使用微服务[3]架构构建的。这意味着应用程序功能分布在许多微服务中,这些微服务相互交互以运行完整的应用程序。
它们广泛依赖 API 将内部组件相互集成,以及与第三方服务进行交互。
它们使用DevOps[4]等软件开发策略迭代和持续更新。
它们部署在分布式环境中,例如服务器集群,而不是单个服务器上。
您可以总结以上所有内容,即云原生应用程序本质上是使用现代工具和方法设计和构建的应用程序。在很多方面,“云原生软件开发”简直成了“现代软件开发[5]”的简写。这两个术语都有些模棱两可,但这就是重点:正如有很多方法可以使软件设计和开发操作现代化一样,也有很多方法可以接近云原生。

云原生有什么好处?
与传统的应用程序设计和开发策略相比,云原生提供了多种优势。这意味着那些以单体架构、本地部署和单节点托管环境等技术为中心的优势:

弹性和可靠性:由于云原生应用程序通常部署在分布式环境中,因此它们在面对故障和中断时更具弹性。单个服务器故障,甚至是多个服务器的故障,通常不会导致应用程序失败,因为服务可以重新部署到集群中的其他服务器。
可扩展性:云原生通过允许将应用程序分解为离散的部分来达到可扩展性。每个部分都可以单独缩放,从而可以高效、快速地缩放。例如,如果应用程序登录次数激增,则可以扩展应用程序的身份验证服务以应对这种增加,即使应用程序的其余部分继续以正常容量运行。
效率:从成本和性能的角度来看,云原生应用程序往往是高效的。这是因为他们只能从与之交互的云服务中消耗他们需要的资源。单体应用程序和单节点应用程序通常效率不高,因为它们可能会占用整个服务器,即使它们并不总是需要服务器上的所有可用资源。
更快的创新:云原生将应用程序分解为多个组件,这些组件可以使用自己的代码库单独开发。它还鼓励通过持续集成/持续交付6 等方法进行持续的迭代开发。在这两种方式中,云原生都让创建新功能和创新变得更加容易。
可移植性:使用云原生方法设计的应用程序通常可以在任何云中运行,以及在基于服务的模型(如 Kubernetes)上管理资源的任何本地托管平台。在这方面,云原生应用程序往往与云和基础设施无关,因此可以轻松地将它们从一个环境移植到另一个环境,而无需修改应用程序本身。
自动化:云原生可以在部署和管理应用程序时轻松充分利用自动化工具。例如,云原生应用程序经常使用容器进行部署,可以使用 Docker Swarm 或 Kubernetes 等工具进行编排,这些工具可以自动处理负载平衡和工作负载放置等任务。
云原生的缺点是什么?
虽然云原生是加速应用程序开发、最大化效率和提高可靠性的好方法,但它带来了一些挑战。最常见的包括:

复杂性:简单来说,云原生的开发策略和应用架构比传统应用更复杂。与使用单个代码库开发的单体应用程序相比,云原生应用程序包含更多移动部件,并且需要更复杂的开发过程。出于这个原因,采用云原生的组织必须实施工具和流程,使他们能够管理应用程序开发过程以及应用程序部署和管理过程的复杂性。
更多工具:与此类似,云原生应用程序通常依赖于更多工具,从而导致更复杂的技术堆栈。虽然单体应用程序通常可以仅使用 VM 进行部署,但云原生应用程序可以使用容器部署,这些容器在 VM 上运行并通过 Kubernetes 进行编排。此外,CI/CD 等开发技术需要团队管理大量工具(CI 服务器、IDE、源代码管理器等)。在有关云原生应用程序的所有这些方面,团队必须学习和跟踪更多的工具和技术。
API 依赖:虽然云原生应用程序以 API 为中心的设计使得按需消耗资源变得容易,但广泛依赖 API 也存在缺陷。API 可能会引入原本不存在的安全问题。此外,API 性能或可用性问题可能会影响云原生应用程序的性能,并且由于对第三方 API(如云供应商提供的 API)的可见性有限,这些问题可能难以解决。
锁定风险:虽然可以通过使用开放 API 和技术将云原生应用程序设计为与供应商无关,但情况并非总是如此。一些云原生应用程序可能需要来自特定云供应商的 API,或者依赖于特定的编排平台,从而导致供应商或平台锁定。
云原生开发示例
如今,云原生开发在各种类型和规模的组织中得到广泛使用。考虑以下云原生示例和用例:

重构遗留应用程序
拥有设计为在本地运行的遗留应用程序的企业可能会采用云原生作为对这些应用程序进行全面检查和现代化的手段。通常,这项工作需要重构,这意味着重新设计应用程序,使其可以在分布式环境中运行并充分利用基于服务的交付模型。

容器化应用
寻求利用比虚拟机更高效且性能更好的容器的组织可能会转向云原生来实现这一点。虽然您不必使用容器来实现云原生,但容器很适合基于微服务、面向服务的开发和部署技术。

云迁移
拥抱云原生是开始向云迁移的好方法,或者是对现有云投资的双重投资。从技术上讲,您的应用程序不必是云原生的就可以在云中运行;例如,您可以在基于云的 VM 上部署单体应用程序以在云中运行它。但是为了充分利用云,并在云环境中实现成本和性能之间的最佳平衡,您需要您的应用程序是云原生的。

成本优化
由于云原生架构和开发策略倾向于更有效地利用资源,因此云原生是寻求降低 IT 运营成本的企业的常见策略。虽然采用云原生并不能自动保证成本效率,但精心设计的云原生应用程序的运行和更新成本将低于传统应用程序。

可靠性增强
如上所述,云原生应用程序往往更可靠,因为即使主机基础设施的一部分发生故障,它们仍然可用。出于这个原因,寻求使他们的应用程序更可靠,进而改善最终用户体验的组织应该考虑云原生。

概括
通过允许组织充分利用分布式、基于服务的应用程序托管环境,云原生可以为企业、开发人员和用户等带来更好的结果。并非每个应用程序都需要是云原生的,但总的来说,云原生是构建新应用程序或大修旧应用程序时要走的路。

参考资料
[1]
云原生: https://www.itprotoday.com/hybrid-cloud/how-and-when-use-cloud-native-technology

[2]
Kubernetes: https://www.itprotoday.com/hybrid-cloud/4-reasons-why-kubernetes-so-popular

[3]
微服务: https://www.itprotoday.com/microservices/what-are-microservices

[4]
DevOps: https://www.itprotoday.com/devops/what-devops

[5]
现代软件开发: https://www.geeksforgeeks.org/modern-principles-of-software-development/

相关文章:

【Kubernetes】 Kubernetes 了解云原生的原理

Kubernetes 了解云原生的原理 云原生是一种软件设计、实施和部署方法,旨在充分利用基于云的服务和交付模型。云原生[1]应用程序通常也使用分布式架构运行。这意味着应用程序功能被分解为多个服务,然后分布在托管环境中,而不是整合到单个服务…...

什么是jquery

jquery是一个javascript库&#xff1b;用来简化javascript编程&#xff1b;基本是前端必备&#xff1b; 看一下示例&#xff1b; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <script src"https://cdn.staticfile.org/j…...

竞赛选题 深度学习动物识别 - 卷积神经网络 机器视觉 图像识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…...

新华三路由器+华为交换机,实现华为交换机指定端口访问外网

需求背景&#xff1a; 多台服务器使用华为交换机组建了局域网&#xff0c;需要让交换机的指定端口可以访问外网。 需求分析&#xff1a; 交换机组建的局域网是二层组网&#xff0c;需借助路由器接入外网&#xff0c;然后通过DHCP分配内网IP地址给交换机指定端口连接的设备。 …...

Java面试(JVM篇)——JVM 面试题合集 深入理解JVM虚拟机

关于什么是JVM&#xff1f; 作用&#xff1a; 运⾏并管理Java 源码⽂件所⽣成的Class⽂件&#xff0c;在不同的操作系统上安装不同的JVM &#xff0c;从⽽实现了跨平台的保证。 ⼀般情况下&#xff0c;对于开发者⽽⾔&#xff0c;即使不熟悉JVM 的运⾏机制并不影响业务代码的…...

NPDP产品经理证书是什么行业的证书?

NPDP是一个跨行业的证书&#xff0c;它适用于各种不同类型和规模的组织。无论是制造业、服务业还是科技领域&#xff0c;都可以从NPDP认证中获益。 1. 制造业&#xff1a; 制造业涉及大量的产品开发和创新活动。从汽车制造到电子设备制造&#xff0c;从家居用品到航天航空&…...

37 深度学习(一):查看自己显卡的指令|张量|验证集|分类问题|回归问题

文章目录 查看自己显卡的指令框架选什么张量的阶数验证集存在的意义分类问题一般的全连接的代码格式&#xff08;板子&#xff09;上面训练的详解一些省略梯度消失和梯度爆炸Dropout 回归问题一般回归的全连接的板子 batch-size超参数搜索策略 此系列的深度学习主要是理论性的介…...

用C语言解决三个整数比大小,x,y,z三个整数求最小整数,从键盘上输入3个不同的整数×,y,Z,请设计一个算法找出其中最小的数,并画出流程图。

用C语言解决三个整数比大小,x,y,z三个整数求最小整数&#xff0c;从键盘上输入3个不同的整数&#xff0c;y,Z,请设计一个算法找出其中最小的数&#xff0c;并画出流程图。 以下是一个用C语言解决三个整数比大小的示例代码&#xff1a; #include <stdio.h>int main() {i…...

操作系统进程调度算法的模拟实现(c语言版本)

前言&#xff1a;本文旨在分享如何使用c语言对操作系统中的部分进程调度算法进行模拟实现&#xff0c;以及算法描述的讲解&#xff0c;完整代码放在文章末尾&#xff0c;欢迎大家自行拷贝调用 目录 常见的调度算法 数据结构 先来先服务调度算法 算法模拟思路&#xff1a; …...

webbench压测工具

介绍 webbench是Linux下的一个网站压力测试工具&#xff0c;最多可以模拟3万个并发连接去测试网站的负载能力。 https://soft.lnmp.com/test/webbench/ 安装非常简单 tar zxvf webbench-1.5.tar.gz cd webbench-1.5 make && make install会在当前目录生成webbench可执…...

HarmonyOS 音频开发指导:使用 OpenSL ES 开发音频播放功能

OpenSL ES 全称为 Open Sound Library for Embedded Systems&#xff0c;是一个嵌入式、跨平台、免费的音频处理库。为嵌入式移动多媒体设备上的应用开发者提供标准化、高性能、低延迟的 API。HarmonyOS 的 Native API 基于Khronos Group开发的OpenSL ES 1.0.1 API 规范实现&am…...

docker搭建个人镜像仓库

docker搭建个人镜像仓库 安装registry mkdir docker-registry cd docker-registry mkdir registry mkdr auth vim docker-compose.ymldocker-compose.yml的内容如下&#xff1a; version: 3 services:registry:image: registrycontainer_name: registryvolumes:- ./registry…...

Python机器学习17——Xgboost和Lightgbm结合分位数回归(机器学习与传统统计学结合)

最近XGboost支持分位数回归了&#xff0c;我看了一下&#xff0c;就做了个小的代码案例。毕竟学术市场上做这种新颖的机器学习和传统统计学结合的方法还是不多&#xff0c;算的上创新&#xff0c;找个好数据集可以发论文。 代码实现 导入包 import numpy as np import pandas…...

C#编程学习

1. **C#简介**&#xff1a; - C#是一种现代的、面向对象的编程语言&#xff0c;由Microsoft开发。 - 它是.NET框架的一部分&#xff0c;用于开发Windows应用程序、Web应用程序和服务等。 2. **开发环境**&#xff1a; - 你可以使用Visual Studio或Visual Studio Code…...

关于vue 父级不使用子级某模块 (插槽替换)

父级: <template><div><MoreSupplements code"Xmgk" message"补充内容越多,越精准"><template #r-btn>xxx</template></MoreSupplements></div> </template> <script> import MoreSupplements fr…...

睿趣科技:抖音小店在哪里选品

随着抖音平台的日益火爆&#xff0c;越来越多的商家选择在抖音小店开设自己的店铺。然而&#xff0c;对于许多新手来说&#xff0c;如何选品却成为了一个难题。那么&#xff0c;抖音小店应该在哪里选品呢? 首先&#xff0c;我们可以从抖音平台上的热门商品入手。通过观察抖音上…...

量变引起质变:安卓改多了,就是自己的OS

最近小米也发布了自己的OS&#xff0c;其他也有厂家跟进。这是自华为鸿蒙之后&#xff0c;大家都说自己开发OS。对此&#xff0c;也是有很多争论的。 有人说&#xff0c;这些东西不都是安卓套壳或者改名吗&#xff1f;怎么就变成了自己的OS&#xff1f;这种观点对不对呢&#x…...

IDEA 之 在不更改操作系统用户名的情况下更改 ${USER} 变量?

如何在不更改操作系统用户名的情况下更改 IntelliJ IDEA 中的 ${USER} 变量 IDEA -> Help -> Edit Custom VM 添加如下内容 -Duser.nameusername这样在文件或者函数注释的时候会读取这个配置&#xff0c;而不会读取电脑登录用户名...

基于JAVA的天猫商场系统设计与实现,springboot+jsp,MySQL数据库,前台用户+后台管理,完美运行,有一万五千字论文

目录 演示视频 基本介绍 论文目录 系统截图 演示视频 基本介绍 基于JAVA的天猫商场系统设计与实现&#xff0c;springbootjsp&#xff0c;MySQL数据库&#xff0c;前台用户后台管理&#xff0c;完美运行&#xff0c;有一万五千字论文。 本系统在HTML和CSS的基础上&#xf…...

Redis学习

缓存定义 缓存是一个告诉数据交换的存储器&#xff0c;使用它可以快速的访问和操作数据。 常见缓存使用 本地缓存的常见使用&#xff1a;Spring Cache、MyBatis的缓存等 我的session存储和redis都放到缓存里面的&#xff0c;所有程序不管部署多少份&#xff0c;访问的都是r…...

uni-app:实现picker下拉列表的默认值设置

效果 分析 1、在data中将index8的初始值设置为-1&#xff0c;表示未选择任何选项&#xff1a; index8: -1, //选择的下拉列表下标 2、在bindPickerChange8事件处理函数中添加条件判断。如果选择的值是-1&#xff0c;则将this.index8设置为"请输入"&#xff0c;否则将…...

基于NB-iot技术实现财物跟踪的EA01-SG定位模块方案

NB-iot无线数传模块可做财物防盗窃器&#xff0c;让你的财物可定位跟踪&#xff01; 随着社会的发展&#xff0c;公共资源及共享资源的蓬勃发展&#xff0c;对资产管理和资产追踪有了新的需求&#xff0c;如&#xff1a;某儿童玩具车在商场外面提供车辆乘坐游玩服务&#xff0…...

挑战吧,HarmonyOS应用开发工程师

一年一度属于工程师的专属节日1024&#xff0c;多重活动亮相啦~ 参与活动即有机会获得HUAWEI Freebuds 5i 耳机等精美礼品&#xff01; 点击“阅读原文”查看更多活动详情&#xff01;...

图论05-【无权无向】-图的广度优先BFS遍历-路径问题/检测环/二分图/最短路径问题

文章目录 1. 代码仓库2. 单源路径2.1 思路2.2 主要代码 3. 所有点对路径3.1 思路3.2 主要代码 4. 联通分量5. 环检测5.1 思路5.2 主要代码 6. 二分图检测6.1 思路6.2 主要代码6.2.1 遍历每个联通分量6.2.2 判断相邻两点的颜色是否一致 7. 最短路径问题7.1 思路7.2 代码 1. 代码…...

uniapp:谷歌地图,实现地图展示,搜索功能,H5导航

页面展示 APP H5 谷歌地图功能记录,谷歌key申请相对复杂一些,主要需要一些国外的身份信息。 1、申请谷歌key 以下是申请谷歌地图 API 密钥的流程教程: 登录谷歌开发者控制台:打开浏览器,访问 Google Cloud Platform Console。 1、创建或选择项目:如果你还没有创建项目…...

关于腾讯云轻量应用服务器性能测评,看这一篇文章就够了

腾讯云轻量应用服务器性能如何&#xff1f;为什么便宜是不是性能不行&#xff1f;腾讯云百科txybk.com从轻量应用服务器的CPU型号、处理器主频、内存、公网带宽、月流量和系统盘多方面来详细测评轻量性能&#xff0c;轻量应用服务器性价比高&#xff0c;并不是性能不行&#xf…...

HDFS集群NameNode高可用改造

文章目录 背景高可用改造方案实施环境准备配置文件修改应用配置集群状态验证高可用验证 背景 假定目前有3台zookeeper服务器&#xff0c;分别为zk-01/02/03&#xff0c;DataNode服务器若干&#xff1b; 目前HDFS集群的Namenode没有高可用配置&#xff0c;Namenode和Secondary…...

Spark集群中一个Worker启动失败的排错记录

文章目录 1 检查失败节点worker启动日志2 检查正常节点worker启动日志3 查看正常节点spark环境配置4 又出现新的ERROR4.1 报错解释4.2 报错解决思路4.3 端口报错解决操作 集群下电停机后再次启动时&#xff0c;发现其中一台节点的worker启动失败。 1 检查失败节点worker启动日…...

Mysql的JDBC知识点

什么是JDBC JDBC(Java DataBase Connectivity) 称为Java数据库连接&#xff0c;它是一种用于数据库访问的应用程序API&#xff0c;由一组用Java语言编写的类和接口组成&#xff0c;有了JDBC就可以用统一的语法对多种关系数据库进行访问&#xff0c;而不用担心其数据库操作语…...

git的实际操作

文章目录 删除GitHub上的某个文件夹克隆仓库到另一个仓库 删除GitHub上的某个文件夹 克隆仓库到另一个仓库 从原地址克隆一份裸板仓库 –bare创建的克隆版本库都不包含工作区&#xff0c;直接就是版本库的内容&#xff0c;这样的版本库称为裸版本库 git clone --bare ****(原…...