声明式管理方(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.rhkb.cn/news/230054.html

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

相关文章

静态代理、JDK动态代理、CGLIB动态代理以及JDK和CGLIB动态代理的区别

代理 什么是代理?两个设计原则三要素 静态代理静态代理的实现定义接口-定义行为静态代理 -> 目标角色静态代理-> 代理角色静态代理测试 特点 JDK动态代理newProxyInstance获取代理对象通过代理对象实现目标对象的功能特点 Java动态代理类中的invoke是怎么调用…

OpenAI GPT 模型 API 接口新增参数 top_logprobs 和 logprobs

文章目录 一、前言二、主要内容三、总结 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 在最新的 OpenAI 官方 APIs 文档中,Create chat completion 中新增了 top_logprobs 和 logprobs 这两个关键参数。 官方文档地址&#xff…

06.02 customizing plots with style sheets

使用 style 来配置 pyplot 风格 import matplotlib.pyplot as plt import numpy as np%matplotlib inlinestyle 是 pyplot 的一个子模块,方便进行风格转换, pyplot 有很多的预设风格,可以使用 plt.style.available 来查看: plt.…

GO语言笔记1-安装与hello world

SDK开发工具包下载 Go语言官网地址:golang.org,无法访问Golang中文社区:首页 - Go语言中文网 - Golang中文社区下载地址:Go下载 - Go语言中文网 - Golang中文社区 尽量去下载稳定版本,根据使用系统下载压缩包格式的安装…

linux释放交换空间-Swap

确保剩余内存比swap内存空间大,再执行以下操作,否则会宕机! 查看swap分区 swapon -s 会查看到你的swap分区位置 停止swap分区 停止swap分区是将swap内存释放到实际内存中 swapoff /dev/dm-1开启swap分区 swap分区内存成功释放到实际内…

【一文入门】Git常用命令集锦--分支操作和版本管理篇

前言 Git 是一种分布式版本控制系统,可以帮助团队协作开发、管理和维护代码,提高代码质量和效率,掌握常用版本管理命令可以帮助我们更好地管理代码变更和历史记录。下面我将介绍开发中常用的一些Git分支操作和版本管理命令 1 分支操作 1.1 …

diffusers 源码待理解之处

一、训练DreamBooth时,相关代码的细节小计 ** class_labels timesteps 时,模型的前向传播怎么走?待深入去看 ** 利用class_prompt去生成数据,而不是instance_prompt class DreamBoothDataset(Dataset):"""A dat…

CCNP课程实验-05-Comprehensive_Experiment

目录 实验条件网络拓朴 基础配置实现IGP需求:1. 根据拓扑所示,配置OSPF和EIGRP2. 在R3上增加一个网段:33.33.33.0/24 (用Loopback 1模拟) 宣告进EIGRP,并在R3上将EIGRP重分布进OSPF。要求重分布进OSPF后的路由Tag值设置为666&…

一款超酷的一体化网站测试工具:Web-Check

Web-Check 是一款功能强大的一体化工具,用于发现网站/主机的相关信息。用于检查网页的工具,用于确保网页的正确性和可访问性。它可以帮助开发人员和网站管理员检测网页中的错误和问题,并提供修复建议。 它只需要输入一个网站就可以查看一个网…

理解 RPC 与 Protobuf:完整指南

一、Protobuf 数据格式简析 Protobuf 是什么? 在数据密集型应用领域,Google 开发的 Protobuf 作为一种高效数据编码方式而广受欢迎。它胜任于 JSON 及 XML 对比,不仅在体积和速度上表现出色,而且其结构化方式优化了网络传输中的…

一文讲清数据资产入表实操

《中共中央 国务院关于构建数据基础制度更好发挥数据要素作用的意见》已发布一年,数据资产化和入表已成为2023年的热门话题,随着2023年底国家数据局吹风《"数据要素x"三年行动计划(2024-2026年)》即将发布,这…

Vue 中的 ref 与 reactive:让你的应用更具响应性(中)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

Linux 进程和计划任务管理

一 内核功用:进程管理、内存管理、文件系统、网络功能、驱动程序、安全功能等 1 程序 是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具 用于描述进程要完成的功能,是控制进程执行的指令集 2…

三、C语言中的分支与循环—switch语句(4)分支结构 完

本章分支结构的学习内容如下: 三、C语言中的分支与循环—if语句 (1) 三、C语言中的分支与循环—关系操作符 (2) 三、C语言中的分支与循环—条件操作符 与逻辑操作符(3) 三、C语言中的分支与循环—switch语句(4)分支结构 完 本章循环结构的…

Javaweb之Mybatis的基础操作的详细解析

1. Mybatis基础操作 学习完mybatis入门后,我们继续学习mybatis基础操作。 1.1 需求 需求说明 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除 根据主键ID批量删除 …

1.3 day3 IO进程线程

使用标准IO进行文件拷贝 #include <myhead.h> int main(int argc, const char *argv[]) {if(argc!3)//外部传参{printf("input error\n");}//定义两个文件指针FILE *fpNULL;FILE *cfpNULL;if((fpfopen(argv[1],"r"))NULL){perror("fopen error…

学习Vue单文件组件总结

今天主要学习了组件实例对象的一个重要内置关系和单文件组件。先说一下实例对象的内置关系&#xff0c;在这里要对JS中的原型链有一定的基础&#xff0c;Vue构造函数的prototype原型指向的是Vue的原型对象&#xff0c;new出来的Vue实例对__proto__同样指向的是Vue的原型对象&am…

条款16:成对使用 new 和 delete 时要采用相同形式

下面程序的行为是未定义的。至少&#xff0c;stringArray指向的100个string对象中有99个不太可能被正确地析构。 被delete的指针指向单个对象还是一个对象数组&#xff1f;内存数组通常包括数组的大小&#xff0c;delete可以知道需要调用多少个析构函数。 使用delete时使用了方…

案例088:基于微信小程序的校车购票平台设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

Hexo 部署 Github Pages, Github Actions自动部署

想整个静态的博客部署在github pages 历经两天的折磨终于是摸索成功了&#xff0c;官网的文档太简陋了&#xff0c;很多东西没说清楚。 欢迎大家访问我的博客&#xff01; CanyueThis is Canyues blog.https://mobeicanyue.github.io/ 最终实现的效果&#xff0c;一个项目仓库…