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

K8s工作流程与YAML实用指南

K8s 工作流程

K8s 采用声明式管理(用户说"要什么",K8s 负责"怎么做")方式,通过 YAML 文件描述期望的状态,K8s控制平面会自动确保实际状态与期望状态一致。
核心工作流程如下:
用户提交 YAML → API Server → etcd 存储 → 控制器监听 → 调度器分配 → Kubelet 执行 → 运行状态监控

  • 用户定义期望状态:通过 YAML 文件定义工作负载
  • API Server 接收:验证并存储到 etcd
  • 控制器工作:各种控制器监听资源变化
  • 调度决策:Scheduler 决定 Pod 运行在哪个节点
  • 节点执行:Kubelet 拉取镜像并启动容器
  • 持续监控:控制器持续确保实际状态符合期望

Kubernetes Yaml标准结构

实际上用户只用考虑怎么编写yaml文件布置任务。

YAML 基础语法结构
#注释以 # 开头
key: value                    # 键值对
string_value: "Hello World"   # 字符串
number_value: 42              # 数字
boolean_value: true           # 布尔值
null_value: null              # 空值#数据结构类型
#对象/映射(Object/Mapping)
person:name: "张三"age: 30city: "北京"
#数组/列表(Array/List)
fruits:- apple- banana- orange
#或者内联格式
fruits: [apple, banana, orange]#嵌套结构
company:name: "科技公司"employees:- name: "李四"position: "工程师"- name: "王五"position: "设计师"locations:- "北京"- "上海"
Kubernetes YAML 文件标准结构

四大核心部分

#1. API 版本
apiVersion: apps/v1
#e.g.
apiVersion: apps/v1        # Deployment, ReplicaSet, DaemonSet
apiVersion: v1             # Pod, Service, ConfigMap
apiVersion: batch/v1       # Job
apiVersion: batch/v1beta1  # CronJob#2. 资源类型
kind: Deployment
#e.g.
kind: Deployment    # 部署
kind: Service       # 服务
kind: ConfigMap     # 配置映射
kind: Secret        # 密钥
kind: Pod           # Pod
#工作负载类型:
#Deployment:长期运行的无状态应用
#StatefulSet:有状态应用(如数据库)
#DaemonSet:每个节点运行一个实例(如日志收集)
#Job/CronJob:一次性任务或定时任务#3. 元数据
metadata:name: my-appnamespace: defaultlabels:app: my-appversion: v1.0
#e.g. 
metadata:name: my-application           # 必需:资源名称namespace: production          # 可选:命名空间labels:                        # 可选:标签app: web-serverenvironment: productionversion: "1.0"annotations:                   # 可选:注解description: "主要的web服务器"created-by: "开发团队"#4. 规格定义
spec:# 具体配置内容
#e.g.
spec:replicas: 3                    # 副本数量selector:                      # 选择器matchLabels:app: web-servertemplate:                      # Pod 模板metadata:labels:app: web-serverspec:containers:                # 容器定义- name: web-containerimage: nginx:1.20ports:- containerPort: 80env:                     # 环境变量- name: ENV_VARvalue: "production"resources:               # 资源限制requests:memory: "64Mi"cpu: "250m"limits:memory: "128Mi"cpu: "500m"
完整的 Deployment 示例
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentnamespace: defaultlabels:app: nginxenvironment: productionannotations:description: "Nginx web server deployment"
spec:replicas: 3strategy:type: RollingUpdaterollingUpdate:maxSurge: 1maxUnavailable: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.20ports:- containerPort: 80name: httpenv:- name: NGINX_PORTvalue: "80"resources:requests:memory: "64Mi"cpu: "250m"limits:memory: "128Mi"cpu: "500m"livenessProbe:httpGet:path: /port: 80initialDelaySeconds: 30periodSeconds: 10readinessProbe:httpGet:path: /port: 80initialDelaySeconds: 5periodSeconds: 5restartPolicy: Always

实际工作示例

apiVersion: apps/v1
kind: Deployment
metadata:name: web-app
spec:replicas: 3          # 安排:运行3个副本selector:matchLabels:app: webtemplate:metadata:labels:app: webspec:containers:- name: webimage: nginx:1.20  # 安排:使用nginx镜像ports:- containerPort: 80
Kubernetes 收到这个"工作安排"后会:

工作内容是创建 3 个 nginx Pod,如果某个 Pod 失败,自动重新创建,确保始终有 3 个健康的 Pod 运行。

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

相关文章:

  • 功能丰富的PDF处理免费软件推荐
  • Java补充(Java8新特性)(和IO都很重要)
  • pycharm debug的时候无法debug到指定的位置就停住不动了
  • 分布式流处理与消息传递——Kafka ISR(In-Sync Replicas)算法深度解析
  • 极大似然估计例题——正态分布的极大似然估计
  • Pull Request Integration 拉取请求集成
  • OS10.【Linux】yum命令
  • 头歌数据库课程实验(角色管理)
  • 【android bluetooth 协议分析 03】【蓝牙扫描详解 1】【扫描关键函数 btif_dm_search_devices_evt 分析】
  • SpringBoot使用ThreadLocal保存登录用户信息
  • 多模态大语言模型arxiv论文略读(102)
  • Ubuntu系统如何部署Crawlab爬虫管理平台(通过docker部署)
  • python常用库-pandas、Hugging Face的datasets库(大模型之JSONL(JSON Lines))
  • 高端装备制造企业如何选择适配的项目管理系统提升项目执行效率?附选型案例
  • 【Dv3Admin】工具权限配置文件解析
  • AI炼丹日志-22 - MCP 自动操作 Figma+Cursor 自动设计原型
  • Python爬虫:AutoScraper 库详细使用大全(一个智能、自动、轻量级的网络爬虫)
  • 2025.6.1总结
  • [嵌入式实验]实验四:串口打印电压及温度
  • LVS+Keepalived 高可用
  • Linux正则三剑客篇
  • HTML5 视频播放器:从基础到进阶的实现指南
  • 鸿蒙HarmonyOS (React Native)的实战教程
  • 函数栈帧深度解析:从寄存器操作看函数调用机制
  • 【计算机网络】第3章:传输层—可靠数据传输的原理
  • rv1126b sdk移植
  • 第6节 Node.js 回调函数
  • OpenCV CUDA模块直方图计算------在 GPU上执行直方图均衡化(Histogram Equalization)函数equalizeHist
  • 构建系统maven
  • day13 leetcode-hot100-23(链表2)