php网站后台模版,长沙市公共资源交易中心,网站开发工具与使用平台,文章发布在哪个平台好声明式管理方法#xff08;yaml#xff09;文件#xff1a;
1#xff0c;适合对资源的修改操作
2#xff0c;声明式管理依赖于yaml文件#xff0c;所有的内容都在yamI文件当中
3#xff0c;编辑好的yaml文件#xff0c;还是要依靠陈述式命令发布到k8s集群当中 发布的…声明式管理方法yaml文件
1适合对资源的修改操作
2声明式管理依赖于yaml文件所有的内容都在yamI文件当中
3编辑好的yaml文件还是要依靠陈述式命令发布到k8s集群当中 发布的三种命令 create只能创建不能更新。从指定yaml文件中读取配置创建服务。不能更新 apply -f既可以创建资源对象也可以更新资源对象。如果yaml文件更改了apply可以之间更新资源对象
工作中最多就是apply -f delete -f删除yaml文件中声明的资源对象。 yaml文件如何生成
1手打
2可以根据已有的yaml文件进行修改。
通过已有的文件进行修改
例如 查看
kubectl edit deployments.apps nginx
把文件导出
kubectl get deployments.apps nginx -o yaml /opt/test.yaml 修改一下 使用这个文件重新创建
kubectl apply -f test.yaml 但是只能改一次
再次修改会报错
可以使用强制修改
--force
kubectl apply -f test.yaml --force
修改直接加上force 所有的基于yaml文件的都可以导出
service kubectl get svc nginx -o yaml service.yaml kubectl apply -f service.yaml pod也可以导出yaml文件
kubectl get pod nginx-589f6b958-ghkvm -o yaml 三种yaml文件的类型
1、deployment的yaml文件 daemonset statefulset
2、service的yamI文件
3、不基于控制器的pod的yamI文件。 k8s当中支持两种声明式的资源管理方式
1yaml格式用于配置和管理资源对象
2json格式主要用于api接口之间消息的传递。 一、deployment的yaml文件 查看deployment的格式
kubectl explain deployment 只有deployment api version是apps/v1 vim test.yaml
apiVersion: apps/v1
#声明API版本的标签
kind: Deployment
#定义资源的类型service/pod/deployment/Jod/ingress/daemonset/statefulset
metadata:name: nginx1namespace: chenlabels:cheng: nginx1
#定义资源的元数据信息资源名称资源对象部署的命名空间标签等等信息
spec:
#定义资源需要的参数和属性。replicas: 3
#定义副本数selector
#定义标签选择器 matchLabels:cheng: nginx1#上下保持一致
#选择匹配的标签template:
#定义业务的模版如果定义了多个副本所有的副本的属性都会按照模版的配置进行匹配
。metadata:labels:cheng: nginx1
#定义了pod的副本都使用元数据的标签和属性来进行匹配spec:containers:- name: nginximage: nginx:1.10posts:#可以忽略- containerPort: 443#可以忽略
#spec声明的是容器的相关参数,虽然我指定了容器的暴露端口是80nginx默认的镜像就是80
#即使指定了其他端口也不会改变容器的端口。改了服务还会报错。
命名空间要提前创建。
kubectl create namespace chen
创建 创建一个service
vim nginx-service.yaml
#定义api的版本
apiVersion: v1
kind: Service
metadata:name: nginx-servicenamespace: chenlabels:cheng: nginx1
#元数据信息包括service的名称所属的命名空间以及要匹配的deployment的标签一定要一致。
spectype: NodePortports:- port: 80targetPort: 80nodePort: 30001selector:cheng: nginx1
#匹配所有的标签都是cheng:nginx1的pod的后端提供服务。
执行
kubectl apply -f nginx-service.yaml nodeport端口可以指定也可以不指定
默认的也是TCP
pod yaml文件
vim pod.yaml
#定义POD的APIVERSION
apiVersion: v1
#定义资源的类型
kind: Pod
#定义元数据信息pod名称命名空间标签。
metadata:name: centos1namespace: chen
spec:restartPolicy: Always
#restartPolicy指的是pod内的容器启动失败或者有问题的重启策略Always Never Onfailure(只有异常才会重启状态码非0如果状态是0不重启)
#restartPolicy指的是容器的重启策略资源类型定义为deployment容器的重启策略只能是Alwayscontainers:- name: centosimage: centos:7
执行 查看拉取详情 状态没有restart 已经运行结束退出了 改一下 重新运行 会一直重启 在容器当中运行命令
command
args
要在容器中运行两个参数类似于docker的CMD和entrypoint
args可以理解docker中的CMD给commnad传参。 command和args都会覆盖原容器的标准输出(CMD和ENTRYPOINT) 在容器当中定义执行命令
第一种格式 多个命令要用分号隔开
查看详细信息 到3600自动睡眠 格式2 多个命令一定要这个开头 kubectl delete pod centos1 -n chen
创建
kubectl apply -f pod.yaml
在外面查看是否写入 第三种格式 和args一样 command和args只能有一个
command和arg不要同时出现除非你要传参
command和args只能有一 个。会把容器的标准输出覆盖。
不论是args和commmand都会覆盖CMD和ENTYRPOINT容器的标准输出。
总结
三种发布方式
蓝绿发布
灰布发布重点基于deployment的滚动发布使用了一个机制 pause。resume继续。回滚所有都升级完毕之后才可以回滚。
滚动发布 deployment默认发布方式。
三种yaml文件格式