• k8s-yml文件详解


    Nginx 业务 yaml 文件详解:

    cat /opt/linux-yml/nginx.yml
    
    kind: Deployment #对象类型,是deployment控制器,kubectl explain Deployment
    apiVersion: extensions/v1beta1  #指定这个对象属于哪个api分组,它的API版本是多少,
    								# kubectl explain Deployment.apiVersion
    metadata:     #pod的元数据信息,kubectl explain Deployment.metadata
      labels:     #自定义pod的标签,kubectl explain Deployment.metadata.labels
        app: linux-nginx-deployment-label #标签名称为app值为linux-nginx-deployment-label, 后面会用到此标签
      name: linux-nginx-deployment        #pod的名称 
      namespace: linux-ns                 #把pod的创建到指定的namespace,默认是default
    spec:            #定义deployment中容器的详细信息,kubectl explain Deployment.spec
      replicas: 1    #创建出的pod的副本数,即多少个pod,默认值为1 
      selector:      #定义标签选择器
        matchLabels: #定义匹配的标签,必须要设置
          app: linux-nginx-selector   #匹配的目标标签
      template:      #定义模板,必须定义,模板是起到描述要创建的pod的作用
        metadata:    #定义模板元数据
          labels:    #定义模板label,Deployment.spec.template.metadata.labels
            app: linux-nginx-selector   #定义标签,必须等于 matchLabels 定义的标签
        spec:          #定义pod信息
          containers:  #定义pod中容器列表,可以多个至少一个,pod不能动态增减容器(想新添加容器,需要把原有pod删除,重新创建pod)
          - name: linux-nginx-container                      #容器名称
            image: harbor.linux.com/web-images/nginx:1.14.2  #镜像地址
            #command: ["/apps/tomcat/bin/run_tomcat.sh"]     #容器启动执行的命令或脚本           
            #imagePullPolicy: IfNotPresent                   #本地有指定的镜像,就不去harbor中拉取
            imagePullPolicy: Always    #拉取镜像策略;不管本地有没有所指定的镜像,都去harbor拉取
            ports:                #定义容器端口列表
            - containerPort: 80   #定义一个端口
              protocol: TCP       #端口协议,TCP或者UDP
              name: http          #端口名称
            - containerPort: 443  #定义一个端口
              protocol: TCP       #端口协议 
              name: https         #端口名称
            env:                  #给容器传递配置的环境变量
            - name: "password"    #变量名称。必须要用引号引起来
              value: "123456"     #当前变量的值
            - name: "age"         #另一个变量名称 
              value: "18"         #另一个变量的值
            resources:            #对容器资源的请求设置和限制设置
              limits:             #硬限制;限制容器使用宿主机资源上限
                cpu: 2            #cpu的限制,单位为core数,可以写0.5或者500m(毫核)等CPU压缩值,1000毫核
                memory: 2Gi       #内存限制,单位可以为Mib/Gib,将用于docker run --memory参数
              requests:  #资源请求的设置;当构建pod时,过滤出哪些node节点的剩余资源符合下面所指定的值,则创建pod时,才有可能把pod往该node节点调度;如果不够下面所指定的值,则创建pod时不会把pod往不符合要求的node上调度
                cpu: 1        #cpu请求数,容器启动的初始可用数量,可以写0.5或者500m等CPU压缩值
                memory: 512Mi #内存请求大小,容器启动的初始可用数量,用于调度pod时候使用
    
    ---
    kind: Service    #对象类型为service;pod要想被外部访问,就必须指定一个service,service会在宿主机打开一个nodeport;service不指定nodeport,则该service仅限于k8s内部调用	     
    apiVersion: v1   #service API版本,service.apiVersion 
    metadata:        #定义service元数据,service.metadata
      labels:        #自定义service的标签,service.metadata.labels
        app: linux-nginx     #定义service标签的内容
      name: linux-nginx-spec #定义service的名称,此名称会被DNS解析
      namespace: linux-ns    #该service隶属于的namespaces名称,即把service创建到哪个namespace里面,并且service必须与pod在同一个namespace中,否则在调用时,service找不到所调用的pod 
    spec:               #定义service的详细信息,service.spec
      type: NodePort    #NodePort表示在宿主机打开一个监听端口;service的类型,定义服务的访问方式,默认为ClusterIP(不会再宿主机打开一个监听端口,只为k8s内部提供服务),service.spec.type
      ports:            #定义访问端口, service.spec.ports
      - name: http      #定义一个端口名称
        port: 80        #service的端口 
        protocol: TCP   #协议类型;service是k8s内部的一个传输层的负载均衡 
        targetPort: 80  #目标pod的端口 
        nodePort: 30001 #node节点暴露的端口
      - name: https     #SSL 端口
        port: 443       #service 443端口 
        protocol: TCP   #端口协议 
        targetPort: 443 #目标pod端口 
        nodePort: 30043 #node节点暴露的SSL端口
      selector:   #service的标签选择器,定义把用户请求转发给指定label标签的pod;service会把符合label标签的pod添加到后端可被调度的endpoint列表中
        app: linux-nginx-selector #将流量转发到指定的pod上,须等于Deployment.spec.selector.matchLabels
    

    注意事项

    提前创建好yml文件,并创建好pod运行所需要的namespace的yml文件等资源,一般创建namespace的操作,会单独存放在一个yml文件中
    
    cat /opt/linux-yml/linux-ns.yml
    
    apiVersion: v1     #API版本 
    kind: Namespace    #类型为namespac 
    metadata:          #定义元数据 
      name: linux-ns   #namespace名称
    
  • 相关阅读:
    题解 [BZOJ1295][SCOI2009] 最长距离
    题解 [51nod1274] 最长递增路径
    #leetcode刷题之路21-合并两个有序链表
    #leetcode刷题之路20-有效的括号
    #leetcode刷题之路19-删除链表的倒数第N个节点
    #leetcode刷题之路18-四数之和
    #leetcode刷题之路17-电话号码的字母组合
    #leetcode刷题之路16-最接近的三数之和
    #leetcode刷题之路15-三数之和
    #leetcode刷题之路14-最长公共前缀
  • 原文地址:https://www.cnblogs.com/dongzhanyi123/p/13330313.html
Copyright © 2020-2023  润新知