K8s是什么?——第一集:从“搬箱子”到“自动化仓库”的革命

云原生入门系列|第1集:K8s是什么?------从"搬箱子"到"自动化仓库"的革命

1. 引子:运维到底在忙什么?

假设你是一家电商公司的运维工程师。以前,公司只有一两个应用,跑在几台物理服务器上。每次上线,你需要手动登录服务器,拉取代码,重启进程。万一服务器宕机,你得半夜爬起来抢修。

后来,公司开始用 Docker 容器。每个应用被打包成一个个"集装箱" ------ 环境一致、依赖隔离。你写了个脚本,一键启动10个容器,感觉轻松了不少。

但问题又出现了:流量高峰时,你需要手动增加容器数量;某个容器挂了,你要手动重启;多个容器之间怎么通信?怎么让用户通过一个域名访问到不同服务?你发现,光靠脚本已经管不过来了。

这时候,Kubernetes(简称 K8s) 登场了。它就像一个"自动化物流仓库",你把容器(箱子)交给它,它自动负责:

  • 放在哪个货架(节点)
  • 维持多少箱(副本数)
  • 箱子坏了自动换新(自愈)
  • 货物进出路由(网络)
  • 根据订单量增减箱子(弹性伸缩)

一句话:K8s 是容器的"操作系统",帮你管理成千上万个容器的生命周期。

2. K8s 名字由来

Kubernetes 是希腊语"舵手"的意思。因为单词太长,社区取了缩写 K8s ------ K 和 s 之间有 8 个字母,和 "internationalization → i18n" 类似。

3. K8s 能做什么? ------ 四个核心能力

能力 解释 没有K8s时 有了K8s
自动部署与回滚 你可以声明"我要运行nginx:1.20",K8s自动部署;升级到1.21失败,自动退回1.20。 手动改镜像、重启,回滚要重新打包。 kubectl set image 一行命令完成,错误自动停。
服务发现与负载均衡 容器A访问容器B,不需要知道B的IP,只要知道Service名字。K8s自动做负载均衡。 写死IP或自己维护DNS,容器漂移后IP变化就废了。 K8s内置DNS和VIP,容器挂了自动摘除。
存储编排 自动挂载你需要的存储(本地、云硬盘、NFS等),容器重启后数据不丢。 手动挂载宿主机目录,多节点下数据不同步。 声明PVC,K8s会自动分配存储并挂载。
自我修复 如果容器健康检查失败,K8s会重启它;如果节点宕机,会在健康节点重建容器。 需要外部监控脚本或人工介入。 K8s controller loop 持续尝试达到期望状态。

4. K8s 的架构(极简版)

K8s 集群由两部分组成:

  • 控制平面(Master):集群的"大脑",负责调度、维护状态、暴露API。
  • 工作节点(Node):真正运行容器的机器,每个节点上有一个 kubelet(管家)和容器运行时(如 Docker)。

你可以用 kubectl get nodes 查看节点列表。

5. 最小的部署单元不是容器,是 Pod

很多初学者以为 K8s 直接运行容器。不,它运行的是 Pod ------ 一个Pod里可以有1个或多个容器,这些容器共享网络和存储,像一个"逻辑主机"。

例如,你有一个业务容器需要实时收集日志,然后推送到中心。你可以设计一个Pod包含两个容器:

  • 主容器:运行你的业务应用
  • Sidecar容器:负责收集日志并发送

这样两个容器可以共享同一个Pod IP,通过 localhost 互相访问。

6. 声明式API ------ 告诉K8s"要什么",而不是"怎么做"

K8s 的核心思想是声明式。你写一个 YAML 文件,描述最终想要的状态(比如:运行3个nginx Pod),K8s 会持续调整实际状态,使之与期望状态一致。

命令式(旧方式):

bash 复制代码
docker run -d --name nginx nginx
 如果容器挂了,没有人重新拉起。

声明式(K8s方式):
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  replicas: 3
  template:
    spec:
      containers:
      - name: nginx
        image: nginx
     保存为 deploy.yaml,执行 kubectl apply -f deploy.yaml。K8s 会确保永远有3个nginx Pod在运行。

7. 一个最简单的K8s操作体验
假设你已经装好 minikube(本地单节点集群),试试下面的流程:   
# 创建一个 Deployment
kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4

# 查看 Pod
kubectl get pods

# 把这个 Deployment 暴露成 Service(允许外部访问)
kubectl expose deployment hello-minikube --type=NodePort --port=8080

# 获取访问地址
minikube service hello-minikube --url
浏览器打开那个 URL,你会看到请求信息。这就是一个完整的最小应用:部署 + 服务暴露。

}
  1. 为什么现在是学习K8s的最好时机?
    岗位需求爆炸:几乎所有中大型企业招聘后端/运维/云原生岗位,都要求"熟悉 K8s"。

技术成熟稳定:K8s 已经诞生近十年(1.0 发布于2015年),社区文档、学习资源非常丰富。

上手门槛降低:minikube、kind、k3s 等工具让你笔记本就能跑起完整集群。

AI 基础设施:大模型训练平台(如Kubeflow、Ray on K8s)都基于 K8s 构建。

  1. 本系列学习路线图
    我们计划用30篇文章,从零基础到能够独立部署一个微服务应用。路线如下:

基础篇(第1-10集):核心概念:Pod、Deployment、Service、Ingress、ConfigMap、Secret、Volume。

进阶篇(第11-20集):调度、存储、网络、安全、监控。

实战篇(第21-30集):CI/CD、Helm、服务网格、Operator、故障排查。

每一篇文章都会配有可运行的命令和YAML示例,你可以一边读一边在 minikube 上练习。

  1. 下一集预告
    第2集我们将手把手在本地搭建 K8s 实验环境(minikube 或 kind),并成功运行第一个 Pod。敬请期待!

本内容为《云原生入门系列》第1集,订阅专栏后可获取全部30集。

相关推荐
汪汪大队u21 分钟前
从 Docker Compose 到 Kubernetes:物联网管理系统迁移实战(3)—— 两个运维坑
运维·docker·kubernetes
小夏子_riotous1 小时前
Kubernetes学习路径——5. Kubernetes 实战入门:Namespace、Pod、Label、Deployment 与 Service 全解析
学习·贪心算法·kubernetes
志栋智能1 小时前
超自动化运维:提升业务连续性的关键引擎
运维·服务器·网络·人工智能·自动化
IT研究所1 小时前
从系统选型到ITR智能服务流落地的关键一步
大数据·运维·服务器·数据库·人工智能·科技·自动化
念恒123061 小时前
Docker基础
运维·docker·容器
Be reborn2 小时前
用例不是孤立执行的:依赖、变量池与 storage_state 设计
python·自动化·pytest
Agent手记2 小时前
成品发货全流程自动化,落地实操与错发漏发规避方案 | 2026企业级Agent端到端落地指南
运维·人工智能·ai·自动化
杂家2 小时前
Docker 容器端口无法从外部访问
运维·服务器·docker·容器
其实防守也摸鱼2 小时前
[特殊字符] Docker + LMArena2API 部署全流程:从环境准备到接口调用,一步到位
运维·网络·安全·web安全·docker·容器·大模型
志栋智能2 小时前
超自动化巡检:如何应对海量增长的基础设施?
运维·自动化