声明式管理方法(yaml文件)

声明式管理方法(yaml文件):

1、适合对资源的修改操作

2、声明式管理依赖于yaml文件,所有的内容都在yaml文件当中声明

3、编辑好的yaml文件,还是要依靠陈述式的命令发布到k8s集群当中

kubectl create:只能创建,不能更新。从指定的yaml文件中读取配置,创建服务,不能更新

kubectl apply -f:既可以创建资源对象也可以更新资源对象。如果yaml文件更改了,apply可以直接更新资源对象

kubectl delete -f:删除yaml文件当中声明的资源对象

yaml文件如何生成:

1、手打

2、可以根据已有的资源,直接生成

1deployment的yaml文件 daemonset statefulset

2service的yaml文件

3不基于控制器的pod的yaml文件

pod svc都可以修改

然后把pod文件弄到/opt

kubectl get pod service nginx -o yaml > nginx-svc.yaml

kubectl apply -f nginx-svc.yml

k8s当中支持声明式的资源管理方式:

1、yaml格式,用于配置和管理资源对象

2、json格式:主要用于在api接口之间消息的传递

command和args

定义容器运行的命令参数,类似于docker的CMD和entrypoint

args可以理解为docker中的cmd,可以给command传参

command和args都会覆盖原容器的标准输出

command喝args只能有一个。不然会把容器的标准输出覆盖。不论是args或者command都会覆盖CMD和entyrpoint

deployment

service和pod都是v1

要先创建命名空间

apiVersion: apps/v1

#声明API版本的标签

kind: Deployment

#定义资源的类型service/pod/deployment/Job/ingress/daemonset/statefulset

metadata:

  name: nginx1

  namespace: guoqi

  labels:

    ky32: nginx1

#定义资源的元数据信息,资源名称,资源对象部署的命名空间,标签等等信息

spec:

#定义deployment的资源需要的参数属性

  replicas: 3

#定义副本数

  selector:

#定义标签选择器

    matchLabels:

      ky32: nginx1

#选择匹配的标签

  template:

#定义业务模板,如果定义了多个副本,所有的副本的属性都会按照模板的配置进行匹配

    metadata:

      labels:

        ky32: nginx1

#定义了pod的副本都使用元数据的标签和属性来进行匹配

    spec:

      containers:

      - name: nginx

        image: nginx:1.10

        #posts:

        #- containerPort: 80

#这里的spec是声明容器的相关参数,虽然我制定了容器的暴露端口是80,nginx默认的镜像就是80,即使指定了其他的端口,也不会改变容器的端口

apiVersion: v1

#定义API的版本

kind: Service

metadata:

  name: nginx-service

  namespace: guoqi

  labels:

    ky32: nginx1

#元数据信息包括service的名称,所属的命名空间,以及要匹配的deployment的标签,要和之前的保持一致

spec:

  type: NodePort

  ports:

  - port: 80

    targetPort: 80

  selector:

    ky32: nginx1

#匹配所有的标签都是ky32:nginx1的后端提供服务

30000端口可加可不加

apiVersion: v1

#定义POD的apiversion

kind: Pod

#定义资源的类型

metadata:

#定义元数据信息,pod的名称,命名空间,标签

  name: centos1

  namespace: guoqi

spec:

  restartPolicy: Never

#restartPolicy指的是pod内的容器启动失败或者有问题的重启策略:Always Never Onfalie(只有异常退出才会重启,状态非0,如果状态是0,不重启),restartPolicy指的是容>器的重启策略,资源类型定义为deployment,容器的重启策略只能是Always

  containers:

  - name: centos

image: centos:7

command: [/bin/bash,-c,touch /opt/123.txt;echo 123 > /opt/123.txt;sleep 3600]

总结:

三种发布方式:

蓝绿发布

灰度发布(重点)基于deployment的滚动发布,使用了一个机制 pause。resume继续。回滚:所有都升级完毕之后才可以回滚

滚动发布

deployment

service

pod

command和args不要同时出现,除非你要传参,都会容器的标准输出(CMD和ENTRYPOINT)

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐