首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Kubernetes 服务部署全解析:从镜像构建到集群发布实战指南

Kubernetes 服务部署全解析:从镜像构建到集群发布实战指南

作者头像
用户5741377
发布2026-06-22 21:31:00
发布2026-06-22 21:31:00
1780
举报

一、项目准备:Docker 镜像构建

1. 编写 Dockerfile

  • 使用官方基础镜像(如 openjdk:17-jdk-alpinenginx:latest等)保证镜像安全轻量
  • 多阶段构建减少最终镜像体积,提高启动速度
  • 明确暴露端口和启动命令,方便 K8s 掌控容器生命周期

示例(Java Spring Boot 应用):

代码语言:javascript
复制
# Builder 阶段
FROM maven:3.8.7-openjdk-17 AS builder
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn clean package -DskipTests

# 运行阶段
FROM openjdk:17-jdk-alpine
WORKDIR /app
COPY --from=builder /app/target/app.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

2. 构建镜像并推送到镜像仓库

代码语言:javascript
复制
docker build -t your-registry.com/your-project/app:v1.0 .
docker push your-registry.com/your-project/app:v1.0

推荐使用私有仓库(如 Harbor、Docker Hub私有库)保障镜像安全,镜像版本务必规范管理。


二、Kubernetes 部署资源编写

1. Deployment

定义应用的副本数、更新策略、容器镜像和环境变量。

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-deployment
  labels:
    app: app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: app
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
      - name: app-container
        image: your-registry.com/your-project/app:v1.0
        ports:
        - containerPort: 8080
        env:
        - name: SPRING_PROFILES_ACTIVE
          value: "prod"
      imagePullSecrets:
      - name: regcred   # 如果使用私有仓库,需提前创建 secret

2. Service

将 Deployment 暴露为集群内服务或外部访问接口。

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: app-service
spec:
  type: ClusterIP
  selector:
    app: app
  ports:
  - port: 80
    targetPort: 8080

通过设置 type: LoadBalancer 或结合 Ingress,实现外部访问。


三、应用发布与管理

1. 资源应用

代码语言:javascript
复制
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

2. 监控发布状态

代码语言:javascript
复制
kubectl rollout status deployment/app-deployment

观察 Pod 是否成功启动,副本是否就绪。

3. 滚动升级与回滚

  • 滚动升级

修改 Deployment 中镜像版本:

代码语言:javascript
复制
kubectl set image deployment/app-deployment app-container=your-registry.com/your-project/app:v1.1
  • 回滚
代码语言:javascript
复制
kubectl rollout undo deployment/app-deployment

四、配置管理与环境变量注入

  • 使用 ConfigMap 管理配置文件或参数
  • 使用 Secret 管理敏感信息(如数据库密码、API Key)

示例 ConfigMap:

代码语言:javascript
复制
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  application.properties: |
    server.port=8080
    logging.level.root=INFO

将 ConfigMap 挂载到容器:

代码语言:javascript
复制
volumeMounts:
- name: config-volume
  mountPath: /app/config
volumes:
- name: config-volume
  configMap:
    name: app-config

五、进阶实战:水平自动扩缩容(HPA)

基于 CPU 使用率或自定义指标,实现自动副本伸缩。

代码语言:javascript
复制
kubectl autoscale deployment app-deployment --min=2 --max=10 --cpu-percent=60

六、日志与监控集成

  • 日志收集:使用 Fluentd + Elasticsearch + Kibana(E)方案
  • 指标监控:结合 Prometheus + Grafana,实现应用和集群指标可视化

七、总结

Kubernetes 服务部署流程看似繁琐,但只要掌握镜像构建、Deployment 与 Service 资源定义及管理技巧,结合配置管理与自动扩缩容,能有效保证应用的高可用和易维护。随着生态完善,相关CI/CD流程自动化也日益成熟,是提升团队交付效率的关键所在。

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps和k8s全栈技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 编写 Dockerfile
  • 2. 构建镜像并推送到镜像仓库
  • 二、Kubernetes 部署资源编写
    • 1. Deployment
    • 2. Service
  • 三、应用发布与管理
    • 1. 资源应用
    • 2. 监控发布状态
    • 3. 滚动升级与回滚
  • 四、配置管理与环境变量注入
  • 五、进阶实战:水平自动扩缩容(HPA)
  • 六、日志与监控集成
  • 七、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档