k8s yaml文件总结

发布时间 2023-09-22 21:12:48作者: 枫飘过的天1

k8s支持yaml和JSON格式创建资源对象,json用于接口之间消息传递,适用于开发;yaml格式用于配置和管理,适用于云平台管理,yaml简洁非标记性语言

1.yaml相关基础概念
   yaml语法规则:
   大小写敏感;缩进表示层级关系;缩进不允许使用tab键,只允许使用空格;#表示注释 ---为可选分隔符,当需要再一个文件定义多个结构时使用
   k8s两种结构类型
   maps:字典,Key:Value的键值对信息 如:apiVersion: v1
   lists:列表,即数组。

   例如:
   args
   -beijing
   -shanghai
   -shenzhen
   -guangzhou
2.yaml常见语法
   apiVersion当前所有可用API版本,kubectl api-versions 查看。常用6个apiverion:
   v1:
   apps/v1: Kubernetes API的稳定版本,包含很多核心对象:pod、service等
   batch/v1: 包含一些通用的应用层的api组合,如:Deployments, RollingUpdates, and ReplicaSets
   autoscaling/v1: 包含与批处理和类似作业的任务相关的对象,如:job、cronjob
   networking.k8s.io/v1: 允许根据不同的资源使用指标自动调整容器
   networking.k8s.io/v1: 用于Ingress
   rbac.authorization.k8s.io/v1: 用于RBAC
   kind:资源对象类型,如 pod、deployment、statefulset、job、cronjob
   metadata:常用的配置项有 name,namespace,即配置其显示的名字与归属的命名空间
   spec:个嵌套字典与列表的配置项,也是主要的配置项,支持的子项非常多,根据资源对象的不同,子项会有不同的配置

3.yaml文件运行
   例1:创建 deployment 资源
   #kubectl create -f nginx.yaml
apiVersion: apps/v1 # 1.9.0 之前的版本使用 apps/v1beta2,可通过命令 kubectl api-versions 查看
kind: Deployment #指定创建资源的角色/类型
metadata: #资源的元数据/属性
name: nginx-deployment #资源的名字,在同一个namespace中必须唯一
spec:
replicas: 2 #副本数量2
selector: #定义标签选择器
matchLabels:
app: web-server
template: #这里Pod的定义
metadata:
labels: #Pod的label
app: web-server
spec: # 指定该资源的内容
containers:
- name: nginx #容器的名字
image: nginx:1.12.1 #容器的镜像地址
ports:
- containerPort: 80 #容器对外的端口
   例2:创建pod资源
#kubectl create -f pod-redis.yaml //创建 pod 资源
apiVersion: v1
kind: Pod
metadata:
name: pod-redis
labels:
name: redis
spec:
containers:
- name: pod-redis
image: docker.io/redis
ports:
- containerPort: 80 #容器对外的端口
   例3:创建service
   $ kubectl create -f httpd-svc.yaml //创建 service 资源
apiVersion: v1
kind: Service # 指明资源类型是 service
metadata:
name: httpd-svc # service 的名字是 httpd-svc
labels:
name: httpd-svc
spec:
ports: # 将 service 8080 端口映射到 pod 的 80 端口,使用 TCP 协议
- port: 8080
targetPort: 80
protocol: TCP
selector:
run: httpd # 指明哪些 label 的 pod 作为 service 的后端