k8s---声明式资源管理(yml文件)

在k8s当中支持两种声明资源的方式:

1、 yaml格式:主要用于和管理资源对象

2、 json格式:主要用于在API接口之间进行消息传递

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


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

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

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

有三种方式:

create -f:只能创建,不能更新。从指定yml文件读取配置,创建服务,不能更新。apply -f:即可以创建资源对象也可以更新资源对象。如果yml文件更改了,apply可以直接更新资源对象。delete -f:删除yml文件中声明的资源对象

yml文件如何生成:

1.手动书写

2.可以根据已有的资源,成功生成。

kubectl get deplotment deployment.apps nginx -o yaml > /opt/test.yamlkubectl apply -f test.yaml --force
#强制执行yaml文件
#如果不想使用最新的deployment再创建yaml文件可以使用--force强制执行

kubectl get svc nginx-service -o yaml > /opt/service.yaml

常见的yaml类型

1、 deployment的yaml文件格式用于部署还有daemonset和statefulser

2、 service的yaml文件用于暴露服务端口

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

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

1.yml格式,用于配置和管理资源对象

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

如何查看deployment的格式模板

kubectl explain deployment

如何用yaml文件编写

cd /opt
vim nginx1.ymlapiVersion: apps/v1
#声明api版本标签
kind: Deployment
#定义资源的类型:service/pod/deployment/job/ingress/daemonset/statfluset
metadata: name: nginx1namespace: zzrlabels: zhaozirui: nginx1
#定义资源的元数据信息 ,比如资源的名称,资源对象部署的命名看空间也可以在这里声明,标签等等信息
spec: 
#定义deployment的资源需要的参数属性。replicas: 3
#定义副本数selector:
#定义标签选择器matchLabels:zhaozirui: nginx1
#选择匹配的标签template:
#定义业务模板:如果定义了多个副本,所有的副本属性都会按照模板的配置进行匹配。metadata: labels: zhaozirui: nginx1
#定义了pod的副本都是用来元数据的标签和属性来进行匹配spec:containers: - name: nginximage: nginx:1.10posts:- containerPort: 80
#spec声明的是容器的相关参数,虽然制定了容器的暴露端口号-80,如果镜像默认的端口不是80,依然没用。

如何暴露服务--service的yaml

vim nginx-service.yamlapiVersion: v1
kind: Service
metadata:name: nginx-servicenamespace: zzrlabels:zhaozirui: nginx1
#元数据信息包括,service的名称,所属的命名空间,以及要匹配的deployment的标签。要和之前的保持一致。
spec: type: NodePortports:- port: 80targetPort: 80selector:zhaozirui: nginx1
#匹配所有的标签都是zhaozirui:nginx1的pod的后端提供服务
wqkubectl apply -f nginx-service.yaml
kubectl get svc -n zzr

创建pod的yaml文件

vim pod.yamlapiVersion: v1
kind: Pod
#定义元数据信息,pod的名称,命名空间,标签
metadata:name: centos1namespace: zzr
spec:restartPolicy: Never
#restartPolicy指的是pod内的容器启动失败或者有问题的重启策略:Always Nerver Onfailure(只有异常退出才会重启,状态非0,如果状态码是0,不重启。),restartPolicy指的是容器的重启策略,资源类型定义为deployment,容器的重启策略只能是always。containers: - name: centosimage: centos:7wq
kubectl apply -f pod.yaml
kubectl pods -n zzr
kubectl describe pod centos1 -n zzrkubectl get pod -n zzr

restartPolicy的三种状态码

pod内的容器如果启动失败或者有问题时的重启策略 Always:永不重启

Never:从不重启

Onfailure:只有异常退出才会重启。状态码非0则重启.如果状态码是0则不重启

command和args

command,args:定义容器运行的命令参数(类似于docker中的CMD和entrypoint)

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

command和args都会覆盖原容器的标准输出(CMD和entrypoint)

  containers:- name: centosimage: centos:7command: ["echo"]args: ["hello,world!"]
#启动时候默认执行的命令
#args可以给command传参类似于(CMD和entrypoint)
#如果在yaml文件中定义了输出内容,就会覆盖掉原来容器内部的标准输出

command和args都会覆盖原容器的标准输出(CMD和entrypoint)

args的书写

metadata:containers:args:- /bin/bash- -c- while true; do sleep 3600; done
#多个命令要用分号隔开
wqkubectl apply -f pod.yaml
kubectl get pods -n guoqi
kubectl logs -f centos1 -n guoqi
kubectl describe pod centos1 -n zzr换个写法:
metadata:containers:args: ["/bin/bash","-c","touch /opt/123.txt; echo 123 > /opt/123.txt; sleep 3600"]wqkubectl apply -f pod.yml
kubectl get pods -n guoqi
kubectl exec -it centos1 -n guoqi --cat /opt/123.txt
直接查看容器内命令。

command写法

 写法1:containers:- name: centosimage: centos:7command: ["/bin/bash", "-c", "touch /opt/123.txt; echo 123 > /opt/123.txt; sleep 3600"]
#在一行定义多个内容需要用逗号隔开。多个命令需要用分号隔开
#执行多个命令必须要加"/bin/bash", "-c"写法2:containers:- name: centosimage: centos:7command: ["/usr/bin/test", "-e", "/etc/passwd"]
#这样的格式只能执行单个命令。需要加上绝对路径

command和args的总结

同一个yaml文件内command和args只能存在一个表示容器启动时的命令

除非需要传参的时候command和args可以同时出现

无论是args或者是command都会覆盖CMD和entrypoint标准输出

建议写在一行提高可读性

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

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

相关文章

微服务智慧工地信息化解决方案(IOT云平台源码)

智慧工地是指应用智能技术和互联网手段对施工现场进行管理和监控的一种工地管理模式。它利用传感器、监控摄像头、人工智能、大数据等技术,实现对施工现场的实时监测、数据分析和智能决策,以提高工地的安全性、效率和质量。 智慧工地平台是一种智慧型、系…

算法:岛屿的周长

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、问题描述 二、规律总结 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、问题描述 给定一个包含 0 和 1 的二维网格地图&#x…

【接口自动化】写接口自动化case要注意的点!

可能有人会说,写接口的自动化CASE多简单了,写个参数发送请求完事了,还要注意啥? 没错,相比起UI自动化的case,你要去写各种定位器,接口自动化的case写起来确实容易多了。这也是接口自动化的一个…

羊奶能降低熬夜伤肝带来的伤害吗?

羊奶能降低熬夜伤肝带来的伤害吗? 熬夜已成为现代人生活中的一部分,然而,长期熬夜对身体健康的危害也不容忽视。其中,肝脏作为人体重要的器官之一,承担着排毒、合成重要蛋白质和代谢脂肪等重要功能。长期熬夜所带来的…

RAG LLM App开发实战

大型语言模型(LLM)无疑改变了我们与信息交互的方式。 然而,对于我们可以向他们提出的要求,它们也有相当多的限制。 LLM(例如 Llama-2-70b、gpt-4 等)仅了解他们接受过训练的信息,当我们要求他们…

ROS学习记录:ROS系统中的激光雷达消息包的数据格式

一、在工作空间中输入source ./devel/setup.bash 二、输入roslaunch wpr_simulation wpb_simple.launch打开机器人仿真环境 三、机器人仿真环境打开成功 四、给机器人围上一圈障碍物 五、再打开一个工作空间终端 六、输入roslaunch wpr_simulation wpb_rviz.launch打开RViz 七、…

C#_var

文章目录 一、前言二、隐式类型的局部变量2.1 var和匿名类型2.2 批注 三、总结 一、前言 C#中有一个 var 类型,不管什么类型的变量,都可以用它接收,实属懒人最爱了。 我没有了解过它的底层,甚至没看过它的说明文档,也…

25W以下室内照明应用解决方案:SM2188EN符合新ERP认证标准

随着LED照明技术的不断发展,室内照明领域的需求也在不断增加。针对25W以下室内照明应用,LED驱动芯片SM2188EN是一款新型的解决方案,符合最新的ERP认证标准,能够满足用户对照明产品高效、节能、稳定的需求。 SM2188EN方案原理图 L…

租房数据分析可视化大屏+58同城 Django框架 大数据毕业设计(附源码)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK修改图像像素格式Mono8或者Mono10(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK修改图像像素格式Mono8或者Mono10(C#) Baumer工业相机Baumer工业相机的图像像素格式的技术背景CameraExplorer如何查看修改相机图像像素格式信息在NEOAPI SDK里通过函数修改图像像素格式修改像素格式测试演…

Linux/Unix/国产化操作系统常用命令(一)

目录 前言Unix操作系统UNIX与Linux的亲密关系UNIX/Linux系统结构1) 内核层2) Shell层3) 应用层 常见Linux发行版本有哪些1) Red Hat Linux2) Ubuntu Linux3) SuSE Linux4) Gentoo Linux5) 其他 Linux 发行版Linux 发行版本的选择选择CentOS 系统 前言 前段时间到南京出了趟急差…

「MySQL运维常见问题及解决方法」

「MySQL运维常见问题及解决方法」 一、查看MySQL数据库安装路径1.1、方式一 --SHOW VARIABLES LIKE basedir;1.2、方式二 --ps -ef | grep mysql 二、MySQL设置连接数与最大并发数2.1、永久生效--修改my.cnf文件2.2、临时生效--通过命令设置的全局变量 三、其他相关参数设置四、…