当前位置: 首页 > 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.xdnf.cn/news/1110763.html

相关文章:

  • 009 ST表:静态区间最值的极致优化
  • OpenEuler操作系统测试USB摄像头
  • kettle从入门到精通 第101课 ETL之kettle DolphinScheduler调度kettle
  • 怎么在ComfyUI中查看别人训练的lora模型训练参数
  • 面试150 翻转二叉树
  • 26-计组-寻址方式
  • Git企业级开发(最终篇)
  • 手把手教你用YOLOv10打造智能垃圾检测系统
  • SpringBootloggers未授权访问漏洞处理
  • Java使用Langchai4j接入AI大模型的简单使用(四)--整合Springboot
  • 12.使用VGG网络进行Fashion-Mnist分类
  • 让 VSCode 调试器像 PyCharm 一样显示 Tensor Shape、变量形状、变量长度、维度信息
  • CSS flex
  • 安卓定制功能
  • 外设数据到昇腾310推理卡 之二dma_alloc_attrs
  • Linux系统编程——目录 IO
  • 理解小数的计算机表达
  • PyTorch神经网络实战:从零构建图像分类模型
  • 脉冲神经网络膜电位泄漏系数学习:开启时空动态特征提取的新篇章
  • 复现永恒之蓝
  • Linux - 安全排查 3
  • 飞算JavaAI:重新定义Java开发效率的智能引擎
  • python-for循环
  • 【TA/Unity】Shader基础结构
  • 强化学习、PPO和GRPO的通俗讲解
  • 创客匠人:解析创始人 IP 打造对知识变现的深层赋能
  • os.machine()详解
  • vue3 el-table动态表头
  • 菜鸟的C#学习(二)
  • TDengine 使用最佳实践(1)