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

发布时间:2024年01月10日

声明式管理方法(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)

文章来源:https://blog.csdn.net/wyh20030130/article/details/135504029
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。