进阶实战:云原生初探 (K8s)

当你拥有成百上千个容器分布在几十台服务器上时,Docker Compose 就显得无能为力了。这时我们需要 Kubernetes (K8s) —— 容器编排界的霸主。


1. 为什么叫 K8s?

K-u-b-e-r-n-e-t-e-s 单词共有 10 个字母,K 和 s 之间有 8 个字母,故名 K8s。它在希腊语中意为“舵手”或“飞行员”。


2. 核心架构:大脑与四肢

K8s 集群主要由两部分组成:

  • API Server: 集群的入口,所有指令都通过它。
  • Etcd: 集群的数据库,存储了所有的状态信息。
  • Scheduler: 决定容器该跑在哪台机器上。
  • Kubelet: 节点上的管家,负责与 Master 沟通。
  • Container Runtime: 负责拉取镜像并运行(如 containerd 或 CRI-O)。

3. 三大核心资源对象

在 K8s 中,我们不再直接操作容器,而是操作对象:

  1. Pod (豌豆荚): K8s 的最小调度单位。一个 Pod 可以包含一个或多个容器,它们共享网络和存储。
  2. Deployment (部署): 定义应用的副本数量、升级策略(滚动更新)。
  3. Service (服务): 为 Pod 提供一个稳定的 IP 或域名,实现负载均衡。

4. 声明式 API:云原生的精髓

ℹ️ 思维转变
  • 命令式 (Docker): “帮我启动一个 Nginx 容器”。
  • 声明式 (K8s): “我想要集群里永远运行着 3 个 Nginx 副本,请帮我维持这个状态”。

这种“最终一致性”的设计让 K8s 具备了强大的自愈能力:如果某个节点挂了,K8s 会自动在其他节点上重新拉起丢失的 Pod。


5. 快速上手:Minikube

想在本地尝试 K8s?Minikube 是最好的选择。

# 启动本地集群
minikube start
 
# 查看状态
kubectl get nodes
 
# 部署第一个应用
kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39

6. 结业练习

Navigation