容器编排实战Docker与Kubernetes对比选型与落地实践大家好我是迪哥。容器编排是云原生时代的核心技术从 Docker Compose 到 Kubernetes从 Swarm 到 K3s我们经历了多种方案的演进。今天就聊聊容器编排的选型和落地经验。容器编排方案对比方案适用场景特点Docker Compose开发测试环境简单易用单机部署Docker Swarm小型生产环境Docker原生轻量级Kubernetes中大型生产环境功能完善生态成熟K3s边缘计算/轻量环境轻量K8s资源占用低Docker Compose 实战docker-compose.ymlversion: 3.8 services: web: build: . ports: - 8080:8080 environment: - SPRING_PROFILES_ACTIVEprod - DB_URLjdbc:mysql://db:3306/example depends_on: - db restart: always db: image: mysql:8.0 environment: - MYSQL_ROOT_PASSWORDpassword - MYSQL_DATABASEexample volumes: - mysql-data:/var/lib/mysql restart: always redis: image: redis:7.0 volumes: - redis-data:/data restart: always volumes: mysql-data: redis-data:常用命令# 启动服务 docker-compose up -d # 查看日志 docker-compose logs -f # 停止服务 docker-compose down # 重启服务 docker-compose restartKubernetes 实战Pod 配置apiVersion: v1 kind: Pod metadata: name: app-pod labels: app: myapp spec: containers: - name: app image: registry.example.com/app:latest ports: - containerPort: 8080 env: - name: DB_URL value: jdbc:mysql://mysql-service:3306/example resources: requests: cpu: 250m memory: 512Mi limits: cpu: 1000m memory: 1GiService 配置apiVersion: v1 kind: Service metadata: name: app-service spec: selector: app: myapp ports: - name: http port: 80 targetPort: 8080 type: ClusterIPDeployment 配置apiVersion: apps/v1 kind: Deployment metadata: name: app-deployment spec: replicas: 3 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: app image: registry.example.com/app:latest ports: - containerPort: 8080 livenessProbe: httpGet: path: /actuator/health port: 8080 initialDelaySeconds: 30 periodSeconds: 10 readinessProbe: httpGet: path: /actuator/health port: 8080 initialDelaySeconds: 10 periodSeconds: 5K3s 轻量部署安装 K3s# 安装服务端 curl -sfL https://get.k3s.io | sh - # 安装客户端 curl -sfL https://get.k3s.io | K3S_URLhttps://server-ip:6443 K3S_TOKENtoken sh -部署应用# 使用 kubectl 部署 kubectl apply -f deployment.yaml kubectl apply -f service.yaml最佳实践清单维度最佳实践开发环境使用 Docker Compose小型生产使用 K3s中大型生产使用标准 K8s资源限制配置合理的资源请求和限制健康检查配置 liveness 和 readiness probe监控集成 Prometheus Grafana说到容器编排我家那只叫 Docker 的哈士奇最近学会了容器管理——把自己的玩具按类型分类放在不同的箱子里说是这样找起来方便这编排能力比我们的 K8s 还强 我是迪哥我们下期再见