在 云计算与DevOps领域,“k8”已成为了一个绕不开的顶级关键词。对于绝大多数运维工程师、后端开发者以及想要进入云原生赛道的IT从业者来说,理解k8到底是什么,是掌握现代软件交付能力的基石。
k8到底是什么意思?
我们需要明确“k8”这个词的来源。它并非一个独立的软件缩写,而是 Kubernetes(开源容器编排系统) 的俗称。
为什么去掉中间的“ubern”仅保留首尾并加上“8”呢?这是因为从拼写的第一个字母“K”到倒数第二个字母“s”,中间省略了正好8个字母。这种“数字替代法”在IT技术圈非常流行,例如Go语言的VIPER缩写中用“i”代替了“s”。这种缩写方式不仅简洁易记,而且成为了该领域的一种行话术语。
k8的核心定义
Kubernetes,通常被称为K8s,是一个用于自动化部署、扩缩和管理容器化应用程序的开源系统。它起源于Google内部使用已久的Borg系统,于2014年开源并于2015年发布。本质上,Kubernetes致力于解决容器管理的问题。如果说Docker解决了如何将应用程序打包并运行起来的问题,那么k8s解决的就是如何让成百上千个这样的容器高效地协同工作、自我管理和自动恢复的问题。
k8解决的核心痛点
在k8s出现之前,管理微服务架构通常是一场噩梦。k8s通过以下几个核心技术功能解决了这些难题:
容器编排与管理:
k8s可以将应用程序拆分为多个微服务,并分别打包成容器。它能够决定这些容器在哪个节点(如物理机、虚拟机)上运行,确保服务的高可用性。当某个节点发生故障时,k8s会自动在其他节点上启动新的容器来接管服务。
自我修复:
这是k8s的一大亮点。如果运行的容器崩溃了,k8s会自动重启它;如果容器健康检查失败,k8s会将其终止并重新部署;如果节点(服务器)挂了,k8s会将该节点上的所有容器调度到其他健康节点上。这种机制大大降低了运维的人力成本。
负载均衡与服务发现:
微服务架构下,服务之间需要频繁调用。k8s内置的Service组件提供了稳定的网络入口。无论后端的服务实例如何增减(例如因为自动扩容增加了3个),Service都能保证外部请求自动分配到所有健康的实例上,而不需要人工干预配置Nginx。
存储编排:
k8s允许你声明容器的存储需求(例如挂载哪个磁盘卷、挂载到哪个路径),并它会自动在底层基础设施(如云硬盘、本地存储)上配置存储,使得应用可以像使用本地存储一样使用远程存储。

自动扩缩容:
这是一个可以根据CPU利用率或自定义指标自动动态增加或减少副本数量的功能。当应用流量高峰来临前,k8s可以自动增加Pod的数量;在流量低谷时则自动缩减,以节省资源成本。
k8的架构体系
为了理解k8是如何工作的,我们需要了解其核心架构,主要包括控制平面和工作节点两大部分:
控制平面:它是k8s的大脑。其中包含:
API Server:系统的入口,所有指令都必须经过它。
etcd:键值数据库,存储集群的所有配置和数据。
Scheduler:负责决定新创建的Pod应该调度到哪个节点上运行。
Controller Manager:负责维持集群状态,确保当某个Pod挂了时它能被重新创建。
工作节点:它是让应用真正跑起来的地方。每个节点都运行着必需的代理程序(称为 Kubelet),用于接收并执行来自Master的指令,同时每个节点还具有Node Agent和Container Runtime(如Docker、Containerd),负责运行容器。
为什么它是云原生的核心?
k8s并不局限于Docker,实际上它是如今云原生生态的基石(Container Orchestration)。几乎所有现代的云存储、消息队列、数据库以及大数据框架,都已经有了适配Kubernetes的官方发行版。
对于运维人员而言,掌握k8意味着告别了繁琐的手工脚本运维,迈向了基础设施即代码和自动化运维的新时代。它是连接传统运维与现代DevOps实践的桥梁,是每一位IT专业人士进阶的必修课。
感兴趣的伙伴可以在下方添加一下,也是为了大家有个属于纯爱好者的、纯净的平台来交流沟通、入圈、寻找自己的partner,少走弯路、少踩坑,毕竟鱼龙混杂、知己难觅~
(备用微信号: domsm789 )