K8s 核心概念与集群结构
High Contrast
Dark Mode
Light Mode
Sepia
Forest
2 min read440 words

K8s 核心概念与集群结构

Kubernetes 不是"更高级的 Docker"——它是一个集群操作系统,解决的是"如何在多台机器上可靠地运行、扩展和自愈容器"这个问题。在上 K8s 之前,先懂清楚它的结构。

集群结构总览

graph TB subgraph Control Plane ["Control Plane(管理节点)"] API["API Server\n所有操作入口"] ETCD["etcd\n集群状态存储"] SCHED["Scheduler\n决定 Pod 去哪个节点"] CM["Controller Manager\n维持期望状态"] end subgraph Node1 ["Worker Node 1"] K1["kubelet\n节点代理"] KP1["kube-proxy\n网络规则"] P1["Pod A\n(容器 1+2)"] P2["Pod B\n(容器 3)"] end subgraph Node2 ["Worker Node 2"] K2["kubelet"] KP2["kube-proxy"] P3["Pod C"] end API --> ETCD API --> SCHED SCHED --> K1 SCHED --> K2 K1 --> P1 K1 --> P2 K2 --> P3

核心对象速查表

对象 作用 常用场景
Pod 最小调度单位,1+ 容器的组 不直接创建(用 Deployment 管理)
Deployment 管理 Pod 副本数量与滚动更新 无状态应用(Web/API)
StatefulSet 有序部署,稳定的网络标识 数据库、消息队列
Service 为 Pod 组提供稳定的 IP 和 DNS 内部服务发现
Ingress HTTP/HTTPS 流量路由(类 Nginx) 对外暴露服务、域名绑定
ConfigMap 非敏感配置(环境变量/配置文件) 应用配置分离
Secret 加密存储敏感数据 密码、API Key、TLS 证书
Namespace 逻辑隔离多个环境或团队 production / staging
PersistentVolume 跨 Pod 存活的持久化存储 数据库数据目录

最小 K8s 环境:选择安装方式

# 选项 A:本地学习 —— kind(K8s in Docker)
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.22.0/kind-linux-amd64
chmod +x ./kind && mv ./kind /usr/local/bin/kind
kind create cluster --name dev
# 选项 B:单节点生产替代 —— k3s(轻量 K8s)
curl -sfL https://get.k3s.io | sh -
sudo k3s kubectl get nodes
# 选项 C:托管集群(推荐生产)
# GKE: gcloud container clusters create my-cluster --num-nodes=2 --zone=asia-southeast1-a
# EKS: eksctl create cluster --name my-cluster --region ap-southeast-1 --nodes=2
# AKS: az aks create -g mygroup -n mycluster --node-count 2

K8s vs Docker Compose 决策

维度 Docker Compose Kubernetes
服务数量 < 10 10+
机器数量 1–3 台(单机为主) 3+ 台多节点
自动扩容 ❌ 手动 ✅ HPA 自动
自愈(Pod 崩溃重启) ✅ restart policy ✅ 更完善
运维复杂度
推荐场景 中小项目、个人/小团队 高并发、跨团队平台

本节执行清单

下一节:kubectl 操作与应用部署