当前位置: 首页 > 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.dtcms.com/a/276727.html

相关文章:

  • PyVision:基于动态工具的具身智能体
  • 剑指offer——队列栈:用两个栈实现队列
  • 模型驱动的架构MDA的案例
  • 如何配置pip使用国内镜像?
  • 2D转换综合写法顺序,以及注意事项
  • 【理念●体系】模板规范篇:打造可标准化复用的 AI 项目骨架
  • 68 指针的减法操作
  • C语言文件读操作详解:使用fgets函数实现安全的按行读取
  • 在YOLO-World中集成DeformConv、CBAM和Cross-Modal Attention模块的技术报告
  • 进制转换算法详解及应用
  • 红旗新能源车:驾驭梦想,驶向未来
  • TDengine 使用最佳实践(1)
  • 系统性能评估方法深度解析:从经典到现代
  • 【C/C++】编译期计算能力概述
  • 《汇编语言:基于X86处理器》第7章 整数运算(3)
  • Noting
  • L1正则化 VS L2正则化
  • 全连接网络 和卷积神经网络
  • 《Java Web程序设计》实验报告一 Java Web环境配置
  • Cypress与多语言后端集成指南
  • C++——类和对象的相关知识点
  • 复习笔记 31
  • RHCSA(2)
  • STM32--USART串口通信的应用(第一节串口通信的概念)
  • docker网络与数据持久化
  • SolidWorks并发不足频出,浮动许可还能怎么优化?
  • Python 中 enumerate(s) 和 range() 的对比
  • 博途多重背景、参数实例--(二)
  • 分布式系统高可用性设计 - 缓存策略与数据同步机制
  • 飞算JavaAI:重新定义Java开发效率的智能引擎