在当今云原生技术浪潮中,Kubernetes(通常简称为K8s或k8)已经成为了容器编排领域的绝对标准。对于“运维公社”内的开发者、运维工程师及系统架构师而言,掌握K8s不仅是技术能力的体现,更是提升系统稳定性与高可扩展性的核心手段。
本文将深入浅出地解析K8s的本质,剖析其核心原理,并详细指导如何从零开始进行架构部署,为您提供一份专业的全方位指南。
一、 核心概念:K8s是什么?
“K8s”是“Kubernetes”一词的缩写,即8个字母去掉中间的K和s,保留了前后各8位字母(K-8-s),取其简称。作为Google开源的容器编排系统,K8s旨在自动化部署、扩展和管理容器化应用程序。
在“运维公社”的讨论中,我们常讨论K8s与Docker的关系:如果说Docker解决了“如何打包”的问题,那么K8s则解决了“如何管理”的问题。它能够将成千上万个容器视作单个单元进行管理,具备自我修复、横向扩容、负载均衡等强大的功能。
二、 架构原理:Master与Node的协作
Kubernetes集群由Master节点(控制平面)和Worker节点(工作节点)两部分组成,通过API Server进行通信,挑战高并发场景。
Master节点
Master是集群的“大脑”,负责决策并告知工作节点该做什么。
API Server: 集群的统一入口,所有RESTful操作都通过它进行。
etcd: 高可用的键值数据库,存储集群的所有配置数据和状态信息,是系统状态的数据源。
Scheduler: 负责调度,根据资源需求和策略,决定将新创建的Pod分配到哪个Node上运行。
Controller Manager: 负责维持集群状态,例如当某个Pod崩溃时,它负责重启新的Pod以恢复预期状态。
Worker节点
Worker节点是“肌肉”,负责运行实际的应用负载。
Kubelet: 工作节点的代理,监听Master发送的指令,管理本机容器(如docker)的生命周期。
kube-proxy: 维护网络规则,实现Service(服务)的负载均衡和网络通信。
Container Runtime: 负责运行容器的软件,如containerd或Docker。
三、 核心组件详解
在理解原理之前,必须掌握三个最基础的原子概念:
Pod: K8s管理的最小单元。它是一组共享网络和存储的容器。K8s调度在Pod级别,而非容器级别。
Service: 定义一组Pod的访问策略(如IP地址和端口)。即使Pod重启导致IP变化,Service也能保持稳定的访问入口。
Label & Selector: 标签是附加在对象上的键值对,用于分类资源(如app: my-app)。选择器则是基于标签筛选对象的机制,用于将Service与Pod关联。
四、 架构部署指南
本指南将以二进制安装方式为例,演示在Linux环境下的K8s部署流程。注:生产环境 使用kubeadm或云厂商托管的K8s服务。
环境准备
操作系统: CentOS 7.9 或 Ubuntu 20.04+。
节点角色: 至少需要1个Master节点,2个以上Worker节点。
* 基础组件: 禁用swap、配置主机名解析、配置防火墙(或关闭)、安装docker/containerd。

Master节点部署
首先初始化控制平面:
kubeadm init
apiserver-advertise-address=192.168.1.100
image-repository registry.aliyuncs.com/google_containers
kubernetes-version v1.24.0
service-cidr=10.96.0.0/12
pod-network-cidr=10.244.0.0/16
初始化成功后,会输出以下关键指令,需保存用于Worker节点接入:
kubeadm join 192.168.1.100:6443 token xxx discovery-token-ca-cert-hash sha256:xxx
安装网络插件
为了让Pod之间能够通信,必须安装CNI(容器网络接口)插件,如Flannel或Calico:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Worker节点加入
在所有Worker节点上执行Master节点输出的kubeadm join指令。执行成功后,使用kubectl get nodes命令查看集群状态,直到所有节点状态显示为Ready。
五、
Kubernetes以其强大的架构设计和分布式思维,彻底改变了现代应用的运维模式。从理解Master控制平面与Worker执行平面的分离,到掌握Pod、Service等核心概念,再到熟练运用kubeadm完成架构部署,每一步都在构建一个高可用、自愈且弹性伸缩的云端操作系统。掌握K8s,即是掌握了云原生的通关密钥。
感兴趣的伙伴可以在下方添加一下,也是为了大家有个属于纯爱好者的、纯净的平台来交流沟通、入圈、寻找自己的partner,少走弯路、少踩坑,毕竟鱼龙混杂、知己难觅~
(备用微信号: domsm789 )