Kubernetes 核心技术栈、操作步骤与 YAML 用法全解析
Kubernetes 核心技术栈、操作步骤与 YAML 用法全解析结合文档中 Kubernetes 入门实战的核心内容以下梳理涉及技术栈、核心操作步骤、YAML 语言写法与作用并提供可直接实操的YAML 实例覆盖 Pod、Job、CronJob 三大核心对象。一、涉及的核心技术栈本次内容围绕 Kubernetes 入门展开技术栈分为核心平台、工具集、核心概念 / 对象、设计思想四层层层递进支撑 K8s 容器编排能力1. 核心平台Kubernetes(k8s)容器编排领域事实标准集群级操作系统负责容器的调度、管理、监控、扩缩容等全生命周期管理源自 Google Borg 系统基于 Go 语言开发。minikube本地轻量级 K8s 集群搭建工具支持 Mac/Windows/Linux集成 K8s 绝大多数核心功能和插件适合学习与测试。2. 工具集kubectlK8s 命令行操作工具与 K8s 集群的 apiserver 交互实现对集群、Pod、Job 等资源的创建、删除、查询、调试。Docker容器运行时作为 K8s 的底层容器技术负责镜像拉取、容器创建与运行K8s 也支持 containerd/CRI-O 等其他运行时。etcdK8s 的分布式 Key-Value 数据库持久化存储集群所有资源对象和状态是 K8s 的 “配置中心”。3. 核心概念 / 资源对象按学习顺序分为基础到进阶是 K8s 操作的核心载体PodK8s 最小调度 / 管理单位封装一个或多个容器实现容器间网络、存储共享是所有上层对象的基础。Job处理离线临时任务的 K8s 对象基于 Pod 模板创建 Pod支持失败重试、超时控制、并发运行任务完成后终止。CronJob处理离线定时任务的 K8s 对象基于 Job 模板创建通过 Cron 表达式实现周期调度是 Job 的上层封装。API 对象K8s 对集群所有资源的抽象如 Pod/Job/Node通过 RESTful API 管理以 YAML 为描述载体。NamespaceK8s 资源隔离机制用于划分集群资源如 kube-system 为系统命名空间。4. 设计思想与规范声明式 API与 Docker 的 “命令式” 对立仅描述资源的目标状态由 K8s 自动实现状态收敛无需关注执行过程。面向对象设计遵循单一职责每个对象只做一件事、组合优于继承上层对象封装下层对象如 CronJob→Job→Pod。Cron 语法定时任务调度规范用于 CronJob 的周期配置与 Linux crontab 一致。二、Kubernetes 核心操作步骤所有操作基于minikube 本地集群核心流程为环境搭建→资源创建→状态查询→结果验证→资源删除通用操作步骤适用于 Pod、Job、CronJob 所有对象部分对象有专属扩展操作。通用基础操作步骤必掌握环境搭建与初始化# 1. 安装minikubeLinux Intel x86_64 curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube /usr/local/bin/ # 2. 启动minikube集群指定K8s版本保证环境一致性 minikube start --kubernetes-versionv1.23.3 --image-mirror-countrycn # 国内镜像加速 # 3. 配置kubectlminikube自带创建别名避免前缀 alias kubectlminikube kubectl -- # 永久生效将上述命令写入~/.bashrc执行source ~/.bashrc # 4. 验证环境客户端服务端版本一致即为成功 kubectl version --short资源对象通用操作YAML 方式声明式核心# 1. 创建资源通过YAML文件声明目标状态 kubectl apply -f 资源名.yml # 例kubectl apply -f pod.yml # 2. 查询资源状态查看是否运行/完成 kubectl get 资源类型 [资源名] # 例kubectl get pod、kubectl get job、kubectl get cjCronJob简写 kubectl get 资源类型 -o wide # 查看详细信息如运行节点、IP # 3. 查看资源日志验证执行结果适用于Pod/Job/CronJob kubectl logs 资源实例名 # 例kubectl logs ngx-pod、kubectl logs echo-job-pb5gh # 4. 调试资源状态异常时查看详细事件核心排错命令 kubectl describe 资源类型 资源名 # 例kubectl describe pod busy-pod # 5. 删除资源通过YAML文件或资源名删除 kubectl delete -f 资源名.yml # 推荐与创建方式一致避免遗漏 kubectl delete 资源类型 资源名 # 例kubectl delete pod ngx-pod专属扩展操作按对象划分# 进入Pod内部执行命令类似docker exec kubectl exec -it Pod名 -- 命令 # 例kubectl exec -it ngx-pod -- sh # 本地文件与Pod互传类似docker cp kubectl cp 本地文件路径 Pod名:Pod内路径 # 例kubectl cp a.txt ngx-pod:/tmpJob/CronJob 专属操作# 实时观察Pod运行状态适合看并发/调度过程 kubectl get pod -w # -wwatch实时刷新 # 查看CronJob的历史任务 kubectl get jobs # CronJob创建的临时Job会在此显示三、YAML 语言的写法、作用与核心规范YAML 是 K8s 的通用工作语言是声明式 API 的载体用于描述 K8s API 对象的目标状态K8s 通过解析 YAML 自动实现资源的创建与管理。1. YAML 的核心作用统一描述标准替代冗长的命令式指令清晰描述资源的所有配置如镜像、端口、调度规则。声明式核心仅定义 “要什么”不关注 “怎么做”由 K8s 自动完成状态收敛。易维护与版本化纯文本格式可纳入 Git 版本管理支持 CI/CD 流水线。对象组合载体通过嵌套字段实现 K8s 对象的 “组合”如 CronJob→Job→Pod符合面向对象设计思想。2. YAML 的基础语法规范K8s 专用YAML 是 JSON 的超集语法简洁缩进敏感建议 2 个空格禁止 Tab核心规范如下语法规则说明示例键值对用键: 值表示冒号后必须加空格name: ngx-pod数组 / 列表用- 元素表示代表多个同类型对象containers: - image: nginx嵌套层级用缩进表示缩进一致为同一层级spec 下的 containers 数组注释用#表示单行注释无多行注释# 这是一个Nginx Pod多对象分隔用---分隔一个 YAML 文件可定义多个 K8s 对象---\napiversion: v1\nkind: Pod字符串可加引号也可不加特殊字符如 $需加引号command: [/bin/echo]3. K8s 中 YAML 的固定结构所有 API 对象通用K8s 所有资源的 YAML 都包含4 个核心顶层字段是必写项后续所有对象都基于此扩展apiVersion: # API版本如Pod是v1Job/CronJob是batch/v1 kind: # 资源对象类型如Pod/Job/CronJob/Node metadata: # 元信息资源的唯一标识 name: # 资源名集群内同命名空间唯一 labels: # 标签键值对用于资源筛选/关联可选 spec: # 规格声明资源的核心配置描述“目标状态”不同对象此字段不同4. 核心对象的 YAML 专属字段核心区别不同对象的核心差异在spec字段遵循组合优于继承上层对象嵌套下层对象的模板Podspec.containers数组直接定义容器配置是最基础的 YAML 结构。 Jobspec.templatePod 模板嵌套 Pod 的 spec新增completions/parallelism等任务控制字段。 CronJobspec.jobTemplateJob 模板spec.scheduleCron 表达式嵌套 Job 的 spec实现定时调度。5. YAML 快速生成技巧避免手写出错无需死记字段用 kubectl 自动生成样板文件再按需修改是生产环境最佳实践# 定义通用变量空运行输出YAML格式 export out--dry-runclient -o yaml # 1. 生成Pod样板 kubectl run 资源名 --image镜像名 $out pod.yml # 例kubectl run ngx --imagenginx:alpine $out ngx-pod.yml # 2. 生成Job样板 kubectl create job 资源名 --image镜像名 $out job.yml # 例kubectl create job echo-job --imagebusybox $out echo-job.yml # 3. 生成CronJob样板--schedule指定Cron表达式先留空 kubectl create cj 资源名 --image镜像名 --schedule $out cronjob.yml # cjCronJob简写四、可直接实操的 YAML 实例从基础到进阶所有实例均经过验证可直接保存为.yml文件通过kubectl apply -f 文件名.yml创建配套验证命令新手可按Pod→Job→CronJob顺序实操。实例 1基础 PodNginx 在线服务作用运行长期在线的 Nginx 服务演示 Pod 的核心配置容器、端口、镜像拉取策略。文件名ngx-pod.ymlapiVersion: v1 kind: Pod metadata: name: ngx-pod labels: # 自定义标签可选 env: demo tier: front spec: containers: # 容器数组一个Pod可定义多个容器 - name: ngx # 容器名Pod内唯一 image: nginx:alpine # 容器镜像轻量级Alpine版本 imagePullPolicy: IfNotPresent # 镜像拉取策略本地有则不用拉 ports: # 容器暴露端口仅声明不做端口映射 - containerPort: 80 # Nginx默认端口实操验证kubectl apply -f ngx-pod.yml kubectl get pod # 查看状态为Running即为成功 kubectl exec -it ngx-pod -- sh # 进入Pod执行nginx -v验证版本以上内容覆盖了文档中 K8s 入门的核心知识点实操实例可直接运行建议从基础 Pod 开始逐步掌握 Job 和 CronJob 的用法理解组合优于继承的设计思想为后续学习 Deployment、Service 等高级对象打下基础。谢谢阅读希望对你有帮助至此dockerk8s集群部署管理容器编排我们暂告一段落