K8S创建对象Yaml文件详解

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: K8S创建对象Yaml文件详解以下有回答。

K8S创建对象Yaml文件详解


创建RC


apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中


kind: ReplicationController #指定创建资源的角色/类型


metadata: #资源的元数据/属性


 name: test-rc #资源的名字,在同一个namespace中必须唯一


 labels: #设定资源的标签,详情请见


 k8s-app: apache  


   software: apache


   project: test


   app: test-rc


   version: v1


 annotations:            #自定义注解列表


   - name: String        #自定义注解名字


spec:


 replicas: 2 #副本数量2


 selector: #RC通过spec.selector来筛选要控制的Pod


   software: apache


   project: test


   app: test-rc


   version: v1


   name: test-rc


 template: #这里Pod的定义


   metadata:


     labels: #Pod的label,可以看到这个label与spec.selector相同


       software: apache


       project: test


       app: test-rc


       version: v1


       name: test-rc


   spec:#specification of the resource content 指定该资源的内容  


     restartPolicy: Always #表明该容器一直运行,默认k8s的策略,在此容器退出后,会立即创建一个相同的容器  


     nodeSelector:     #节点选择,先给主机打标签kubectl label nodes kube-node1 zone=node1  


       zone: node1  


     containers:  


     - name: web04-pod #容器的名字  


       image: web:apache #容器使用的镜像地址  


       imagePullPolicy: Never #三个选择Always、Never、IfNotPresent,每次启动时检查和更新(从registery)images的策略,


                              # Always,每次都检查


                              # Never,每次都不检查(不管本地是否有)


                              # IfNotPresent,如果本地有就不检查,如果没有就拉取


       command: ['sh'] #启动容器的运行命令,将覆盖容器中的Entrypoint,对应Dockefile中的ENTRYPOINT  


       args: ["$(str)"] #启动容器的命令参数,对应Dockerfile中CMD参数  


       env: #指定容器中的环境变量  


       - name: str #变量的名字  


         value: "/etc/run.sh" #变量的值  


       resources: #资源管理,请求请见


         requests: #容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行  


           cpu: 0.1 #CPU资源(核数),两种方式,浮点数或者是整数+m,0.1=100m,最少值为0.001核(1m)


           memory: 32Mi #内存使用量  


         limits: #资源限制  


           cpu: 0.5  

           memory: 32Mi  


       ports:  


       - containerPort: 80 #容器开发对外的端口

         name: httpd  #名称


         protocol: TCP  


       livenessProbe: #pod内容器健康检查的设置,详情请见


         httpGet: #通过httpget检查健康,返回200-399之间,则认为容器正常  


           path: / #URI地址  


           port: 80  


           #host: 127.0.0.1 #主机地址  


           scheme: HTTP  


         initialDelaySeconds: 180 #表明第一次检测在容器启动后多长时间后开始  


         timeoutSeconds: 5 #检测的超时时间  


         periodSeconds: 15  #检查间隔时间

 

         #也可以用这种方法  


         #exec: 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常  


         #  command:  


         #    - cat  


         #    - /tmp/health  


         #也可以用这种方法  


         #tcpSocket: //通过tcpSocket检查健康  


         #  port: number  


       lifecycle: #生命周期管理  


         postStart: #容器运行之前运行的任务  


           exec:  


             command:  

               - 'sh'  

               - 'yum upgrade -y'  


         preStop:#容器关闭之前运行的任务  


           exec:  

             command: ['service httpd stop']  


       volumeMounts:  #详情请见


       - name: volume #挂载设备的名字,与volumes[*].name 需要对应  

 

         mountPath: /data #挂载到容器的某个路径下  


         readOnly: True  


 volumes: #定义一组挂载设备  


 - name: volume #定义一个挂载设备的名字  


   #meptyDir: {}  


   hostPath:  


     path: /opt #挂载设备类型为hostPath,路径为宿主机下的/opt,这里设备类型支持很多种


创建POD


apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中  


kind: Pod #指定创建资源的角色/类型  


metadata: #资源的元数据/属性  


 name: web04-pod #资源的名字,在同一个namespace中必须唯一  


 labels: #设定资源的标签,详情请见


   k8s-app: apache  


   version: v1  


   kubernetes.io/cluster-service: "true"  


 annotations:            #自定义注解列表  


   - name: String        #自定义注解名字  


spec:#specification of the resource content 指定该资源的内容  


 restartPolicy: Always #表明该容器一直运行,默认k8s的策略,在此容器退出后,会立即创建一个相同的容器  


 nodeSelector:     #节点选择,先给主机打标签kubectl label nodes kube-node1 zone=node1  


   zone: node1  

 containers:  


 - name: web04-pod #容器的名字  


   image: web:apache #容器使用的镜像地址  


   imagePullPolicy: Never #三个选择Always、Never、IfNotPresent,每次启动时检查和更新(从registery)images的策略,


                          # Always,每次都检查


                          # Never,每次都不检查(不管本地是否有)


                          # IfNotPresent,如果本地有就不检查,如果没有就拉取


   command: ['sh'] #启动容器的运行命令,将覆盖容器中的Entrypoint,对应Dockefile中的ENTRYPOINT  


   args: ["$(str)"] #启动容器的命令参数,对应Dockerfile中CMD参数  


   env: #指定容器中的环境变量  


   - name: str #变量的名字  


     value: "/etc/run.sh" #变量的值  


   resources: #资源管理,请求请见


     requests: #容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行  


       cpu: 0.1 #CPU资源(核数),两种方式,浮点数或者是整数+m,0.1=100m,最少值为0.001核(1m)


       memory: 32Mi #内存使用量  


     limits: #资源限制  


       cpu: 0.5  


       memory: 32Mi  


   ports:  


   - containerPort: 80 #容器开发对外的端口


     name: httpd  #名称


     protocol: TCP  


   livenessProbe: #pod内容器健康检查的设置,详情请见


     httpGet: #通过httpget检查健康,返回200-399之间,则认为容器正常  

       path: / #URI地址  


       port: 80  


       #host: 127.0.0.1 #主机地址  


       scheme: HTTP  


     initialDelaySeconds: 180 #表明第一次检测在容器启动后多长时间后开始  


     timeoutSeconds: 5 #检测的超时时间  


     periodSeconds: 15  #检查间隔时间  


     #也可以用这种方法  


     #exec: 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常  


     #  command:  


     #    - cat  


     #    - /tmp/health  


     #也可以用这种方法  


     #tcpSocket: //通过tcpSocket检查健康  


     #  port: number  


   lifecycle: #生命周期管理  


     postStart: #容器运行之前运行的任务  


       exec:  


         command:  


           - 'sh'  

           - 'yum upgrade -y'  


     preStop:#容器关闭之前运行的任务  


       exec:  

         command: ['service httpd stop']  


   volumeMounts:  #详情请见


   - name: volume #挂载设备的名字,与volumes[*].name 需要对应    


     mountPath: /data #挂载到容器的某个路径下  


     readOnly: True  


 volumes: #定义一组挂载设备  


 - name: volume #定义一个挂载设备的名字  


   #meptyDir: {}  

   hostPath:  


     path: /opt #挂载设备类型为hostPath,路径为宿主机下的/opt,这里设备类型支持很多种  


创建Service


apiVersion: v1


kind: Service    


metadata:


 name: my-service           #service名称


 labels:


   name:my-service         #自定义标签


spec:


 selector:


   app: MyApp               #请求代理具有标签“app=MyApp”的POD上


 ports:


   - protocol: TCP


     port: 80


     targetPort: 9376       #需要转发到后端POD的端口号

   

     nodePort: 30061


 clusterIP: 10.0.171.239


 loadBalancerIP: 78.11.24.19


 type: LoadBalancer         #service的类型、访问方式。一般为nodePort、ClusterIP、LoadBalancer,这里是使用外部负载均衡器的云提供商的服务

status:                  


  #type=LoadBalancer时,才用到,用于指定外部负载均衡器IP地址


 loadBalancer:


   ingress:


     - ip: 146.148.47.155




相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
2月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
|
2月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
77 3
|
2月前
|
Kubernetes Linux 容器
1.xshell传不了文件输出0000如何解决.....2.k8s中metalLB文件内容
1.xshell传不了文件输出0000如何解决.....2.k8s中metalLB文件内容
|
2月前
|
Kubernetes Docker Perl
k8s常见故障--yaml文件检查没有问题 pod起不来(一直处于创建中)
k8s常见故障--yaml文件检查没有问题 pod起不来(一直处于创建中)
106 1
|
2月前
ingress相关yaml文件报错且相关资源一切正常解决方法
ingress相关yaml文件报错且相关资源一切正常解决方法
ingress相关yaml文件报错且相关资源一切正常解决方法
|
3月前
|
JSON Kubernetes API
深入理解Kubernetes配置:编写高效的YAML文件
深入理解Kubernetes配置:编写高效的YAML文件
|
6月前
|
存储 运维 Serverless
函数计算产品使用问题之在YAML文件中配置了环境变量,但在PHP代码中无法读取到这些环境变量,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
5月前
|
运维 Kubernetes Serverless
Serverless 应用引擎使用问题之s.yaml文件中如何使用外部环境变量
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
存储 缓存 运维
函数计算产品使用问题之如何将外部环境变量放到s.yaml文件中使用
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
4月前
|
机器学习/深度学习 计算机视觉 Python
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
121 0