当前位置: 首页 > news >正文

20250712-2-Kubernetes 应用程序生命周期管理-部署应用的流程_笔记

一、应用程序生命周期管理

1. 应用程序生命周期管理流程

1)在Kubernetes中部署应用流程



  • 制作镜像

    
    • 核心交付物:在容器化时代,镜像是项目交付的核心单元,取代了传统的程序文件
    • 环境一致性:镜像能保持高度环境一致性,类似压缩包在任何环境解压内容不变
    • 构建方式:
      • 使用Dockerfile自定义构建镜像
      • 从官方/私有镜像仓库拉取现成镜像
    • 多环境适配:同一镜像可部署到开发、测试、生产等不同环境
  • 使用控制器部署镜像

    

    • 核心控制器:Deployment用于80%的常规应用部署场景
    • 特殊场景控制器:
      • StatefulSet:有状态应用
      • DaemonSet:节点级守护进程
    • 管理优势:Kubernetes通过高级对象管理容器,而非直接创建容器
    • 部署命令:kubectl create deployment <名称> --image=<镜像>
  • 对外暴露应用

    

    • 暴露方式:
      • Service:基础服务暴露
      • Ingress:高级路由暴露
    • 访问原理:Pod IP无法直接访问,必须通过服务暴露
    • 端口映射:NodePort类型会随机分配30000-32767端口
  • 日常运维

    • 运维范畴:
      • 应用部署与配置
      • 平台完善与工具集成
      • 技术架构设计与应急预案
    • 与传统运维区别:从管理虚拟机转向管理Kubernetes平台体系
2)使用Deployment控制器部署Java应用



  • 使用Deployment控制器部署镜像

    
    • 部署命令:kubectl create deployment web --image=lisi/java-demo
    • 验证命令:kubectl get deployment,pods 查看部署状态
  • 查看Service状态

    

    • 服务暴露:kubectl expose deployment web --port=80 --type=NodePort --target-port=8080 --name=web
    • 服务验证:kubectl get service 查看分配的NodePort
  • 私有镜像仓库的搭建与管理

    

    • 最佳实践:搭建私有仓库集中管理业务镜像
    • 镜像来源:
      • 自定义构建推送
      • 从厂商仓库拉取
  • 访问部署的应用
    • 访问方式:<任意节点IP>:<NodePort>(如192.168.31.72:30075)
    • 服务转发:Service将请求转发到Pod的实际应用端口
  • 部署流程总结与疑问解答
    • 完整流程:镜像→Deployment→Service→访问
    • 学习路径:随着课程深入会逐步理解底层转发机制
  • 注意事项:确认镜像应用端口

    

    • 端口确认:必须明确镜像内应用实际监听端口
      • 官方镜像通常使用默认端口(如Nginx用80)
      • 自定义镜像可能修改默认端口
    • target-port:必须设置为容器内应用真实监听端口
3)YAML基础语法
  • 层级关系:使用空格缩进表示层级(禁止用Tab)
  • 基本规范:
    • 通常开头缩进2个空格
    • 字符后缩进1个空格(如冒号、逗号后)
  • 特殊标记:
    • ---表示YAML文件开始
    • #用于注释
  • 实践重要性:后续工作中主要使用YAML管理应用
4)服务编排



  • K8s容器编排引擎

    

    • 编排方式: Kubernetes(K8s)是一个容器编排引擎,使用YAML文件编排要部署的应用。
  • YAML文件格式说明

    

    • 基本语法规则
      • 层级表示: 使用缩进表示层级关系,类似于Python的语法结构
      • 缩进规范:
        • 不支持制表符(

          atab′′^{a}tab^{\prime\prime}atab′′

          )缩进,必须使用空格缩进
        • 通常开头缩进2个空格
        • 字符后缩进1个空格(如冒号、逗号等)
      • 文件标识: "---"表示YAML格式文件的开始
      • 注释方式: 使用"#"进行注释
    • 缩进关系示例
      • 层级关系:
        • 顶格编写的内容为一级
        • 缩进2个空格为二级(如metadata下的name)
        • 再缩进2个空格为三级(如labels下的k8s-app)
      • 缩进技巧: 建议手动输入空格而非使用Tab键,确保缩进一致性
    • 特殊符号使用
      • 分隔符: 三个连字符"---"表示独立资源的开始,用于分隔多个资源定义
      • 注释应用: 井号"#"后的内容为注释,常用于说明代码功能或临时禁用某段配置
    • 实际应用技巧
      • 资源组织: 可以将多个相关资源定义在同一个YAML文件中,用"---"分隔
      • 格式验证: 编写时需特别注意缩进层级关系,错误的缩进会导致解析失败
      • 开发建议: 复杂配置建议先分文件编写,验证无误后再合并到一个文件中
二、知识小结

知识点

核心内容

考试重点/易混淆点

难度系数

生命周期概念

从生到死的全过程(如:人类生老病死、树木生长枯萎),在K8s中指应用从开发部署到维护下线的完整过程

区分生物生命周期与软件生命周期的类比关系

⭐⭐

K8s应用部署流程

1. 制作镜像(Dockerfile)→ 2. 使用Deployment部署 → 3. Service/Ingress暴露应用 → 4. 日常运维(监控/更新/架构优化)

镜像与环境一致性是关键优势,需掌握Service与Pod的端口映射关系

⭐⭐⭐

核心资源对象

- Deployment:高级控制器,自动管理Pod

- Pod:最小调度单元(1或多个容器)

- Service:负载均衡,暴露Pod服务

Deployment与Pod的创建关系(非直接创建容器)是易混淆点

⭐⭐⭐⭐

YAML文件语法

- 缩进表示层级(空格非Tab)

- ---分隔多资源

- #注释

- 键值对冒号后需空格

缩进错误是常见报错原因,需注意符号后空格规则

⭐⭐⭐

实践案例

部署Nginx示例:

1. kubectl create deployment web --image=nginx

2. 通过Service暴露targetPort(镜像内应用端口,如80)

targetPort需匹配镜像内应用端口(非Service端口)

⭐⭐⭐⭐

课程安排

后续重点讲解:

- Deployment控制器

- Pod管理/调度

- Service配置

Deployment是80%场景的部署核心

⭐⭐⭐

http://www.lryc.cn/news/586487.html

相关文章:

  • Java ThreadLocal详解:从原理到实践
  • Arduino 无线通信实战:使用 RadioHead实现 315MHz 433M模块数据传输
  • AV1比特流结构
  • Paimon Lookup 哈希文件和Sort文件选择
  • Claude code在Windows上的配置流程
  • 内存dmp文件太大导致计算机登录异常
  • 「日拱一码」025 机器学习——评价指标
  • 基于SEP3203微处理器的嵌入式最小硬件系统设计
  • 19th Day| 530.二叉搜索树的最小绝对差,501.二叉搜索树中的众数, 236.二叉树的最近公共祖先
  • 电子基石:硬件工程师的器件手册 (五) - 三极管:电流放大的基石与开关的利刃
  • 敏捷开发方法全景解析
  • ABSD(基于架构的软件开发)深度解析:架构驱动的工程范式
  • day051-ansible循环、判断与jinja2模板
  • java进阶(一)+学习笔记
  • (一)一阶数字低通滤波器---原理及其推导
  • 前后端分离项目的完整部署(Jenkins自动化部署)
  • 什么是数据库同步软件?为什么要关注数据库同步技术?
  • 阻有形,容无声——STA 签核之RC Corner
  • 【MaterialDesign】谷歌Material(Google Material Icons) 图标英文 对照一览表
  • Kotlin文件
  • AI大模型(七)Langchain核心模块与实战(二)
  • Java SE--抽象类和接口
  • Linux系统编程——目录 IO
  • JavaScript:移动端特效--从触屏事件到本地存储
  • 一文理解缓存的本质:分层架构、原理对比与实战精粹
  • 深入理解设计模式之工厂模式:创建对象的艺术
  • Cypress与多语言后端集成指南
  • 数据结构——散列表
  • 为什么有些PDF无法复制文字?原理分析与解决方案
  • Cursor创建Spring Boot项目