声明式管理方(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.mzph.cn/news/593241.shtml

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

相关文章

【视野提升】软硬件融合

个体和系统 凯文凯利在他的《失控》一书中提到了一个非常有意思的概念——涌现,简单来说,就是众多个体的集合会涌现出超越个体特征的某些高级的特征。 例如,通过把个体的计算机连接到一个网络,涌现出了互联网这个新兴事物&#x…

unity C# 中通俗易懂LINQ使用案例

文章目录 1. 从数组或列表中查询元素**:2. **排序与分组**:3. **连接多个数据源**:4. **聚合操作**:5. **分页查询**:6. **多条件查询**:7. **转换和投影(Select)**:8. *…

计算机网络期末复习——计算大题(一)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

SSM养老院综合服务系统----计算机毕业设计

项目介绍 该项目为后台管理项目,分为管理员与护工两种角色; 管理员角色包含以下功能: 管理员登录,个人资料密码管理,用户管理,床位类型管理,床位管理,护工管理,老人管理,咨询登记管理,预约登记管理,老人健康信息管理,费用管理等功能。 护…

MFC用代码加载一张bmp图片到picture control并适应到控件大小 解决OnInitDialog中调用不显示

要使用CImage::Draw的缩放功能来适应控件大小,你需要先获取控件的当前大小,然后根据这个大小来调整图片的绘制尺寸。以下是一个修改后的示例,展示了如何实现这一点: 获取控件大小:首先,获取Picture Control…

1.C++语言的编译器及编译流程

1.C编译器 编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序。以下是一些主流的C编译器及其简要用法: GNU Compiler Collection (GCC):’ GCC原名GNU C Compiler,后来逐渐支持更多的语言编译(C、Fortran、…

Flutter 四:main.dart简单介绍

main.dart简单介绍 运行结果

CNN——LeNet

1.LeNet概述 LeNet是Yann LeCun于1988年提出的用于手写体数字识别的网络结构,它是最早发布的卷积神经网络之一,可以说LeNet是深度CNN网络的基石。 当时,LeNet取得了与支持向量机(support vector machines)性能相…

MySQL5.7控制复制源服务器的SQL语句

官网地址:MySQL :: MySQL 5.7 Reference Manual :: 13.4.1 SQL Statements for Controlling Replication Source Servers 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. MySQL 5.7 参考手册 / ... …

Vue:Vue 3.4 新特性

Vue 3.4 是 Vue.js 的一个重要更新,它在性能、API 和能上带来了许多改进和增强。 更好的 TypeScript 支持 Vue 3.4 进一步加强了 TypeScript 的集成,提供了更好的类型推断和更丰富的类型定义,使得使用 TypeScript 开发 Vue 应用变得更加顺畅…

看懂 Git Graph

目录 文章目录 目录Git Graph看懂 GraphVSCode Git Graph 插件1. 选择展示的 Branches2. Checkout 到一个 Branch3. 找到指定 Branch 最新的 Commit4. 找到 Branch 分叉口5. 查看 2 个 Commits 之前的区别 Git Graph Git Graph 是服务于 Git 分支管理的一种可视化工具&#xf…

大文件断点下载Range下载zip包显示文件损坏

问题:大文件下载,其它格式的文件及rar格式的压缩包正常下载但是 之后zip包下载后解压失败 原因分析: 1. 查看上传文件的属性值 如图,10.4kb是已经约去小数点的值,准确的大小应该是10663字节10.4130859375KB,所以用10.…

VS Code 远程连接云机器训练配置

VS Code 远程连接云机器 Visual Studio Code(以下简称 VS Code)是一个由微软开发的代码编辑器。VS Code 支持代码补全、代码片段、代码重构、Git 版本控制等功能。 安装 VSCode步骤简单且网上有很多教程,这里不过多重复了。 VS Code 现已支…

Nacos配置回滚

前言 很多时候,我们会配置错一些属性,或者需要回滚某些属性,这时候使用Nacos的回滚功能就很方便了 配置回滚 1、在控制台中,选择左侧导航栏的 “配置管理”,进入历史版本,选择Group和data id&#xff0c…

掌握ROS:完整的认识ROS

目录 前景知识补充 什么是元操作系统? 高层决策 高层决策的特点 什么是ROS? ROS的框架 1. 通信机制 系统工具 开发框架 ROS的开发流程 ROS的应用场景 前景知识补充 什么是元操作系统? 元操作系统(Meta-Operating Sys…

opencv C++透视变换

#include <opencv2/opencv.hpp> #include <iostream> int main() {// 1. 读取图像 cv::Mat image cv::imread("C:/Users/10623/Pictures/adf4d0d56444414cbeb809f0933b9214.png");if (image.empty()) {std::cerr << "无法读取图像!"…

PTA找出不是两个数组共有的元素(C语言)

读题&#xff1a; 给定两个整型数组&#xff0c;本题要求找出不是两者共有的元素。 输入格式: 输入分别在两行中给出两个整型数组&#xff0c;每行先给出正整数N&#xff08;≤20&#xff09;&#xff0c;随后是N个整数&#xff0c;其间以空格分隔。 输出格式: 在一行中按…

以源码为驱动:Java版工程项目管理系统平台助力工程企业迈向数字化管理的巅峰

随着企业规模的不断扩大和业务的快速发展&#xff0c;传统的工程项目管理方式已经无法满足现代企业的需求。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;企业需要借助先进的数字化技术进行转型。本文将介绍一款采用Spring CloudSpring BootMybat…

vr眼镜和AR眼镜的区别有哪些?哪些产品可以支持VR应用?

vr眼镜怎么连接手机 要将VR眼镜连接到手机上&#xff0c;您可以按照以下步骤进行&#xff1a; 1. 确保您的手机支持VR应用程序&#xff1a;首先&#xff0c;确保您的手机具备运行VR应用程序的硬件和软件条件。一些VR应用程序可能对设备有特定的要求&#xff0c;如处理器性能、操…

【Java并发】深入浅出 synchronized关键词原理-上

一个问题的思考 建设我们有两个线程&#xff0c;一个进行5000次的相加操作&#xff0c;另一个进行5000次的减操作。那么最终结果是多少 package com.jia.syn;import java.util.concurrent.TimeUnit;/*** author qxlx* date 2024/1/2 10:08 PM*/ public class SynTest {privat…