Kubernetes YAML 文件入门指南(初学者版)
目标命令/方法查看 API 版本创建资源查看 Pod查看 Service生成 YAML查帮助kubectl explain 资源字段。
一、YAML 是什么?
YAML 是一种简洁、易读的配置文件格式,常用于 Kubernetes 中定义资源(如 Pod、Deployment、Service 等)。
✅ YAML 的基本规则:
大小写敏感(name 和 Name 不一样)
用缩进表示层级关系(类似 Python)
只能用空格缩进,不能用 Tab 键
同一层级的元素必须左对齐
在冒号 :、短横线 -、逗号 , 后面要加一个空格
文件开头可以用 --- 表示新文档开始(可选)
用 # 写注释
💡 小贴士:YAML 比 JSON 更适合人类编写和阅读!
二、Kubernetes 资源版本怎么看?
运行以下命令查看当前集群支持的 API 版本:
kubectl api-versions

常见版本说明:
apps/v1:推荐用于生产环境(如 Deployment、StatefulSet)
v1:核心资源(如 Pod、Service)
带 beta 的版本(如 v1beta1)是测试版,不建议用于生产
三、一个完整的 YAML 示例:部署 Nginx
步骤 1:创建 Deployment(管理 Pod 副本)
# nginx-deployment.yaml
apiVersion: apps/v1 # 使用 apps/v1 API 版本
kind: Deployment # 资源类型:Deployment
metadata:
name: nginx-deployment # 资源名称(必须唯一)
labels:
app: nginx # 标签,用于识别
spec:
replicas: 3 # 启动 3 个副本
selector:
matchLabels:
app: nginx # 选择带有 app=nginx 标签的 Pod
template: # Pod 模板
metadata:
labels:
app: nginx # Pod 的标签,必须和上面一致
spec:
containers:
- name: nginx
image: nginx:1.15.4 # 使用的镜像
ports:
- containerPort: 80 # 容器内部监听的端口
创建并查看:
kubectl create -f nginx-deployment.yaml
kubectl get pods -o wide
步骤 2:创建 Service(对外暴露服务)
# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
spec:
type: NodePort # 类型:NodePort(外部可访问)
ports:
- port: 80 # Service 在集群内的端口
targetPort: 80 # 流量转发到 Pod 的哪个端口
nodePort: 35680 # 可选,不写会自动分配(范围 30000-32767)
selector:
app: nginx # 匹配带有 app=nginx 标签的 Pod
创建并访问:
kubectl create -f nginx-service.yaml
kubectl get svc
输出示例:

✅ 现在你可以通过浏览器访问任意节点的 IP + 端口,例如:
👉 http://192.168.10.160:31767

四、搞懂 Kubernetes 中的“端口”区别
| 名称 | 作用 | 示例 |
| containerPort | 容器内部监听的端口 | 80(Nginx 默认) |
| targetPort | Service 转发到 Pod 的端口 | 通常 = containerPort |
| port | Service 在集群内部的端口 | clusterIP:80 |
| nodePort | 外部通过节点 IP 访问的端口 | 192.168.x.x:35680 |
🔁 流量路径:
外部 → nodeIP:nodePort → Service:port → Pod:targetPort → 容器:containerPort
五、如何快速生成 YAML 文件?(不用手写!)
方法 1:用 --dry-run 生成模板
# 生成 Deployment 模板
kubectl create deployment nginx --image=nginx --replicas=3 --port=80 --dry-run=client -o yaml > nginx-deploy.yaml
# 生成单个 Pod 模板
kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o yaml > nginx-pod.yaml
--dry-run=client 表示只打印 YAML,不真正创建资源。
方法 2:从现有资源导出 YAML
# 导出已有的 Service 配置
kubectl get svc nginx-service -o yaml > my-svc.yaml
# 或直接编辑(复制内容再保存为文件)
kubectl edit svc nginx-service
六、遇到不懂的字段怎么办?
用 kubectl explain 查看官方解释!
# 查看 Pod 中 containers 的字段说明
kubectl explain pods.spec.containers
# 查看 Deployment 的 template 字段
kubectl explain deployments.spec.template
💡 建议:一层层深入查看,比如先 explain deployments,再 explain deployments.spec……
七、给初学者的学习建议
多看官方或他人写的 YAML,先学会“读懂”
不要从零手写,用 --dry-run 生成后修改
善用 kubectl explain 解决字段疑问
理解标签(labels)和选择器(selector)的关系 —— 这是连接 Service 和 Pod 的关键!
先在测试环境练习,再上生产
✅ 总结
| 目标 | 命令/方法 |
| 查看 API 版本 | kubectl api-versions |
| 创建资源 | kubectl create -f xxx.yaml |
| 查看 Pod | kubectl get pods |
| 查看 Service | kubectl get svc |
| 生成 YAML | kubectl run ... --dry-run=client -o yaml |
| 查帮助 | kubectl explain 资源字段 |
更多推荐



所有评论(0)