8. yaml文件管理

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

文章目录

yaml文件管理

  • Kubernetes 支持 YAML 和 JSON 格式管理资源对象

    • JSON 格式主要用于 api 接口之间消息的传递
    • YAML 格式用于配置和管理YAML 是一种简洁的非标记性语言内容格式人性化较易读
  • YAML 语法格式

    • 大小写敏感
    • 使用缩进表示层级关系
    • 不支持Tab键制表符缩进只使用空格缩进
    • 缩进的空格数目不重要只要相同层级的元素左侧对齐即可通常开头缩进两个空格
    • 符号字符后缩进一个空格如冒号逗号短横杆-等
    • “—”表示YAML格式一个文件的开始用于分隔文件间
    • “#”表示注释
###查看k8s支持的API版本
kubectl api-versions
###当前版本k8s使用的API版本
kubectl api-resources

编写yaml配置文件

apiVersion: apps/v1		   #指定api版本标签
kind: Deployment		
#定义资源的类型/角色deployment为副本控制器此处资源类型可以是Deployment、Job、Ingress、Service等
metadata:					#定义资源的元数据信息比如资源的名称、namespace、标签等信息
  name: nginx-deployment	#定义资源的名称在同一个namespace空间中必须是唯一的
  labels:				    #定义Deployment资源标签(可定义多个)
    app: nginx	
spec:					#定义deployment资源需要的参数属性诸如是否在容器失败时重新启动容器的属性
  replicas: 3			#定义副本数量
  selector:				#定义标签选择器
    matchLabels:		#定义匹配标签
      app: nginx		#需与 .spec.template.metadata.labels 定义的标签保持一致
  template:				#定义业务模板如果有多个副本所有副本的属性会按照模板的相关配置进行匹配
    metadata:           ##pod资源的元信息
      labels:           
      #定义Pod副本将使用的标签需与 .spec.selector.matchLabels 定义的标签保持一致
        app: nginx
    spec:                       ##定义pod的属性
      containers:				#定义容器属性
      - name: nginx				#定义一个容器名一个 - name: 定义一个容器
        image: nginx:1.15.4		#定义容器使用的镜像以及版本
        ports:
        - containerPort: 80		#定义容器的对外的端口

##创建yaml文件的目录
cd /opt/
mkdir demo/
vim demo01-deploy.yaml

kubectl explain deployment         
##查看deployment的信息,要编写的yaml的文件的字段
apiVersion: apps/v1
kind: Deployment
metadata: 
  name: myapp-deployment
  namespace: test01
  labels: 
    app: myapp
spec: 
  replicas: 2
  selector:
    matchLabels: 
      app: myapp-pod
  template:
    metadata: 
      labels: 
        app: myapp-pod
    spec:
      containers:
      - name: myapp
        image: nginx:latest
        ports: 
        - containerPort: 80
          name: http
          protocol: TCP
##先创建  配置文件中的命名空间


##利用yaml文件创建  deployment 
kubectl apply -f demo01-deploy.yaml


##创建service资源
vim myapp-svc.yaml
apiVersion: v1
kind: Service
metadata: 
  name: myapp-service
  namespace: test01
spec: 
  selector: 
    app: myapp-pod
  ports: 
  - name: http
    port: 8080
    targetPort: 80
    nodePort: 31000
    protocol: TCP
  type: NodePort
  externalTrafficPolicy: Cluster

获取配置模板

方法一

##手动配置yaml配置文件可根据  kubectl explain  命令获取字段信息

方法二

##对于新的资源
##  利用  --dry-run   模拟创建过程但没有创建东西
kubectl create deployment ggl -n test01 --image=nginx:1.14 --replcas=3 --dry-run=client

##利用  -o  获取配置文件
kubectl create deployment ggl -n test01 --image=nginx:1.14 --replcas=3 --dry-run=client -o yaml

##将配置文件导出到文件中
kubectl create deployment ggl -n test01 --image=nginx:1.14 --replcas=3 --dry-run=client -o yaml > demo3.yaml

方法三

##对于已经存在的资源
##用get命令导出
kubectl get svc nginx-service -o yaml > my-svc.yaml
##在线编辑配置
kubectl edit svc nginx-service  
#手动复制配置再粘贴到新文件

方法四

##复制官方文档的配置文件案例
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6