142 lines
5.8 KiB
Markdown
142 lines
5.8 KiB
Markdown
|
|
---
|
|||
|
|
tags: [microservice, kubernetes, k8s, container-orchestration]
|
|||
|
|
create time: 2026-05-05 18:30
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Kubernetes — 参考手册
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
Kubernetes (K8s) 是微服务架构的事实标准编排引擎。它将容器化的服务组织成声明式的资源对象,自动处理部署、扩展、故障恢复。
|
|||
|
|
|
|||
|
|
本文档是总入口:顶层概念、决策矩阵、速查表见本页;详细教程和实操指南在子文档中。
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TB
|
|||
|
|
subgraph CLUSTER["K8s Cluster"]
|
|||
|
|
Master["控制面<br/>API Server / Scheduler / Controller Manager / etcd"]
|
|||
|
|
|
|||
|
|
subgraph NODES["工作节点"]
|
|||
|
|
N1["Node A<br/>kubelet + kube-proxy"]
|
|||
|
|
N2["Node B<br/>kubelet + kube-proxy"]
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
Master --> N1
|
|||
|
|
Master --> N2
|
|||
|
|
|
|||
|
|
subgraph APPS["应用层"]
|
|||
|
|
Order["Order Service Deployment"]
|
|||
|
|
Pay["Payment Service Deployment"]
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
N1 --> Order
|
|||
|
|
N2 --> Order
|
|||
|
|
N1 --> Pay
|
|||
|
|
N2 --> Pay
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
SVC["Service (ClusterIP)"] -->|Load Balance| Order
|
|||
|
|
Ingress["Ingress (HTTP Routing)"] --> SVC
|
|||
|
|
|
|||
|
|
style Master fill:#e3f2fd
|
|||
|
|
style N1 fill:#fff3e0
|
|||
|
|
style N2 fill:#fff3e0
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 快速导航
|
|||
|
|
|
|||
|
|
| 主题 | 定位 | 文档 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 核心概念与 Deployment | **教程**:Pod/Deployment/Probe、滚动更新 | [[02-Kubernetes/01-核心概念与Deployment]] |
|
|||
|
|
| 配置管理 | **操作手册**:ConfigMap/Secret 注入、热更新 | [[02-Kubernetes/02-配置管理]] |
|
|||
|
|
| 网络与服务发现 | **教程**:Service 类型、Ingress、Headless | [[02-Kubernetes/03-网络与服务发现]] |
|
|||
|
|
| 扩缩容与有状态应用 | **教程**:HPA / VPA / StatefulSet | [[02-Kubernetes/04-扩缩容与有状态应用]] |
|
|||
|
|
| 调度控制 | **进阶**:Affinity/Taint/TopologySpread | [[02-Kubernetes/05-调度控制]] |
|
|||
|
|
| 资源与安全管控 | **安全**:Quota/LimitRange/NetworkPolicy | [[02-Kubernetes/06-资源与安全管控]] |
|
|||
|
|
| 运维排查 | **速查**:上线清单、诊断命令、FAQ | [[02-Kubernetes/07-运维排查]] |
|
|||
|
|
|
|||
|
|
## 核心概念速查
|
|||
|
|
|
|||
|
|
| K8s 对象 | 用途 | 类比 |
|
|||
|
|
|---------|------|------|
|
|||
|
|
| **Pod** | 最小部署单元,包含一个或多个容器 | 应用实例 |
|
|||
|
|
| **Deployment** | 管理 Pod 的副本数和滚动更新 | 应用的"模板" |
|
|||
|
|
| **Service** | 稳定的网络入口,负载均衡 | 内部 VIP → [[02-Kubernetes/03-网络与服务发现]] |
|
|||
|
|
| **Ingress** | HTTP/HTTPS 路由规则 | 外部网关 → [[02-Kubernetes/03-网络与服务发现]] |
|
|||
|
|
| **ConfigMap** | 配置注入(明文) → [[02-Kubernetes/02-配置管理]] |
|
|||
|
|
| **Secret** | 敏感配置注入(base64)→ [[02-Kubernetes/02-配置管理]] |
|
|||
|
|
| **HPA** | 根据指标自动扩缩容 → [[02-Kubernetes/04-扩缩容与有状态应用]] |
|
|||
|
|
| **StatefulSet** | 有状态应用的有序管理 | DB、ZK → [[02-Kubernetes/04-扩缩容与有状态应用]] |
|
|||
|
|
|
|||
|
|
## 部署驱动模式对比
|
|||
|
|
|
|||
|
|
| 维度 | 传统 CI/CD (Push) | GitOps (Pull) |
|
|||
|
|
|------|------------------|---------------|
|
|||
|
|
| 部署驱动 | CI 服务器主动推送 | Git 仓库变动触发拉取 |
|
|||
|
|
| 状态源 | CI pipeline 历史 | Git commit history |
|
|||
|
|
| 漂移检测 | 通常无 | 持续比对,自动修复 |
|
|||
|
|
| 安全边界 | CI 需直连 K8s | ArgoCD 集群内运行 |
|
|||
|
|
| 回滚方式 | 回到上一次的 pipeline | `git revert` + 自动同步 |
|
|||
|
|
| 代表工具 | Jenkins, GitHub Actions | ArgoCD, Flux |
|
|||
|
|
|
|||
|
|
> **选型建议**:团队规模 < 20 人时 Push 模式足够。≥ 50 人或多环境场景建议迁移到 GitOps → [[../03-CICD与GitOps]]
|
|||
|
|
|
|||
|
|
## Secret 管理方案对比
|
|||
|
|
|
|||
|
|
| 方案 | 适用场景 | 优点 | 缺点 |
|
|||
|
|
|------|---------|------|------|
|
|||
|
|
| K8s 原生 Secret | 小规模内部团队 | 零成本,开箱即用 | etcd 明文存储 |
|
|||
|
|
| ESO (External Secrets) | 已有 Vault / AWS SSM | Git 中无密文 | 需维护额外组件 |
|
|||
|
|
| SOPS + sealed-secrets | ArgoCD 用户 | 加密文件可提交到 Git | 需管理 PKI |
|
|||
|
|
| 云厂商 Secret Manager | 深度绑定单一云平台 | 审计完善 | 平台锁定 |
|
|||
|
|
|
|||
|
|
> **渐进路径**:K8s Secret → 接入云厂商 Secret Manager → 引入 ESO 实现多云解耦。
|
|||
|
|
|
|||
|
|
## 编排工具选型
|
|||
|
|
|
|||
|
|
| 服务规模 | 推荐方案 | 理由 |
|
|||
|
|
|----------|---------|------|
|
|||
|
|
| < 10 个服务 | Kustomize / 裸 YAML | 复杂度高于收益 |
|
|||
|
|
| 10~50 个服务 | Helm | 模板复用价值明显 |
|
|||
|
|
| > 50 个服务 | Helm + Kustomize overlays | Helm 管模板,Kustomize 管环境差异 |
|
|||
|
|
|
|||
|
|
## 关键决策流程图
|
|||
|
|
|
|||
|
|
### 安全选型决策
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
flowchart TD
|
|||
|
|
START["开始选型"] --> SIZE["团队 < 20人?"]
|
|||
|
|
SIZE -- 是 --> K8SSECRET["✅ K8s 原生 Secret"]
|
|||
|
|
SIZE -- 否 --> CLOUD["深度绑定云厂商?"]
|
|||
|
|
CLOUD -- 是 --> SECRETMGR["✅ Cloud Secret Manager"]
|
|||
|
|
CLOUD -- 否 --> GITOPS["使用 ArgoCD?"]
|
|||
|
|
GITOPS -- 是 --> SOPS["✅ SOPS + sealed-secrets"]
|
|||
|
|
GITOPS -- 否 --> ESO["✅ External Secrets Operator"]
|
|||
|
|
|
|||
|
|
style K8SSECRET fill:#e8f5e9
|
|||
|
|
style SECRETMGR fill:#e3f2fd
|
|||
|
|
style SOPS fill:#fff3e0
|
|||
|
|
style ESO fill:#f3e5f5
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 附录:常用命令速查
|
|||
|
|
|
|||
|
|
### kubectl 基础
|
|||
|
|
```bash
|
|||
|
|
kubectl set image deployment/order-service \
|
|||
|
|
order=registry.example.com/order-service:v1.2.3 -n production
|
|||
|
|
|
|||
|
|
kubectl rollout status deployment/order-service -n production --timeout=120s
|
|||
|
|
kubectl rollout undo deployment/order-service -n production
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 关联笔记
|
|||
|
|
|
|||
|
|
- [[02-Kubernetes/01-核心概念与Deployment]] — Deployment 完整示例与 Probe 选择
|
|||
|
|
- [[hhs/MS/05-部署运维/01-容器化]] — Docker 镜像是 K8s Pod 的基础单元
|
|||
|
|
- [[hhs/MS/05-部署运维/03-CICD与GitOps]] — GitOps ArgoCD 操作 K8s manifest
|
|||
|
|
- [[hhs/MS/05-部署运维/04-SRE实践]] — SLO/Error Budget 在 K8s 中的落地
|
|||
|
|
- [[hhs/MS/02-服务治理/04-服务发现]] — K8s Service 是服务端发现模式的代表
|
|||
|
|
- [[hhs/MS/02-服务治理/08-流量治理]] — Istio VirtualService 在 K8s 上的高级路由
|