kubernetes-资源编排(YAML)

发布于:2024-01-30 ⋅ 阅读:(61) ⋅ 点赞:(0)

一、YAML文件格式说明

二、YAML文件管理资源对象

解释:

        apiVersion - 以官方demo的apiVersion为准,官方文档示例一直保持最新的版本。

Deployments | Kubernetes

也可以通过api-versions查看当前api支持的版本

命令:kubectl api-versions

kind - 资源类型

可以通过api-resources查看都有哪些资源类型

最后一列就是写在kind处对应的资源类型。

apiVersion: apps/v1 #api版本

kind: Deployment  #资源类型

metadata:

  name: web   #资源名称

  namespace: default  #命名空间

spec:   #资源规格

  replicas: 3 #副本数量

  selector:

    matchLabels:

        app: web   #选择器标签,可以有多个

  template:    #pod模版

    metadata:   #pod元数据

        labels:

          app: web  #pod标签,唯一,要与选择器标签一一对应

     spec:      #pod规格

        containers:   #容器配置

        - name: web

          image: lizhenliang/java-demo

apiVersion:v1   #api版本

kind: Service   #资源类型

metadata:       #元数据

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

  namespace: default   #部署在哪个namespace中。不指定时默认为default命名空间

spec:

   posts:

    - port: 80   #服务监听的端口号

      protocol: TCP  #端口协议,支持TCP或UDP,默认TCP

      targetPort: 80  #容器暴露的端口

  selector:   #选择器。选择具有指定label标签的pod作为管理范围

     app: web

   type: NodePort     #当type=NodePort时,指定映射到物理机的端口号

kubectl create命令与kubectl apply -f 区别:

相同点:

1.都可以创建资源;

不同点:

create可以创建各种资源以及支持各种创建格式(json、yaml以及命令行),而apply主要是通过yaml创建资源以及更新。

建议:create一般用于初次创建资源,已经创建过,再使用create命令创建会报错。

三、YAML文件中字段太多,记不住怎么办

技巧:

方式一:创建一个资源(但并不实际创建),然后导出

删除web2.yaml导出的多余字段

修改后

 导出的web2_expose,同样可以修改成一个新的Service。

修改前:

修改后:

然后继续创建新的Service就好了。

注意:这种先通过create再导出yaml的方式,还要看kubectl是否支持你当前需要创建的资源,不支持也是不行的。

把-o yaml 的yaml换成 json, 就可以导出JSON格式的文件,一般json主要用于传输对接yaml信息用的,正常主要用yaml执行kube操作。

 方式二:

通过get命令导出一个资源。

编辑java-demo_deployment-export.yaml

修改前:

修改后:

注:通过get方式导出yaml,就比较通用了。

Pod容器的字段拼写忘记了?