第四章 Kubernetes进阶之yaml配置文件
YAML是一种简洁的非标记语言
百度百科:https://baike.baidu.com/item/YAML/1067697?fr=aladdin
语法格式
- 缩进表示层级关系
- 不支持制表符tab缩进,使用空格缩进
- 通常开头缩进2个空格
- 字符后缩进1个空格,如冒号,逗号等
- "--"表示YAML格式,一个文件的开始
- "#"注释
yaml文件示例nginx-deployment.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | apiVersion: apps / v1 #apiVersion是当前配置格式的版本 kind: Deployment #kind是要创建的资源类型,这里是Deploymnet metadata: name: nginx - deployment labels: app: nginx spec: #spec部分是该Deployment的规则说明 replicas: 3 #relicas指定副本数量,默认为1 selector: matchLabels: app: nginx template: #template定义Pod的模板,这是配置的重要部分 metadata: #metadata定义Pod的元数据,至少要顶一个label,label的key和value可以任意指定 labels: app: nginx spec: #spec描述的是Pod的规则,此部分定义pod中每一个容器的属性,name和image是必需的 containers: - name: nginx image: nginx: 1.15 . 4 ports: - containerPort: 80 |
PS:注释#需要间隔一个空格不能间隔多个空格或者tab 否则启动会出现以下报错
1 2 | # kubectl create -f nginx-deployment.yaml error: error parsing nginx - deployment.yaml: error converting YAML to JSON: yaml: line 8 : could not find expected ':' |
通过yaml文件创建deployment
1 | kubectl create - f nginx - deployment.yaml |
通过yaml文件创建service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # cat nginx-service.yaml apiVersion: v1 kind: Service #创建类型是service metadata: creationTimestamp: null labels: app: nginx name: nginx - service spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx type : NodePort |
创建
1 | kubectl create - f nginx - service.yaml |
查看,对外暴露43208端口
1 2 3 4 | # kubectl get svc NAME TYPE CLUSTER - IP EXTERNAL - IP PORT(S) AGE kubernetes ClusterIP 10.10 . 10.1 <none> 443 / TCP 4d23h nginx - service NodePort 10.10 . 10.168 <none> 80 : 43208 / TCP 17s |
访问
可以通过以下命令不运行而生成yaml文件
1 | kubectl expose deployment nginx - deployment - - port = 80 - - type = NodePort - - target - port = 80 - - name = nginx - service - - dry - run - o yaml |
使用yaml文件创建应用与kucectl直接创建应用的不同之处是便于留存,而且可以把刚刚两个配置文件放在一起进行配置
使用命令生成yaml配置文件
1 2 3 | kubectl run nginx - - image = nginx:latest - - port = 80 - - replicas = 3 - - dry - run - o yaml # --dry-run 测试不运行 #-o yaml 输出为yaml格式 |
生成的yaml文件重定向输出至文件
1 | kubectl run nginx - - image = nginx:latest - - port = 80 - - replicas = 3 - - dry - run - o yaml >my - deploy.yaml |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # cat my-deploy.yaml apiVersion: apps / v1 kind: Deployment metadata: creationTimestamp: null labels: run: nginx name: nginx spec: replicas: 3 selector: matchLabels: run: nginx strategy: {} template: metadata: creationTimestamp: null labels: run: nginx spec: containers: - image: nginx:latest name: nginx ports: - containerPort: 80 resources: {} status: {} |
对于已经在运行的的可以使用get命令导出
1 | kubectl get deploy / nginx - - export - o yaml > my - deploy2.yaml |
Pod容器字段忘记拼写了可以通过以下命令查看
1 | kubectl explain pods.spec.containers |
分类:
Kubernetes入门进阶课程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2018-03-04 Openstack使用NFS作为后端存储
2018-03-04 Openstack块存储cinder安装配置