当前位置: 首页 > news >正文

k8s的声明式资源管理

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

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

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

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

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

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

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

分别有三种方式:

create
#只能创建,不能更新。从指定的yaml文件中读取配置。创建服务。不能更新服务。
apply -f
#既可以创建资源对象,也可以更新资源对象。如果yaml文件更改了,apply可以直接更新资源对象。(使用最多)
delete -f
#删除yaml文件中声明的资源对象。例如deployment、pod、service

如何生成yaml文件

1、 手动创建

2、 根据已有的资源直接生成

kubectl get deployments.apps nginx -o yaml > /opt/test.yaml
#基于已有资源直接创建yaml文件
kubectl apply -f test.yaml
#执行yaml文件
#只能运行一次。
#运行成功后如果还需要修改需要基于最新的deployment再创建yaml文件

kubectl apply -f test.yaml --force
#强制执行yaml文件
#如果不想使用最新的deployment再创建yaml文件可以使用--force强制执行

只要是基于yaml文件创建的的都可以导出

kubectl get svc nginx-service -o yaml > /opt/service.yaml
#基于已有的yaml文件生成

基于yaml文件创建的pod也都可以导出

kubectl get pod nginx-6fdbccbdbb-7lkzn -o yaml > /opt/service.yaml
#基于已有的yaml文件生成

常见的yaml类型

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

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

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

deployment的yaml文件格式

kubectl explain deployment
#查看deployment详细信息
#只有deployment的API-VERSION版本是apps/v1vim nginx1.yaml
#创建yaml文件apiVersion: apps/v1
#声明api版本的标签
kind: Deployment
#定义资源的类型、角色或者是控制器.例如:service/pod/deployment/job/ingress/daemonset/statefulset
metadata:name: nginx1
#定义创建资源名称namespace: zyg
#定义命名空间labels:bqb: nginx1
#定义标签名称
#定义创建资源的元数据信息。例如:资源名称以及资源对象部署的命名空间也可以在这里声明、标签等等信息
spec:
#定义deployment资源需要的参数和属性replicas: 3
#定义副本数selector:
#定义标签选择器。属于哪个标签。满足哪个标签的资源定义副本数为3matchLabels:bqb: nginx1
#选择匹配的标签需要和上面定义的标签完全对应template:
#定义业务的模板。如果定义了多个副本,那么所有的副本属性都会按照模板的配置进行匹配。副本使用的配置是>哪些。metadata:labels:bqb: nginx1
#定义了pod的副本都使用元数据的标签和属性来进行匹配spec:containers:- name: nginximage: nginx:1.10ports:- containerPort: 80
#声明容器的相关参数。包括:容器的命名/容器的版本/容器的暴露端口号。
#虽然这里指定了暴露端口号是80,nginx镜像默认端口就是80.
#即使定义了别的端口,也不会改变容器的默认端口。
#如果不是默认端口,则需要在这里声明端口号
#      ports:
#      - containerPort: 80

service的yaml文件

kubectl explain service
#查看service详细信息vim nginx-service.yaml#定义API版本:
apiVersion: v1
kind: Service
metadata:name: nginx-servicenamespace: zyglabels:bqb: nginx1
#元数据信息包括:service的名称,所属的命名空间。以及要匹配的deployment的标签。要和之前的保持一致
spec:type: NodePortports:- port: 80
#定义service内部暴露的端口targetPort: 80
#定义容器对外暴露的端口nodePort: 30000
#定义外部端口如果有需要可以直接定义selector:bqb: nginx1
#这里的标签是为了匹配所有的标签都是bqb: nginx1的pod的后端提供服务kubectl apply -f nginx-service.yaml
kubectl get svc -n zyg

pod的yaml文件

kubectl explain pod
#查看pod详细信息vim nginx-pod.yaml#定义pod的apiVersion
apiVersion: v1
#定义资源的类型
kind: Pod
#定义元数据信息,pod的名称/所属的命名空间/标签等信息
metadata:name: centos1namespace: zyg
#定义运行在哪个命名空间
spec:restartPolicy: Never
#pod内的容器如果启动失败或者有问题时的重启策略
#Always:永不重启/Never:从不重启/Onfailure:只有异常退出才会重启。状态码非0则重启.如果状态码是0则不重启
#restartPolicy:是容器的重启策略。
#如果资源类型定义为deployment这个容器的重启策略只能是Always。不写默认是Alwayscontainers:- name: centosimage: centos:7kubectl apply -f nginx-pod.yaml
kubectl get pods -n zyg

restartPolicy的三种状态码

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

Always:一直重启

Never:从不重启

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

command和args

command、args定义容器运行的命令参数。类似于docker中的CMD和entrypoint

command、arges只能存在一个。args可以给command传参

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

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

args的写法

例如:

写法1:
containers:- name: centosimage: centos:7args: - /bin/bash
#默认执行的shell- -c
#表示命令行- while true; do sleep 3600; done
#执行的命令,多个命令需要用分号隔开写法2:containers:- name: centosimage: centos:7args: ["/bin/bash", "-c", "touch /opt/123.txt; echo 123 > /opt/123.txt; sleep 3600"]
#在一行定义多个内容需要用逗号隔开。多个命令需要用分号隔开
#执行多个命令必须要加"/bin/bash", "-c"
#-c:表示输出命令的格式kubectl exec -it centos1 -n zyg -- 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标准输出

建议写在一行提高可读性

总结

1、 三种发布方式

蓝绿发布、灰度发布(目前最常用)、滚动发布(基于deployment默认的发布模式)

灰度发布(目前最常用):基于deployment的滚动发布,使用了暂停的机制。pause(暂停)/resume(继续)。只有所有升级完毕之后才可以回滚

2、 三种yaml文件类型

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

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

3、 不基于控制器的pod的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标准输出

建议写在一行提高可读性

相关文章:

k8s的声明式资源管理

在k8s当中支持两种声明资源的方式: 1、 yaml格式:主要用于和管理资源对象 2、 json格式:主要用于在API接口之间进行消息传递 声明式管理方法(yaml)文件 1、 适合对资源的修改操作 2、 声明式管理依赖于yaml文件,所有的内容都…...

Git | tag相关命令

语法命令 git tag -h usage: git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>]<tagname> [<head>]or: git tag -d <tagname>...or: git tag -l [-n[<num>]] [--contains <commit>] [--no-contains <commit&g…...

【Java期末】学生成绩管理系统

诚接计算机专业编程任务(C语言、C、Python、Java、HTML、JavaScript、Vue等)10/15R&#xff0c;如有需要请私信我&#xff0c;或者加我的企鹅号&#xff1a;1404293476 本文资源下载地址&#xff1a;https://download.csdn.net/download/weixin_47040861/88697244 —————…...

顶顶通呼叫中心中间件通过队列外呼拨打另一个sip并且放音(mod_cti基于FreeSWITCH)

介绍 顶顶通呼叫中心中间件通过队列外呼拨打另一个sip并且放音 一、添加acl 打开ccadmin->点击配置文件->点击acl.conf->在</list>后面添加一条图中的信息->muqi是我自己设置的名字你们可以修改为自己需要的名字->添加好了点击提交XML->在运维调试点…...

SQL Server从0到1——报错注入

报错注入分为三类&#xff1a;隐式转换&#xff0c;和显示转换&#xff0c;declare函数 隐式转换&#xff1a; 原理&#xff1a;将不同数据类型的数据进行转换或对比 select * from test.dbo.users where (select user)>0 #对比 select * from test.dbo.users where ((sel…...

【python高级用法】线程

前言 Python通过标准库的 threading 模块来管理线程。这个模块提供了很多不错的特性&#xff0c;让线程变得无比简单。实际上&#xff0c;线程模块提供了几种同时运行的机制&#xff0c;实现起来非常简单。 线程模块 线程对象Lock对象RLock对象信号对象条件对象事件对象 简单…...

分布式高级知识点

分布式一致性算法: Paxos Paxos 是一种分布式一致性算法,用于在分布式系统中达成共识。它可以保证,即使在存在节点故障的情况下,系统也能就某个值达成一致。 Paxos 算法的基本思想是,首先选出一个协调者(leader)。协调者负责向其他节点发送提案(proposal)。其他节点收…...

Linux 命令之 dpkg 的简单使用

查询已安装的软件包及其依赖关系 dpkg -s name...

Ubuntu20.04服务器使用教程(安装教程、常用命令、故障排查)持续更新中.....

安装教程&#xff08;系统、NVIDIA驱动、CUDA、CUDNN、Pytorch、Timeshift、ToDesk&#xff09; 制作U盘启动盘&#xff0c;并安装系统 在MSDN i tell you下载Ubuntu20.04 Desktop 版本&#xff0c;并使用Rufus制作UEFI启动盘&#xff0c;参考UEFI安装Ubuntu使用GPTUEFI模式安…...

访问学者J1签证的申请流程

访问学者J1签证是许多人前往美国进行学术研究和文化交流的重要途径之一。申请J1签证需要经过一系列步骤和程序&#xff0c;让知识人网小编带大家来了解一下申请流程吧。 首先&#xff0c;申请者需要确认自己符合J1签证的资格要求。这包括被美国的赞助机构或组织接受&#xff0c…...

51单片机(STC8)-- GPIO输入输出

文章目录 I/O口相关寄存器端口数据寄存器端口模式配置寄存器&#xff08;PxM0&#xff0c;PxM1&#xff09;端口上拉电阻控制寄存器(PxPU)关于I/O的注意事项 配置I/O口I/O设置demoI/O端口模式LED控制&#xff08;I/O输出&#xff09;按键检测&#xff08;I/O输入&#xff09; S…...

【实用安装教程】在win系统下制作Mac OS镜像启动U盘

第一步&#xff1a;制作Mac OS系统引导镜像启动U盘 准备一个8G&#xff08;或以上&#xff09;的U盘插入到win系统的电脑上 去下载TransMac(Mac启动盘制作工具)v10.4按照说明安装好 插入准备好的U盘&#xff0c;U盘数据要转移&#xff0c;打开TransMac&#xff0c;右键U盘选…...

职场唠嗑-国家教学

文章目录 职场晋升潜规则&#xff1a;让上司看到自己工作能力职场生存指南&#xff1a;脆弱无罪&#xff0c;眼泪如何变利器关于具备谋取好职位的资格实习生在职场的基本“规矩”比能力更能决定人生的&#xff0c;是你对工作的态度跳槽&#xff1a;看别人家的“饭”端自家的碗职…...

【温故而知新】JavaScript数据结构详解

一、概念 JavaScript是一种弱类型的编程语言&#xff0c;它提供了一些内置的数据结构来存储和组织数据。 在计算机科学中&#xff0c;数据结构是一种特定的方式来组织和存储数据&#xff0c;以便于有效地访问和修改数据。在JavaScript中&#xff0c;数据结构是指相互之间存在…...

matlab如何标定相机内外参和畸变参数

关于内外参矩阵和畸变矩阵可以学习 https://blog.csdn.net/qq_30815237/article/details/87530011?spm1001.2014.3001.5506 在APP中找到 camera Calibrator 点击 Add Images&#xff0c;导入拍照图片。标定20张左右就够了&#xff0c;然后角度变一下&#xff0c;但不需要变太…...

【卫星科普】什么是农业一号卫星和农业二号卫星?

农业一号卫星和农业二号卫星是中国自主研发的两颗重要卫星&#xff0c;主要用于农业领域的监测和研究。 农业一号卫星是中国第一颗具备红边波段传感器的卫星&#xff0c;也是世界上第一颗具备红边波段的宽视场多光谱中高分辨率卫星。这对农业农村遥感监测非常重要&#xff0c;…...

imgaug库指南(一):从入门到精通的【图像增强】之旅

文章目录 引言imgaug简介安装和导入imgaug代码示例imgaug的强大之处和用途小结结尾 引言 在深度学习和计算机视觉的世界里&#xff0c;数据是模型训练的基石&#xff0c;其质量与数量直接影响着模型的性能。然而&#xff0c;获取大量高质量的标注数据往往需要耗费大量的时间和…...

vue封装基础input组件(添加防抖功能)

先看一下效果&#xff1a; // 调用页面 <template><div><!-- v-model&#xff1a;伪双向绑定 --><my-input v-model"inputVal" label"姓名" type"textarea" /></div> </template><script> import…...

小程序一次性订阅消息(消息通知):java服务端实现

文章目录 引言一、消息订阅1.1 小程序订阅消息功能介绍1.2 消息分类1.2.1 新版一次性订阅消息Beta1.2.2 一次性订阅消息&#xff08;用户通过弹窗订阅&#xff09;1.2.3 长期订阅消息&#xff08;用户通过弹窗订阅&#xff09;1.2.4 设备订阅消息 二、获取模板ID1.登录[微信公众…...

百度自由DIY小程序源码:PHP+MySQL组合开发 带完整的搭建教程

随着移动互联网的快速发展&#xff0c;小程序已成为企业与用户互动的重要平台。然而&#xff0c;对于许多中小企业和开发者来说&#xff0c;从零开始开发一款小程序需要投入大量的时间和资源。 以下是部分代码示例&#xff1a; 系统特色功能一览&#xff1a; 1.高度自定义&…...

Linux平台总线驱动开发与设备树应用详解

1. Linux总线设备驱动模型概述在Linux内核开发中&#xff0c;总线设备驱动模型是一个非常重要的架构设计。作为一名长期从事Linux驱动开发的工程师&#xff0c;我深刻体会到这种设计模式带来的好处。它完美体现了软件工程中的"分离"思想&#xff0c;让驱动开发变得更…...

零基础新手如何借助快马ai编程迈出代码第一步

作为一个零编程基础的新手&#xff0c;第一次接触代码时难免会感到迷茫。最近尝试用InsCode(快马)平台搭建个人博客网站&#xff0c;发现整个过程比想象中简单很多。下面分享我的实践过程&#xff0c;希望能帮助同样想入门的朋友。 理解基础概念 刚开始连"框架"是什么…...

免费商用AI绘画:Bidili Generator基于SDXL,LoRA风格一键切换

免费商用AI绘画&#xff1a;Bidili Generator基于SDXL&#xff0c;LoRA风格一键切换 1. 项目概述&#xff1a;当SDXL遇上Bidili风格 在AI绘画领域&#xff0c;Stable Diffusion XL&#xff08;SDXL&#xff09;1.0已经成为开源图像生成的标杆模型。而Bidili Generator正是在这…...

TOPMAX嵌入式Top-N最大值追踪库详解

1. TOPMAX库概述&#xff1a;嵌入式系统中的Top-N最大值追踪引擎TOPMAX是一个专为资源受限嵌入式平台设计的轻量级Arduino库&#xff0c;其核心功能是实时、高效地维护一个动态数据流中的前N个最大值。该库并非简单的排序容器&#xff0c;而是一种经过工程优化的“滑动窗口最大…...

香熏哪个更值得推荐

在快节奏的现代生活中&#xff0c;香薰已成为许多人放松心情、提升生活品质的重要方式。然而&#xff0c;市面上的香薰产品琳琅满目&#xff0c;如何选择一款既安全又高效的香薰呢&#xff1f;本文将从多个角度分析&#xff0c;为什么树边香氛更值得推荐。1. 天然植萃&#xff…...

触发器导致的DG库日志同步中断

触发器导致的DG库日志同步中断 第一次排查 问题复现 问题解决 第一次排查 主库服务器宕机重启后,到备库的日志传输中断,备库一直在等某个日志,主库上有这个日志文件,但是不会自动传输到备库上。 主库日志一直在刷ORA-16191和ORA-1017的报错: FAL[server, ARC0]: Error …...

ESP32轻量libcurl移植:HTTP/HTTPS客户端开发指南

1. 项目概述libcurl-esp32是一个专为 ESP32 平台定制的轻量化 libcurl 移植库&#xff0c;其核心目标是在 PlatformIO 构建环境下&#xff0c;为嵌入式固件开发者提供标准curl/curl.h头文件接口及对应运行时功能。该库并非完整移植上游 libcurl 的全部特性&#xff08;如 FTP、…...

避坑指南:在Ubuntu 22.04上为Autoware配置Docker与NVIDIA GPU支持(含代理与镜像源配置)

深度避坑&#xff1a;Ubuntu 22.04下Autoware与Docker的GPU实战配置全解 当你在深夜的终端前反复输入docker run --gpus all却只收获冰冷的错误提示时&#xff0c;这种挫败感我深有体会。本文不是又一份标准安装教程&#xff0c;而是从17次失败尝试中提炼出的生存手册&#xff…...

回溯算法双杀:子集 + 电话号码的字母组合 | 经典模板题解析

目录 一、LeetCode 78&#xff1a;子集 题目描述 核心思路&#xff08;回溯法&#xff09; 完整代码 关键解析 二、LeetCode 17&#xff1a;电话号码的字母组合 题目描述 核心思路&#xff08;回溯法&#xff09; 完整代码 关键解析 三、两道题核心对比 总结 一、L…...

app手机监控功能

1 发现抖动的时候&#xff1a;发出大声警报 2 当处于监控状态的时候&#xff0c;手机无法打开任何app&#xff0c;只能停止在屏保界面。无法进行任何操作&#xff0c;无法关机 3 发现抖动的时候&#xff1a;拍照录视频 4 发现抖动的时候&#xff1a;打开GPS开关&#xff0c;发送…...