【K8S】为什么需要Kubernetes?


文章目录

  • [1 什么是Kubernetes?](#1 什么是Kubernetes?)
  • [2 三种常见的应用部署方式](#2 三种常见的应用部署方式)
    • [2.1 传统部署](#2.1 传统部署)
    • [2.2 虚拟化部署](#2.2 虚拟化部署)
    • [2.3 容器化部署](#2.3 容器化部署)
  • [3 Kubernetes的特点](#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 收录,欢迎 点击订阅专栏

以上便是本文的全部内容啦!创作不易,如果你有任何问题,欢迎私信,感谢您的支持!

相关推荐
大江东去了吗3 小时前
k8s HPA
云原生·容器·kubernetes
花菜回锅肉4 小时前
开源可视化大屏superset Docker环境部署
数据仓库·docker·容器·开源·superset
wd5205214 小时前
常用环境部署(十七)——Docker安装pritunl+openvpn
运维·docker·容器
Watermelo6175 小时前
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
java·spring boot·docker·微服务·云原生·容器·devops
Richardlygo6 小时前
编写Dockerfile第二版
docker·容器
码农阿豪6 小时前
OpenObserve云原生可观测平台本地Docker部署与远程访问实战教程
docker·云原生·容器
是芽芽哩!6 小时前
【Kubernetes】常见面试题汇总(五)
云原生·容器·kubernetes
何遇mirror6 小时前
深入解析 Docker exec 命令
容器
芦苇浮绿水8 小时前
记一次升级 Viper、ETCD V3操作Toml
数据库·kubernetes·go·etcd
golove66610 小时前
Docker进入容器运行命令
docker·容器