13_kubernetes_concepts/13.4_advanced.md
掌握了 Kubernetes 的核心概念 (Pod,Service,Deployment) 后,我们需要了解更多高级特性以构建生产级应用。
Helm 被称为 Kubernetes 的包管理器 (类似于 Linux 的 apt/yum)。它将一组 Kubernetes 资源定义文件打包为一个 Chart。
helm install my-release bitnami/mysqlService 虽然提供了负载均衡,但通常是 4 层 (TCP/UDP)。集群需要 7 层 (HTTP/HTTPS) 路由能力来充当网关。
重要:Kubernetes 社区推荐使用 Gateway API 作为新一代流量管理标准。原
kubernetes/ingress-nginx项目已于 2026 年 3 月退役停止维护,不再接收安全更新。
Gateway API 基于 CRD 实现,提供了比 Ingress 更强大和标准化的流量管理能力:
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: my-route
spec:
parentRefs:
- name: my-gateway
hostnames:
- "api.example.com"
rules:
- matches:
- path:
type: PathPrefix
value: /api
backendRefs:
- name: api-svc
port: 80
常见的 Gateway API 实现有 Envoy Gateway、Istio、Cilium、Traefik、Kong 等。
Ingress 资源仍可正常使用,但建议新项目直接采用 Gateway API。已有 Ingress 配置可按需逐步迁移。
容器内的文件是临时的。对于有状态应用 (如数据库),需要持久化存储。
HPA 根据 CPU 利用率或其他指标 (如内存、自定义指标) 自动扩缩 Deployment 或 ReplicaSet 中的 Pod 数量。
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: php-apache
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
通过将配置与镜像分离,保证了容器的可移植性。
注意:PodSecurityPolicy (PSP) 已在 Kubernetes 1.25 中完全移除。
Kubernetes 使用 Pod Security Standards 定义三个安全级别,通过内置的 Pod Security Admission 控制器在命名空间级别执行:
apiVersion: v1
kind: Namespace
metadata:
name: my-app
labels:
pod-security.kubernetes.io/enforce: baseline
pod-security.kubernetes.io/warn: restricted