DEV Community

WDSEGA
WDSEGA

Posted on

Kubernetes入门:从零部署你的第一个应用

Kubernetes已经成为容器编排的事实标准。本文将带你从零开始,用最小必要知识完成第一个K8s应用的部署。

核心概念速览

Kubernetes的架构围绕几个核心资源构建:

  • Pod:最小调度单元,包含一个或多个容器
  • Deployment:管理Pod的副本数和滚动更新
  • Service:为Pod提供稳定的网络访问入口
  • Namespace:逻辑隔离不同环境(如dev、staging、prod)

理解这四个概念,足以应对80%的日常运维场景。

部署第一个应用

假设你有一个Docker镜像myapp:v1,以下是完整的Deployment和Service配置:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: app
        image: myapp:v1
        ports:
        - containerPort: 8080
        resources:
          requests:
            memory: "128Mi"
            cpu: "100m"
          limits:
            memory: "256Mi"
            cpu: "200m"
---
apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  selector:
    app: myapp
  ports:
  - port: 80
    targetPort: 8080
  type: LoadBalancer
Enter fullscreen mode Exit fullscreen mode

resources字段至关重要。requests告诉调度器Pod需要什么资源,limits则是硬上限。不设置资源限制会导致节点资源耗尽时Pod被无差别驱逐。

常用kubectl命令

# 应用配置
kubectl apply -f deployment.yaml

# 查看Pod状态
kubectl get pods -o wide

# 查看Pod日志
kubectl logs -f deployment/myapp

# 进入容器调试
kubectl exec -it pod/myapp-xxx -- /bin/sh

# 扩缩容
kubectl scale deployment myapp --replicas=5

# 滚动更新镜像
kubectl set image deployment/myapp app=myapp:v2
Enter fullscreen mode Exit fullscreen mode

健康检查配置

生产环境必须配置存活探针(liveness)和就绪探针(readiness):

livenessProbe:
  httpGet:
    path: /health
    port: 8080
  initialDelaySeconds: 10
  periodSeconds: 5
readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 3
Enter fullscreen mode Exit fullscreen mode
  • livenessProbe:检测应用是否存活,失败则重启容器
  • readinessProbe:检测应用是否准备好接收流量,失败则从Service端点移除

总结

Kubernetes的学习曲线确实陡峭,但掌握Pod、Deployment、Service和Namespace四个核心概念后,你已经可以完成大部分日常部署工作。建议先在本地用minikube或kind练习,再逐步迁移到生产集群。


本文是博客完整版的精简版,更多技术细节和代码示例请查看完整版:
阅读原文

Top comments (0)