声明式管理方(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声明的是容器的相关参数,虽然我指定了容器的暴露端口是80,nginx默认的镜像就是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标准输出,建议写在一行提高可读性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/317102.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++Qt6 哈夫曼编码求解 数据结构课程设计 | JorbanS

一、 问题描述 在进行程序设计时,通常给每一个字符标记一个单独的代码来表示一组字符,即编码。在进行二进制编码时,假设所有的代码都等长,那么表示 n 个不同的字符需要 位,称为等长编码。如果每个字符的使用频率相等&…

【计算机毕业设计】SSM实现的在线农产品商城

项目介绍 本项目分为前后台,且有普通用户与管理员两种角色。 用户角色包含以下功能: 用户登录,查看首页,按分类查看商品,查看新闻资讯,查看关于我们,查看商品详情,加入购物车,查看我的订单,提交订单,添加收获地址,支付订单等功能。 管理员角色包含以…

SD-WAN组网方式详解

企业网络的演进势不可挡,对于高效、可靠的网络连接需求日益增加。SD-WAN(软件定义广域网)作为一项创新的网络技术,备受企业青睐并得到广泛应用。SD-WAN提供了多种灵活的组网方式,以满足企业多样化的需求和不同的网络环…

算法28:力扣64题,最小路径和------------样本模型

题目: 给定一个二维数组matrix,一个人必须从左上角出发,最后到达右下角 。沿途只可以向下或者向右走,沿途的数字都累加就是距离累加和 * 返回累加和最小值 思路: 1. 既然是给定二维数组matrix,那么二维数…

Vue - 多行文本“展开、收起”功能

TextClamp 使用 js 实现文本展开、收起,并非纯 CSS 实现。 Props: fontSize:Number,默认:14lines:Number,默认:1lineHeight:Number,默认:20 F…

获取网页信息

每次copy & paste总是很麻烦,现在有点问题,先记录下来。 需求:获取url 里Feature list,并输出表格形式 可以用Convert curl commands to code:得到get请求的header,cookie等 import requests import…

天然药物,到2028年市场规模将达到 3082亿美元

天然药物,也称为草药或传统药物,是指将植物、矿物和动物产品等天然物质用于药用目的。近年来,人们对天然药物作为传统药物的替代品越来越感兴趣,这导致了天然药物市场的增长。全球天然药物市场: 全球天然药物市场预计从…

八大算法排序@选择排序(C语言版本)

目录 选择排序概念算法思想示例步骤1步骤2步骤...n最后一步 代码实现时间复杂度空间复杂度特性总结 选择排序 概念 选择排序(Selection Sort)是一种简单直观的排序算法。基本思想是在未排序的序列中找到最小(或最大)元素&#xf…

VS2022 Android NativeActivity 开发指南

几年前最初使用VS时,记得是有Android NativeActivity的,今天更新到了2022最新版,发现找不到这个创建选项。 然后确保安装了C 跨平台开发工具后,开始排查原因。 Visual Studio 2022 中没有“本机活动应用程序” - android - SO中…

微信小程序 01

01.介绍 02.注册一个微信开发账户 官网https://mp.weixin.qq.com 03.下载开发工具 直接安装 04.登录开发者工具 先打开ide工具: 而后微信扫码,登录

clang-format

Clang-Format Clang-Format Style Options — Clang 18.0.0git documentation VSCode 1.1 安装扩展 C 1.2 设置 1.3 使用 .clang-fornat 放置在项目(代码)文件夹下使用 .clang-fornat 为文件名 --- # https://clang.llvm.org/docs/ClangFormatStyle…

java仓库管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web仓库管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…