【Kubernetes】(一)k8s基础

目录

[一、Kubernetes 是什么?](#一、Kubernetes 是什么?)

[二、Kubernetes 不是什么?](#二、Kubernetes 不是什么?)

[三、从部署演进看 Kubernetes 的价值](#三、从部署演进看 Kubernetes 的价值)

[1. 传统部署时代](#1. 传统部署时代)

[2. 虚拟化部署时代](#2. 虚拟化部署时代)

[3. 容器部署时代](#3. 容器部署时代)

[四、为什么我们需要 Kubernetes?](#四、为什么我们需要 Kubernetes?)


一、Kubernetes 是什么?

Kubernetes 这个名字源于希腊语,意为 "舵手" 或 "飞行员",它由 Google 在 2014 年开源,是建立在 Google 十余年大规模生产负载经验之上的容器编排引擎。

简单来说,Kubernetes 是一个用于弹性运行分布式系统的框架。在生产环境中,我们需要管理成百上千个应用容器,并确保服务永不离线。如果某个容器崩溃,系统能自动启动另一个容器来替代它,这些操作如果由人工处理,无疑是低效且容易出错的。Kubernetes 的核心使命,就是让这一切自动化。

它提供的核心能力包括:

服务发现与负载均衡:使用 DNS 或 IP 暴露服务,并自动分配流量,使部署更稳定。

存储编排:自动挂载本地存储、云存储等多种存储系统。

自动部署与回滚:以受控速率更新或回滚容器,确保业务连续性。

自动装箱:根据 CPU 和内存需求,智能调度容器到最合适的节点。

自我修复:重启失败容器,替换无响应容器,在就绪前不对外提供服务。

密钥与配置管理:安全存储和管理密码、令牌等敏感信息,无需重建镜像。

批处理执行:管理批处理和 CI/CD 工作负载,替换失败的任务容器。

水平扩缩:通过简单命令或根据 CPU 使用率自动扩缩容。

IPv4/IPv6 双栈:为 Pod 和 Service 同时分配 IPv4 和 IPv6 地址。

可扩展性设计:在不修改上游代码的前提下,为集群添加自定义功能。


二、Kubernetes 不是什么?

理解 Kubernetes,更重要的是理解它不是什么,这能帮我们避免很多认知误区:

不是 PaaS:它不限制应用类型,不提供内置的中间件、数据库或存储服务,所有这些都可以在其上运行,但由用户选择。

不构建应用:它不负责源码编译和应用构建,CI/CD 流程由企业自主决定。

不规定解决方案:它不强制日志、监控或告警方案,只提供了集成示例和指导。

不是配置语言:它提供了一个声明式 API,可以被任何形式的规范所驱动。

不是自洽系统:它不提供全面的机器配置、维护或自愈能力,需要与其他工具配合。


三、从部署演进看 Kubernetes 的价值

要理解 Kubernetes 的价值,我们需要回顾一下应用部署的演进史:

1. 传统部署时代

在早期,应用直接运行在物理服务器上。这导致了资源隔离的难题:一个应用可能占用大部分资源,导致其他应用性能下降。为了解决这个问题,我们不得不将应用部署在不同的物理服务器上,这又造成了资源利用率低下和维护成本高昂的问题。

2. 虚拟化部署时代

虚拟化技术的出现,让我们可以在一台物理服务器上运行多个虚拟机(VM)。每个 VM 都是一个完整的计算机,拥有自己的操作系统,应用之间被隔离开来。这极大地提高了资源利用率和可扩展性,但 VM 依然是重量级的,启动和迁移都比较缓慢。

3. 容器部署时代

容器技术(如 Docker)则更进一步。它与 VM 类似,提供了文件系统、CPU、内存和进程空间的隔离,但它共享宿主机的操作系统内核,因此更加轻量级。

容器带来了诸多优势:

敏捷部署:镜像创建和部署速度远超 VM。

环境一致:在笔记本、数据中心和云端运行的应用完全一致。

可移植性强:可以跨云、跨操作系统发行版自由迁移。

微服务友好:应用被拆分为独立的微服务,便于弹性扩展和管理。


四、为什么我们需要 Kubernetes?

容器解决了 "如何打包和运行应用" 的问题,但当我们有成百上千个容器时,如何管理它们?如何确保它们高可用?如何让它们高效协作?

这正是 Kubernetes 要解决的问题。它不再是一个简单的 "编排工具",而是一个由独立且可组合的控制流构成的系统。它持续地将当前状态驱动到我们设定的期望状态,而不需要人工干预或集中式控制。

从传统部署到虚拟化,再到容器化,最后到 Kubernetes,我们追求的始终是更高效、更可靠、更灵活的应用交付方式。Kubernetes 正是这个时代的最佳实践,它让我们从繁琐的运维工作中解放出来,真正聚焦于应用本身。

相关推荐
孔令飞1 小时前
很多人想学AI Infra,今天推荐一个 AI Agent / AI Infra 学习路线
云原生·go·ai编程
Z21-X2 小时前
云原生运维实战笔记:华为云存储类服务全景解析——EVS、OBS、SFS与CBR深度实践
运维·笔记·学习·云原生·华为云
分布式存储与RustFS2 小时前
K8s 集群备份落到自建对象存储:Velero 接 RustFS 配置指南
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
螺蛳粉 螺蛳粉13 小时前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
知已难寻14 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
n1121217 小时前
Ollama 接 Open WebUI 中文界面:我踩的 4 个坑
云原生·eureka·ollama·本地大模型·open webui·私有部署·中文界面
阿里云云原生17 小时前
用户说 App“下不了单”:用 Session Replay 看清流程卡在哪一步
云原生
阿里云云原生17 小时前
运维走出控制台:阿里云 AgentCore AI Native 运维实践
云原生
SelectDB技术团队1 天前
Apache Doris 异步物化视图与 Snowflake MV / Dynamic Tables 工程化对照
云原生·私有化部署·olap·实时数仓·apache doris·国产化替代·异步物化视图
分布式存储与RustFS1 天前
可观测性数据落进对象存储:Proscia 案例拆解与 ClickHouse 自托管配置
运维·云原生·开源·对象存储·分布式存储·s3·性能基准