第 12 章 安全、监控与自动扩容的第一课
最小权限
RBAC 通过 Role、ClusterRole 和绑定对象管理访问权限。Role 通常描述命名空间范围的权限,RoleBinding 把权限授予用户、组或 ServiceAccount。ClusterRole 可以描述集群范围权限,也可通过 RoleBinding 在一个命名空间内授予适用的权限。
ServiceAccount 是工作负载向 Kubernetes API 表明身份的一种机制,不是普通网页登录账号。不要为了方便给每个应用绑定 cluster-admin。不需要访问 API 的应用,可以考虑在 Pod 中设置 automountServiceAccountToken: false。
网络策略(NetworkPolicy)用于表达允许哪些流量,但只有网络插件支持并执行时才有效。创建了策略对象,并不自动证明隔离已生效;要实际测试允许与拒绝两类流量。命名空间也不等于网络防火墙。
镜像与运行权限
生产实践通常包括可信镜像来源、漏洞扫描、固定摘要、以非 root 运行、减少 Linux capabilities、限制权限提升及只读根文件系统。不能把这些字段不加测试地塞入任意镜像:有些镜像需要写临时目录或使用特定用户,应选兼容镜像并明确配置。
本书使用常见 NGINX 镜像突出概念,未完成生产安全基线。把学习项目投入真实业务前,应先调整镜像与运行权限,再进行验证。
指标、日志与事件各回答什么
指标描述随时间变化的数值,如 CPU、内存、请求量。日志记录应用输出的细节。事件描述 Kubernetes 观察到的调度、拉取、启动等动作,通常不是长期存储的审计档案。
kubectl top pods -n k8s-book这个命令依赖 Metrics API,常由 Metrics Server 提供。kind 不一定预装,所以报 Metrics API not available 不等于应用故障。本书不要求为了完成基础实验安装监控栈。生产中通常还需要长期指标存储、日志收集、告警和追踪。
HPA 为什么不能凭空扩容
HorizontalPodAutoscaler 按指标调整副本数。以 CPU 利用率为目标时,计算通常依赖相应容器的 CPU requests;没有请求值,可能无法正确计算利用率。它还需要可用的指标接口。
HPA 增加的是 Pod,不会自动给集群增加机器。节点没有余量时,新 Pod 仍会 Pending。节点自动扩容通常属于另一套机制。初学阶段先学会手动扩缩容,再学习 HPA 的采样、稳定窗口和行为配置。
本章自测:HPA 与增加节点是一回事吗?创建 NetworkPolicy 就一定会阻断流量吗?