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

【K8S】为什么需要Kubernetes?

K8s


文章目录

  • 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作为容器管理平台,有以下好处:

  1. 自我修复: 如果Pod崩溃或被删除,K8s将自动重启该Pod并从相同的镜像获取新的容器。如果一个Node节点失效,K8s将重新调度该Node上的Pod到其他可用的Node节点上。并且,K8s能够自动修复一些基础组件的问题,如Kubelet无法提供正确的容器网络配置等。
  2. 弹性伸缩: K8s根据应用负载的变化自动调整应用的资源分配,保证应用的稳定性和高可用性(比如,通过增加或减少Pod的副本数量)。
  3. 自动部署与回滚: K8s支持自动化部署,通过声明式配置(如YAML文件)来定义应用的期望状态,K8s将自动将实际状态调整到期望状态。当部署出现问题时,K8s支持将应用回滚到之前的稳定版本。
  4. 服务发现与负载均衡: K8s通过Service资源为Pod提供固定的访问入口(IP和端口),并通过DNS或环境变量等方式实现服务发现。K8s内置的kube-proxy组件能够实现简单的负载均衡,将访问Service的流量分发到后端的Pod上。
  5. 机密和配置管理: K8s提供了丰富的配置管理机制,如Secrets和ConfigMaps的更新、滚动更新等,以确保应用的安全性和可配置性。其中,Secrets用于存储敏感数据,如API密钥、密码等,以Base64编码存储在K8s中。ConfigMaps用于存储非敏感的配置数据,如应用配置、环境变量等。
  6. 存储编排: K8s支持多种类型的存储卷,包括临时卷、本地卷和网络卷等,用于为Pod提供持久化存储。
  7. 批处理: K8s提供了Job和CronJob资源来支持批处理任务。Job用于执行一次性任务,而CronJob则用于按照预定时间执行周期性任务。

写在最后

本文已被专栏 Kubernetes 收录,欢迎 点击订阅专栏
 以上便是本文的全部内容啦!创作不易,如果你有任何问题,欢迎私信,感谢您的支持!

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Wireshark 抓 CAN 总线】Wireshark 抓取 CAN 总线数据的实现思路
  • STM32 | ADC+RS485编写代码,实现光敏电阻控制灯的亮度
  • C语言 | Leetcode C语言题解之第319题灯泡开关
  • CSS面试题
  • 学习笔记一
  • JVM—HotSpot虚拟机对象探秘
  • 2024年第五届华数杯全国大学生数学建模竞赛【ABC题】完整思路
  • Python从入门到精通(第十章——1 类和对象)
  • 基于JSP、java、Tomcat三者的项目实战--校园交易网(3)主页--添加商品功能
  • 【C++】数组案例 五只小猪称体重
  • C#中DataTable新增列、删除列、更改列名、交换列位置
  • 代码随想录算法训练营第37天|完全背包理论基础、518.零钱兑换II、377. 组合总和 Ⅳ、70. 爬楼梯(进阶版)
  • 【深度学习】深度学习基本概念、工作原理及实际应用案例
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • 微信小程序之behaviors
  • 2017届校招提前批面试回顾
  • CEF与代理
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • C学习-枚举(九)
  • DOM的那些事
  • ES学习笔记(12)--Symbol
  • Java 最常见的 200+ 面试题:面试必备
  • Service Worker
  • Spring核心 Bean的高级装配
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 关于springcloud Gateway中的限流
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 一份游戏开发学习路线
  • 移动端 h5开发相关内容总结(三)
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • $NOIp2018$劝退记
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (2.2w字)前端单元测试之Jest详解篇
  • (52)只出现一次的数字III
  • (9)目标检测_SSD的原理
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (搬运以学习)flask 上下文的实现
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二)斐波那契Fabonacci函数
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (分享)自己整理的一些简单awk实用语句
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (十二)Flink Table API
  • (算法设计与分析)第一章算法概述-习题
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (转) ns2/nam与nam实现相关的文件
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)Mysql的优化设置
  • (转)shell中括号的特殊用法 linux if多条件判断