淮安做网站服务单位,朋友叫我去柬埔寨做彩票网站推广,wordpress栏目id,甜水园网站建设声明式管理方(yaml)文件: 1、适合对资源的修改操作 2、声明式管理依赖于yaml文件#xff0c;所有的内容都在yaml文件当中。 3、编辑好的yaml文件需要依靠陈述是还是要依靠陈述式的命令发布到k8s集群当中
create只能创建#xff0c;不能更新。从指定yaml文件中读取配置#…声明式管理方(yaml)文件: 1、适合对资源的修改操作 2、声明式管理依赖于yaml文件所有的内容都在yaml文件当中。 3、编辑好的yaml文件需要依靠陈述是还是要依靠陈述式的命令发布到k8s集群当中
create只能创建不能更新。从指定yaml文件中读取配置创建服务。不能更新apply -f可以创建资源对象也可以更新资源对象。如果yaml文件更改了apply可以直接更新资源对象delete -f删除yaml文件中声明的资源对象。
如何生成yaml文件 1、手敲 2、可以根据已有的资源直接生成
1、deployment的yaml的文件 2、service的yaml文件3、不急于控制器的pod的yaml文件
kubectl get deployments.apps nginx -o yaml /opt/test.yaml
#基于已有资源直接创建yaml文件
kubectl apply -f test.yaml
#执行yaml文件
#只能运行一次。
#运行成功后如果还需要修改需要基于最新的deployment再创建yaml文件
k8s当中支持两种声明式的资源管理方式:
1、yaml格式用于配置和管理资源对象 2、json格式主要用于apiserver接口之间的消息传递
kubectl apply -f test.yaml --force
#强制执行yaml文件
#如果不想使用最新的deployment再创建yaml文件可以使用--force强制执行 command args 定义容器运行的命令参数类型与docler的CMD和entrypoint args可以理解docker的额cmd给以给command传参 command和args都会覆盖元容器的标准输出CMD和entrypoint deployment的yaml文件格式
apiVersion: apps/v1
#声明API版本的标签
kind: Deployment
#定义资源的类型service/pod/deployment/job/cronjob/ingress/deamonest/statefulset
metadata: name: nginx1
#定义资源的元数据信息比如资源名称、资源对象部署的命名空间标签等信息namespace: liulabels: wdf: nginx1
spec:
#定义deployment的资源需要的参数属性。replicas: 3
#定义副本数selector:
#定义标签选择器matchLabels:wdf: nginx1
#选择匹配的标签template:
#定义业务模板如果定义了多个副本所有的副本的属性都会按照模版的配置进行匹配metadata:labels:wdf: nginx1
#定义了pod的副本都使用元数据的标签和属性来进行匹配spec:containers: - name: nginximage: nginx:1.10#posts:#- containerPort: 80
#spec声明的是容器的相关参数虽然我指定了容器的暴露端口是80nginx默认的镜像就是80即使制定了其他端口也不会改变容器的端口。默认的可以忽略不写service的yaml文件格式
#定义api的版本
apiVersion: v1
kind: Service
metadata:name: nginx-servicenamespace: liulabels:wdf: nginx1
# 元数据信息包扩service的名称、所属的命名空间、以及要匹配的deployment的标签要和之前的保持一致
spec:type: NodePortports:- port: 80targetPort: 80nodePort: 32000selector:wdf: nginx1
#匹配所有的标签都是wdf:nginx1的pod通过后端服务
pod的yaml文件格式
#定义POD的APIVERSION
apiVersion: v1
#定义资源类型
kind: Pod
#定义元数据信息pod的名称命名空间标签
metadata:name: centos1namespace: liulabels:wdf: nginx1
spec:restartPolicy: Never
#retartPolicy指的是pod内的容器启动失败或者问题的重启策略Always Never Onfailure(只有异常退出才会重启状态码非0如果状态是0不重启),值得是容器的重启策略资源类型定义为deployment容器的重启策略只能是Always。containers: - name: centosimage: centos:7
#多个命令要用分号隔开
restartPolicy的三种状态码 pod内的容器如果启动失败或者有问题时的重启策略
Always永不重启
Never从不重启
Onfailure只有异常退出才会重启。状态码非0则重启.如果状态码是0则不重启
command和args command、args定义容器运行的命令参数。类似于docker中的CMD和entrypoint
command、arges只能存在一个。args可以给command传参
command和arges格式
apiVersion: v1
kind: Pod
metadata:name: centos1namespace: lyw
spec:restartPolicy: Alwayscontainers:- name: centosimage: centos:7command: [echo]args: [hello,world!]kubectl apply -f pod.yamlkubectl logs -n lyw centos1
#启动时候默认执行的命令args可以给command传参类似于(CMD和entrypoint)如果在yaml文件中定义了输出内容就会覆盖掉原来容器内部的标准输出。
command和args都会覆盖原容器的标准输出(CMD和entrypoint) args格式
写法一
apiVersion: v1
kind: Pod
metadata:name: centos1namespace: lyw
spec:restartPolicy: Alwayscontainers:- name: centosimage: centos:7args:- /bin/bash- -c- while true; do sleep 36000; donesleep 36000: 运行36000秒后退出kubectl apply -f pod.yaml
kubectl get pod -n lyw 写法二
apiVersion: v1
kind: Pod
metadata:name: centos1namespace: lyw
spec:restartPolicy: Alwayscontainers:- name: centosimage: centos:7args: [/bin/bash,-c,touch /opt/123.txt; echo lyw /opt/123.txt; sleep 3600]#/bin/bash -c 是固定格式不可缺少
#执行多个命令时用分号隔开kubectl apply -f pod2.yaml
查看容器/opt/123.txt的文件
kubectl exec -it centos1 -n lyw -- cat /opt/123.txt
command格式 apiVersion: v1
kind: Pod
metadata:name: centos1namespace: lyw
spec:restartPolicy: Alwayscontainers:- name: centosimage: centos:7command: [/bin/bash,-c,touch 123.txt; echo 123 /opt/123.txt; sleep 36000 ]#/bin/bash -c 是执行多个命令的固定格式不可缺少
#执行多个命令时用分号隔开kubectl apply -f pod2.yaml
查看容器/opt/123.txt的文件
kubectl exec -it centos1 -n lyw -- cat /opt/123.txt apiVersion: v1
kind: Pod
metadata:name: centos1namespace: lyw
spec:restartPolicy: Alwayscontainers:- name: centosimage: centos:7command: [/usr/bin/test, -e, /etc/passwd]#-e 执行单个命令
#这样的格式只能执行单个命令。需要加上绝对路径kubectl apply -f pod.yaml
查看容器/opt/123.txt的文件
kubectl exec -it centos1 -n lyw -- cat /opt/123.txt 总结 1、 三种发布方式
蓝绿发布、灰度发布(目前最常用)、滚动发布(基于deployment默认的发布模式) 灰度发布(目前最常用)基于deployment的滚动发布使用了暂停的机制。pause(暂停)/resume(继续)。只有所有升级完毕之后才可以回滚 2、 三种yaml文件类型 yaml文件内的模板模块
deployment类型
apiVersion模块apps/v1。只有deployment是apps/v1 kind模块所有的类型都是由kind声明 在kind之后生成 kind之后的第一个字母需要大写 metadata模块这一部分中namespace(命名空间)需要已经存在否则不会自动创建。需要手动创建。 spec模块定义副本数、标签选择器等信息 template模块定义了业务模板需要和之前的标签保持一致 spec模块这里的spec属于业务模板模块。这里定义的是容器的信息。定义容器名称定义镜像版本。也可以指定容器的暴露端口。但是需要注意。如果容器的默认端口没有修改。yaml文件中定义暴露端口不会生效。所以如果是默认的服务可以不加定义端口
service类型
apiVersion模块v1 spec模块中port是service的暴露端口targetPort是容器的暴露端口。 tpye模块的类型
pod类型
apiVersion模块v1 spec模块这一模块中的 restartPolicy定义pod内的容器如果启动失败或者有问题时的重启策略 Always永不重启Never模块从不重启Onfailure只有异常退出才会重启。状态码非0则重启.如果状态码是0则不重启restartPolicy是容器的重启策略。 如果资源类型定义为deployment这个容器的重启策略只能是Always。不写默认是Always command和args。 同一个yaml文件内command和args只能存在一个表示容器启动时的命令不要同时出现 除非需要传参的时候可以同时出现。 无论是args或者是command都会覆盖CMD和entrypoint标准输出建议写在一行提高可读性