全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-21 7 分钟 ✍️ juanwangdev

从 Compose 迁移到 K8s

Docker Compose 应用可迁移到 Kubernetes,下面介绍迁移方法。

Kompose 工具

安装

Bash
# Linux
curl -L https://github.com/kubernetes/kompose/releases/download/v1.31.2/kompose-linux-amd64 \
  -o /usr/local/bin/kompose
chmod +x /usr/local/bin/kompose

转换

Bash
# 转换 Compose 文件
kompose convert -f docker-compose.yml -o k8s/

# 输出
k8s/
├── app-deployment.yaml
├── app-service.yaml
├── db-deployment.yaml
├── db-service.yaml
└── db-persistentvolumeclaim.yaml

配置差异

服务 vs Deployment

YAML
# Compose
services:
  app:
    image: my-app
    ports:
      - "80:80"

# K8s
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: app
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
        - name: app
          image: my-app
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: app
spec:
  type: LoadBalancer
  ports:
    - port: 80
  selector:
    app: app

数据卷

YAML
# Compose
volumes:
  - db-data:/var/lib/postgresql/data

# K8s
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: db-data
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

环境变量

YAML
# Compose
environment:
  - DB_PASSWORD=${DB_PASSWORD}

# K8s
env:
  - name: DB_PASSWORD
    valueFrom:
      secretKeyRef:
        name: db-secret
        key: password

迁移流程

1. 转换文件

Bash
kompose convert -f docker-compose.yml

2. 调整配置

Bash
# 编辑生成的 K8s 文件
# 添加健康检查、资源限制等

3. 应用资源

Bash
kubectl apply -f k8s/

4. 验证

Bash
kubectl get pods
kubectl get services
kubectl logs -f deployment/app

高级配置

健康检查

YAML
# K8s 健康检查
livenessProbe:
  httpGet:
    path: /health
    port: 3000
  initialDelaySeconds: 40
  periodSeconds: 30

readinessProbe:
  httpGet:
    path: /ready
    port: 3000
  initialDelaySeconds: 10
  periodSeconds: 10

资源限制

YAML
resources:
  limits:
    cpu: "1"
    memory: 512Mi
  requests:
    cpu: "0.5"
    memory: 256Mi

注意事项

  • Kompose 转换后需手动调整高级配置
  • K8s Service 替代 Compose ports 配置
  • K8s Secret 替代 Compose 环境变量(敏感信息)
  • K8s PVC 替代 Compose volumes 配置
  • K8s 支持副本数、滚动升级等高级特性

要点总结

  • Kompose 将 Compose 文件转换为 K8s Deployment/Service/PVC
  • 转换后需手动调整健康检查、资源限制等高级配置
  • K8s Service 替代 Compose 端口映射,实现服务发现
  • K8s Secret 和 PVC 分别管理敏感信息和持久化数据
  • 迁移流程:转换 → 调整 → 应用 → 验证

📝 发现内容有误?点击此处直接编辑

← 上一篇 Docker 与 K8s 关系
下一篇 → 本地开发 Minikube/Kind
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库