云原生成长:Docker+K8s 从入门到部署微服务的 6 个核心知识点

在云原生开发中,Docker 和 Kubernetes(K8s)是构建和部署微服务的关键技术。本指南将逐步介绍从基础到实战的 6 个核心知识点,每个知识点都包括相关 YAML 配置示例。这些内容基于最佳实践,帮助您快速上手。注意:YAML 配置需根据实际环境调整。


1. Docker 基础:容器化应用

Docker 将应用打包为容器,确保环境一致性。核心是创建 Dockerfile 定义镜像。
关键概念:镜像、容器、Dockerfile 指令(如 FROM, RUN)。
YAML 配置示例(Dockerfile):

# 基于官方 Python 镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制依赖文件并安装
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 复制应用代码
COPY . .
# 暴露端口
EXPOSE 8000
# 启动命令
CMD ["python", "app.py"]


2. Kubernetes 基础:部署应用

Kubernetes 管理容器化应用的生命周期。核心是 Deployment 资源,用于创建和更新 Pods。
关键概念:Pods、Deployments、副本集(ReplicaSet)。
YAML 配置示例(Deployment):

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-deployment
spec:
  replicas: 3  # 运行 3 个副本
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: my-docker-image:latest  # 替换为您的 Docker 镜像
        ports:
        - containerPort: 8000


3. 服务发现与负载均衡

Kubernetes Service 提供内部网络访问和负载均衡,确保微服务间通信稳定。
关键概念:ClusterIP、NodePort、LoadBalancer。
YAML 配置示例(Service):

apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app  # 匹配 Deployment 的标签
  ports:
    - protocol: TCP
      port: 80  # 服务端口
      targetPort: 8000  # 容器端口
  type: ClusterIP  # 内部访问类型


4. 配置管理:ConfigMaps 和 Secrets

ConfigMaps 存储非敏感配置,Secrets 管理敏感数据(如密码),避免硬编码。
关键概念:环境变量、卷挂载。
YAML 配置示例(ConfigMap 和 Secret):

# ConfigMap 示例
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  config.yaml: |
    database_url: "postgres://user@db:5432"
    log_level: "info"

# Secret 示例(base64 编码数据)
apiVersion: v1
kind: Secret
metadata:
  name: app-secret
type: Opaque
data:
  password: dXNlcl9wYXNzd29yZA==  # 实际值需用 base64 编码


5. 持久化存储:Persistent Volumes

使用 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 管理数据持久化,防止容器重启时数据丢失。
关键概念:PV、PVC、存储类(StorageClass)。
YAML 配置示例(PVC):

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: app-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi  # 请求 1GB 存储
  storageClassName: standard  # 根据集群设置调整


6. 部署微服务架构:Ingress 和多个服务

微服务架构涉及多个独立服务。Ingress 提供外部访问路由,结合 Deployments 和 Services 实现完整部署。
关键概念:Ingress 控制器、路由规则、微服务协调。
YAML 配置示例(Ingress 和微服务部署):

# Ingress 示例(假设使用 Nginx Ingress 控制器)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app-ingress
spec:
  rules:
  - host: my-app.example.com
    http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: api-service  # 后端服务名称
            port:
              number: 80
      - path: /web
        pathType: Prefix
        backend:
          service:
            name: web-service
            port:
              number: 80

# 微服务 Deployment 示例(简化版,实际需多个)
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: api
  template:
    metadata:
      labels:
        app: api
    spec:
      containers:
      - name: api-container
        image: api-image:latest
        ports:
        - containerPort: 8080


通过以上 6 个知识点,您可以从 Docker 容器化入门,逐步掌握 Kubernetes 的核心功能,最终部署可扩展的微服务架构。实践中,建议使用 Minikube 或云服务(如 GKE、EKS)进行测试。YAML 配置需结合具体应用调整,确保安全性和性能。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐