• 第四章 Kubernetes进阶之yaml配置文件


      YAML是一种简洁的非标记语言

      百度百科:https://baike.baidu.com/item/YAML/1067697?fr=aladdin

      语法格式

    • 缩进表示层级关系
    • 不支持制表符tab缩进,使用空格缩进
    • 通常开头缩进2个空格
    • 字符后缩进1个空格,如冒号,逗号等
    • "--"表示YAML格式,一个文件的开始
    • "#"注释

      yaml文件示例nginx-deployment.yaml

    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 否则启动会出现以下报错

    # 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

    kubectl create -f nginx-deployment.yaml
    

       通过yaml文件创建service

    # 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
    

       创建

    kubectl create -f nginx-service.yaml 
    

       查看,对外暴露43208端口

    # 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文件

    kubectl expose deployment nginx-deployment --port=80 --type=NodePort --target-port=80 --name=nginx-service --dry-run -o yaml
    

       使用yaml文件创建应用与kucectl直接创建应用的不同之处是便于留存,而且可以把刚刚两个配置文件放在一起进行配置

       使用命令生成yaml配置文件

    kubectl run nginx --image=nginx:latest --port=80 --replicas=3 --dry-run -o yaml
    # --dry-run 测试不运行
    #-o yaml 输出为yaml格式
    

       生成的yaml文件重定向输出至文件

    kubectl run nginx --image=nginx:latest --port=80 --replicas=3 --dry-run -o yaml >my-deploy.yaml
    
    # 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命令导出

    kubectl get deploy/nginx --export -o yaml > my-deploy2.yaml
    

       Pod容器字段忘记拼写了可以通过以下命令查看

    kubectl explain pods.spec.containers
    
  • 相关阅读:
    nginx.conf 配置解析之 http配置
    nginx.conf 配置解析之 events配置
    nginx.conf 配置解析之 全局配置
    nginx.conf 配置解析之文件结构
    centos7 编译安装nginx1.16.0( 完整版 )
    SQL注入是什么?如何防止?
    数据库的脏读、不可重复读、幻读以及不可重复读和幻读的区别
    唯一索引与主键索引的比较
    分布式session的几种实现方式
    反向代理和负载均衡
  • 原文地址:https://www.cnblogs.com/minseo/p/12407668.html
Copyright © 2020-2023  润新知