让一次部署,留下可追溯的路径

一份可自行验证的示例实践:从 Deployment、就绪探针到一次本地访问,留下清晰的操作路径。

示例实践 · 以下是用于栏目展示的演示文章与配置。没有声称已经在你的集群执行;可在自己的测试环境逐步验证。

一次小小的部署,也可以有完整的来路。把配置、验证和收尾放在同一篇记录里,下一次遇到相似的问题,就能从一个清楚的位置重新开始。

一个足够小的起点

准备可使用 kubectl 的测试集群,将以下内容保存为 fieldnotes-demo.yaml。镜像使用 nginx 的 stable 标签;需要严格复现时,请在自己的记录中固定经过验证的镜像摘要。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: fieldnotes-demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: fieldnotes-demo
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
      maxSurge: 1
  template:
    metadata:
      labels:
        app: fieldnotes-demo
    spec:
      containers:
        - name: web
          image: nginx:stable
          ports:
            - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 256Mi
          readinessProbe:
            httpGet:
              path: /
              port: 80
            initialDelaySeconds: 2
            periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
  name: fieldnotes-demo
spec:
  selector:
    app: fieldnotes-demo
  ports:
    - port: 80
      targetPort: 80

把验证写成步骤

kubectl apply -f fieldnotes-demo.yaml
kubectl rollout status deployment/fieldnotes-demo
kubectl get pods -l app=fieldnotes-demo -o wide
kubectl port-forward service/fieldnotes-demo 8080:80

保持端口转发运行,在另一个终端请求 http://127.0.0.1:8080。预期可以访问 Nginx 默认页面;实际结果以自己的环境为准。

让状态可以被解释

就绪探针用来判断容器是否适合接收流量;就绪检查失败,不等于进程会被重启。记录 Pod 状态、事件和日志,通常比只写一句“部署成功”更有用。

kubectl describe deployment fieldnotes-demo
kubectl get events --sort-by=.metadata.creationTimestamp
kubectl logs -l app=fieldnotes-demo --tail=30

最后,收好这次尝试

记下 Kubernetes 版本、镜像摘要、配置变化和遇到的问题。确认测试结束后,可使用下面的命令移除本文创建的演示资源:

kubectl delete -f fieldnotes-demo.yaml

探针行为参考 Kubernetes 官方文档。实践不必宏大,能够清楚地复现,就已经值得留下。

一丝痕迹

很高兴,在这里遇见你。

头像,随邮箱而来。

填写邮箱后,会自动匹配 Gravatar。