【K8S】为什么需要Kubernetes?

文章目录
- 1 什么是Kubernetes?
- 2 三种常见的应用部署方式
- 2.1 传统部署
- 2.2 虚拟化部署
- 2.3 容器化部署
- 3 Kubernetes的特点
- 写在最后
1 什么是Kubernetes?
Kubernetes是 一个开源的,用于管理云平台中多个主机上的容器化应用,Kubernetes提供了应用部署,规划,更新,维护的一种机制,其目标是为了让部署容器化的应用简单、高效~

那么,为啥需要Kubernetes呢?这还需要从应用的部署方式说起~
2 三种常见的应用部署方式
2.1 传统部署

传统部署方式指将应用程序直接安装在物理服务器上,部署过程相对简单,直接将应用程序文件放置在服务器上并运行即可。但这个过程每一步都依赖于人工,并且难以精确地为应用程序定义资源使用边界,资源分配不够灵活,即多个运行在服务器的服务都共用一套资源,一方面存在类似并发的问题,另一方面,用户访问依赖网络带宽,存在服务资源抢占和分配不均的问题。
2.2 虚拟化部署

虚拟化部署是在物理机上运行多个虚拟机(VM),每个虚拟机都模拟一个完整的计算环境,包括操作系统、应用程序和存储资源。一定程度上解决了应用程序资源边界问题,提供了更好的资源隔离和灵活性,但管理多个虚拟机也增加了复杂性和成本。要知道创建和销毁一个虚拟机,开销还是比较大滴~
那么有没有一种轻量化的解决方案呢?—— 容器化部署
2.3 容器化部署

容器部署是一种轻量级的虚拟化技术,旨在将应用程序及其依赖项打包在一个可移植的容器中,可以在任何支持容器运行的平台上运行。容器化部署具有以下优点:
- 快速部署:极大地缩短应用程序的部署时间,实现快速迭代和更新。
- 环境一致性:容器提供了标准化的运行环境,保证了应用程序在不同环境中的一致性和可靠性。
- 资源隔离: 虽然容器共享宿主机的操作系统内核,但通过容器技术实现了进程级别的隔离,保证了应用程序的安全性和稳定性。
- 可扩展性:容器化部署可以方便地实现应用程序的横向扩展,通过增加容器实例来应对高并发访问。
3 Kubernetes的特点
通过以上内容,我们了解到容器化部署的好处,那这和为啥需要Kubernetes有啥关系呢?答案很简单,好用!!!
Kubernetes作为容器管理平台,有以下好处:
- 自我修复: 如果Pod崩溃或被删除,K8s将自动重启该Pod并从相同的镜像获取新的容器。如果一个Node节点失效,K8s将重新调度该Node上的Pod到其他可用的Node节点上。并且,K8s能够自动修复一些基础组件的问题,如Kubelet无法提供正确的容器网络配置等。
- 弹性伸缩: K8s根据应用负载的变化自动调整应用的资源分配,保证应用的稳定性和高可用性(比如,通过增加或减少Pod的副本数量)。
- 自动部署与回滚: K8s支持自动化部署,通过声明式配置(如YAML文件)来定义应用的期望状态,K8s将自动将实际状态调整到期望状态。当部署出现问题时,K8s支持将应用回滚到之前的稳定版本。
- 服务发现与负载均衡: K8s通过Service资源为Pod提供固定的访问入口(IP和端口),并通过DNS或环境变量等方式实现服务发现。K8s内置的kube-proxy组件能够实现简单的负载均衡,将访问Service的流量分发到后端的Pod上。
- 机密和配置管理: K8s提供了丰富的配置管理机制,如Secrets和ConfigMaps的更新、滚动更新等,以确保应用的安全性和可配置性。其中,Secrets用于存储敏感数据,如API密钥、密码等,以Base64编码存储在K8s中。ConfigMaps用于存储非敏感的配置数据,如应用配置、环境变量等。
- 存储编排: K8s支持多种类型的存储卷,包括临时卷、本地卷和网络卷等,用于为Pod提供持久化存储。
- 批处理: K8s提供了Job和CronJob资源来支持批处理任务。Job用于执行一次性任务,而CronJob则用于按照预定时间执行周期性任务。
写在最后
本文已被专栏 Kubernetes 收录,欢迎 点击订阅专栏
以上便是本文的全部内容啦!创作不易,如果你有任何问题,欢迎私信,感谢您的支持!

相关文章:
【K8S】为什么需要Kubernetes?
文章目录 1 什么是Kubernetes?2 三种常见的应用部署方式2.1 传统部署2.2 虚拟化部署2.3 容器化部署 3 Kubernetes的特点写在最后 1 什么是Kubernetes? Kubernetes是 一个开源的,用于管理云平台中多个主机上的容器化应用,Kubernet…...
【Linux】Linux中查找字符串中的命令
在Linux中,查找字符串的命令通常使用grep。grep是一个强大的工具,用于在文件中搜索指定模式的字符串。以下是一些基本用法: 1.在文件中查找字符串 grep "字符串" 文件名例如,查找文件example.txt中包含“hello”的行&…...
最新HTML设计搜索表单
设计搜索表单 页眉中包含表单,表单中只需包含label和Input. 实现如下效果:文本框动态变宽效果 代码:6.2.4.设计搜索表单.html <!DOCTYPE html> <html><head><meta charset"utf-8"><title></t…...
JavaScript constructor原型原型继承
constructor 在 JavaScript 中,构造函数是一种特殊的函数,使用 new 关键字来调用,用于创建对象实例。JavaScript 中的构造函数通常通过 function 关键字定义。 例如: function Person(name, age) {this.name name;this.age a…...
使用Python+moviepy保存截取视频画面
一、 使用VideoFileClip对象的的save_frame函数保存截取的第1帧画面 from moviepy.editor import * mvVideoFileClip(/home/Download/leaves.mp4) mv.save_frame(/home/Download/fst.jpg) # 默认保存截取的第1帧画面 二、 使用VideoFileClip对象的的save_frame函数保存截…...
【DOCKER】显示带UI的软件
1. Linux 1.1 宿主机开放X server权限 xhost 1.2 启动容器 docker run -it --rm --privilegedtrue --useru20 --workdir/home/u20 \ -e DISPLAYhost.docker.internal:0 u20:dev1.3 测试 # 安装测试软件 sudo apt-get -y install x11-apps# 显示测试程序 xclock2. Windows …...
Atcoder Beginner Contest 366
传送门 A - Election 2 时间限制:2秒 内存限制:1024MB 分数:100分 问题描述 在 AtCoder 市举行市长选举。候选人是 Takahashi 和 Aoki。 目前有 N 张有效选票投给了这两个候选人,并且计票正在进行中。这里࿰…...
【hexo博客问题】
windows下使用gitbash即可使用 其他bash会产生权限问题 npm install失败 $ npm install npm error code ENOENT npm error syscall open npm error path F:\pf_project\blog_pf\package.json npm error errno -4058 npm error enoent Could not read package.json: Error: E…...
用数组模拟栈和队列
栈 先进后出 //stk 表示定义的栈 //tt表示栈顶的下标 int stk[N], tt 0;//在栈顶上加入一个新的元素 stk[ tt] x;//弹出 tt --;//判断栈是否为空 if (tt > 0) 不为空 else empty//取出栈顶 stk[tt];1.题目 给定一个长度为 N 的整数数列,输出每个数左边第一个…...
Django内置后端和自定义后端
【图书介绍】《Django 5企业级Web应用开发实战(视频教学版)》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战(视频教学版)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 5.2.3 内置…...
嵌入式人工智能(OpenCV-基于树莓派的人脸识别与入侵检测)
1、人脸识别 人脸识别是一种技术,通过检测、跟踪和识别人脸上的关键特征,以确认人脸的身份。它通常用于安保系统、身份验证、社交媒体和人机交互等领域。 人脸识别技术的基本原理是先通过图像处理和计算机视觉算法,提取人脸的特征点和特征描…...
如何选择适合的香港云服务器提供商?
稳定性和可靠性 确保提供商有高水平的服务器正常运行时间,并提供可靠的数据备份和恢复选项。 网络速度和延迟 选择能够提供快速和低延迟网络连接的服务商,尤其是对于目标用户位于中国大陆的企业而言。 客户支持 查看提供商是否提供24/7的客户支持&#x…...
安卓Android JAVA校招/实习面试合集:多线程、强软弱虚引用、进程、内存管理、Activity、Fragment......
本人今年(2023年)参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。 整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来&a…...
Jeecgboot 字典值自动转化:DictAspect类方法改造,支持IPage、List、Object、Map类自动转化,附有源码
改造的是DictAspect类: 原来使用的 parseDictText(Object result)方法,针对返回对象为Result 的IPage的分页列表数据进行动态字典注入,当单个对象查询,列表查询,或者多个数据放到Map中时,就不会自动转化&am…...
DVWA DOM Based Cross Site Scripting (DOM型 XSS)
DVWA DOM Based Cross Site Scripting (DOM型 XSS) 文章目录 DVWA DOM Based Cross Site Scripting (DOM型 XSS)XSS跨站原理DOM型 LowMediumHighImpossible XSS跨站原理 当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就…...
LinkedList集合及迭代器的源码分析
一.介绍: 二.LinkedList集合特有的API: 三.迭代器的源码分析: package com.itheima.a03myarraylist;import java.util.ArrayList; import java.util.Iterator;public class A01_ArrayListDemo1 {public static void main(String[] args) {ArrayList<String> listnew Arr…...
Go调度器
线程数过多,意味着操作系统会不断地切换线程,频繁的上下文切换就成了性能瓶颈.Go提供一种机制 可以在线程中自己实现调度,上下文切换更轻量,从而达到线程数少,而并发数并不少的效果,而线程中调度的就是Goroutine 调度器主要概念: 1.G:即Go协程,每个go关键字都会创建一个协程…...
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
1.问题 当node节点当node节点kubectl 命令无法连接到 Kubernetes API 服务器 [rootnode1 ~]# kubectl get nodes The connection to the server localhost:8080 was refused - did you specify the right host or port?2. 确认 kubeconfig 文件 确保节点上有有效的 kubeco…...
直接通过类CURL方式,与GRPC方法交互的命令行工具
大家好,今天给大家分享的是一个命令行工具grpcurl,它能够直接与 gRPC 服务进行交互。 项目介绍 您可以把grpcurl想象成是 curl 的 gRPC 版本,但是功能更加强大。 由于 gRPC 服务之间的通信使用的是 Protocol Buffers (Protobuf) 格式的二进…...
Hive3:数据的加载与导出
一、加载数据 在创建表之后,表中没有数据,我们不可能insert存入数据。 而是,通过数据加载,将HDFS中的数据关联到Hive表中。 建表 CREATE TABLE myhive.test_load(dt string comment 时间(时分秒), user_…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...
yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...
【iOS】 Block再学习
iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...
