第 13 章 结业项目:交付你的小站
你要完成的成果
不看前面解释,尝试用一个独立命名空间运行两份网页服务,网页内容来自 ConfigMap,经 Service 提供集群内入口,并能通过本机端口转发访问。Deployment 应包含资源请求、限制、就绪与存活探针。你还要证明自己能恢复失败更新、定位一次错误选择器,并清理资源。
随书 examples/project/ 提供完整起点:namespace.yaml、configmap.yaml、deployment.yaml 和 service.yaml。EPUB 内也已列出所有关键清单;单独拿到电子书的读者,可按第 7、8、6 章依次手工创建相应文件。
在书籍项目目录使用配套文件时:
kubectl config use-context kind-k8s-book
kubectl apply -f examples/project/namespace.yaml
kubectl apply -n k8s-book -f examples/project/configmap.yaml
kubectl apply -n k8s-book -f examples/project/deployment.yaml
kubectl apply -n k8s-book -f examples/project/service.yaml
kubectl rollout status deployment/hello-web -n k8s-book --timeout=120s
kubectl port-forward -n k8s-book service/hello-web 8080:80若你手工建立了工作目录,就把 examples/project/ 路径替换成实际文件位置。网页出现后,保存一次 Pod 列表和浏览器截图作为自己的学习记录。
验收清单
kubectl get deployment hello-web -n k8s-book显示两个就绪副本。- 浏览器能看到你自己写的中文欢迎语。
- 从集群内访问
http://hello-web能得到相同页面。 - 删除一个 Pod 后,控制器会补建新 Pod。
- 错误镜像实验失败后,能通过回滚恢复到健康状态。
- Service 选择器故意写错时,能从后端和标签找到原因,再恢复。
- 能解释为什么这个项目还不是生产部署。
本轮发布已在隔离 kind 集群中实际完成这些验收,并额外检查 HTTP 就绪失败不重启、存活失败后重启、PVC 换 Pod 保留、CPU 请求过大和节点选择器不匹配时的调度失败。自动化入口为 lab/run_kind.py,配套实验包可下载源文件;运行记录见 交付记录。
这些结果来自记录中的 CI 版本与场景,没有在你的电脑上替你执行。没有验证 HPA、NetworkPolicy 执行、多节点容错、节点丢失后的存储恢复或生产安全基线。请继续在自己的隔离环境复现,不把“能部署小站”当作生产验收。
清理,不留下忘记的资源
先停止所有 port-forward 会话,再删除练习命名空间。下面命令会删除该命名空间内的所有对象,包括你创建的 PVC,务必确认里面只有可丢弃的实验数据。
kubectl config current-context
kubectl delete namespace k8s-book如果整个 kind 集群都不再需要:
kind delete cluster --name k8s-book
kind get clusters这会删除本地练习集群及其节点容器。不要把它当成“暂停”,数据可能无法找回。只想暂时休息时,可以先不删除集群。