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

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.xdnf.cn/news/723709.html

相关文章:

  • 企业信息化集成方案:聚水潭·奇门数据对接金蝶云星空
  • 历年中国科学技术大学计算机保研上机真题
  • 无人机桥梁3D建模、巡检、检测的航线规划
  • 解决访问网站提示“405 很抱歉,由于您访问的URL有可能对网站造成安全威胁,您的访问被阻断”问题
  • 最悉心的指导教程——阿里云创建ECS实例教程+Vue+Django前后端的服务器部署(通过宝塔面板)
  • 使用 Zabbix 监控 MySQL 存储空间和性能指标的完整实践指南
  • OramaCore 是您 AI 项目、答案引擎、副驾驶和搜索所需的 AI 运行时。它包括一个成熟的全文搜索引擎、矢量数据库、LLM界面和更多实用程序
  • 编译rustdesk,使用flutter、hwcodec硬件编解码
  • 深度学习笔记25-RNN心脏病预测(Pytorch)
  • docker-compose搭建prometheus以及grafana
  • 工厂方法模式(Factory Method)深度解析:从原理到实战优化
  • 车辆减振器焊口疲劳试验台
  • powershell 中 invoke-expression 报错解决
  • 华为欧拉系统中部署FTP服务与Filestash应用:实现高效文件管理和共享
  • AsyncIOScheduler与BackgroundScheduler的线程模型对比
  • iOS 集成网易云信的音视频呼叫组件
  • leetcode:479. 最大回文数乘积(python3解法,数学相关算法题)
  • [Javascript进阶]JSON.stringify与JSON.parse详解
  • 公网ip怎么申请和使用?本地只有内网IP如何提供外网访问?
  • 实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.8 R语言解题
  • 【C++】STL详解(四)---Stack和Queue
  • Vue3中Element-Plus中el-input及el-select 边框样式
  • 【设计模式】观察者模式
  • Java 大数据处理:使用 Hadoop 和 Spark 进行大规模数据处理
  • Eureka实战:怎么配置优化以减少服务发现延迟
  • 计算机网络第一章课后练习
  • 【数据库】数据库恢复技术
  • 西瓜书第九章——集成学习
  • React与Vue核心区别对比
  • day14 leetcode-hot100-27(链表6)