yaml文件各字段意义注解

K8S是基于声明式API和资源对象进行交互的;为了便于管理,通过使用yaml文件对API

每个API对象都有三大类属性:1、元数据:metadata

                                                 2、规范:spec

                                                 3、状态:status

其中spec中可以定义期望状态,而实际状态是status

K8S创建POD并不是直接创建的,而是先创建一个POD 控制器,然后通过控制器来创建POD,由控制器来控制pod的生命周期

一、创建

1、 Deployment控制器的yaml文件,通过Deployment控制器来创建pod

kind: Deployment        #资源类型是Deployment
apiVersion: apps/v1    #api版本,查询它的api版本kubectl explain deployment.apiVersion
metadata:               #定义pod元数据信息,可查询它的下级子字段kubectl explain deployment.metadata
  labels:               #定义Deployment控制器的标签,可以给HPA控制器使用,它是对POD做控制伸缩的,HPA就是通过这个标签找到控制器,然后控制POD
    app: nginx-deployment-label  #标签名称以键值形式定义,可以定义多个,这里标签是app值是后面字符
  name: nginx-deployment   #deployment资源的名称
  namespace: n90          #deployment所属的namespace,如果不写该字段默认是defaule
spec:          #定义Deployment中容器详细信息,可通过kubectl explain查询
  replicas: 1           #定义创建出pod的副本数,默认值是1个pod
  selector:   #定义标签选择器,跟上面的Deployment标签不是一回事,控制器通过标签选择器来到template模板中找符合标签的pod
    matchLabels:        #定义匹配的标签,必须要设置
      app: nginx-selector       #匹配的目标pod标签,控制器通过这个标签匹配下面的pod
  template:             #定义模板,用来描述需要创建的pod作用
    metadata:           #定义模板元数据
      labels:             #这个labels定义的下面的标签会继承给下面所有metadata模板中创建的pod
        app: nginx-selector   #这个标签会继承给下面的pod,与上面模板中matchLabels定义的标签一样
    spec:                  #定义pod的详细信息
      containers:          #定义pod中容器列表,可以定义多个pod
      - name:   nginx-container          #容器名称
        image: nginx:laster  #容器镜像
        command: ["/apps/tomcat/bin/run_tomcat.sh"]   #容器启动执行的命令或脚本
        imagePullPolicy: Always                       #镜像拉取策略
        ports:                    #定义容器端口列表
        - containerPort: 443     #定义一个端口
          protocol: TCP           #定义协议
          name: http              #端口名称
        env:                      #给容器传递环境变量
        - name: "password"        #变量名称,必须引号引起来
          value: "123"            #上面变量的值
        resources:      #对资源的上下限值设置(一个是limits上限,一个是requests下限)
          limits:                 #资源上限设置,不能超过资源上限
            cpu: 500m   #CPU限制,单位为core,可以写0.5或500m,一核CPU在K8S被拆分为1000m
            memory: 2Gi           #内存限制,单位可为Mib/Gib,不能
          requests:               #资源的下限设置,不能低于资源下限
            cpu: 200m             #cpu请求数,启动容器的最小CPU资源需求
            memory: 512Mi         #内存请求数,启动容器的最小的内存资源需求

2、service资源的yaml文件,通过service来代理pod,实现对外提供访问

kind: Service            #类型为service
apiVersion: v1           #定义service API版本
metadata:                #定义service元数据
  lables:               #定义标签
    app: linux-nginx     #定义service标签内容
  name:                 #定义service名称,此名称会被DNS解析
  namespace: n90        #定义service所在namespace,要跟Deployment控制器在同一个namespace里面
spec:                   #定义service详细信息
  type: NodePort        #service类型,一共有四种
  ports:                #定义访问端口,一个service可以定义多个端口的映射关系
  - name: http          #定义端口名称
    port: 80            #定义service的端口,service端口可以跟pod,node端口都不一样,它是K8S中一个独立的子网
    protocol: TCP       #协议类型
    targetPort: 80      #目标pod的端口,当访问宿主机的30001端口时就会转到这边pod的80端口
    nodePort: 30001     #node节点暴露的端口,如果没写这个nodePort,那么创建service的时候会自动创建并随即分配端口
  selector:             #service的标签选择器,定义要访问的目标pod
    app: linux-nginx    #将流量路由到选择的podshang ,必须是Deployment.spec.selector.matchLabels

    #service之所以知道把宿主机某某端口流量转发至对应pod的某个端口,之所以知道要转给哪些pod,是因为service的标签选择器
    #只有带有app: linux-nginx标签的pod,service才会把流量转发过去

下面的443是service端口,30000是宿主机端口

查看下service后面有哪些pod

第一列是service的名字,NAME就是pod名称,ENDPOINTS是service的后端服务器,是通过service的标签选择器自动匹配的

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值