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标准输出

建议写在一行提高可读性

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

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

相关文章

python股票分析挖掘预测金融大数据获取方法和实现(2)

本人股市多年的老韭菜了,各种股票分析书籍,技术指标书籍阅历无数,萌发想法,何不自己开发个股票预测分析软件,选择python因为够强大,它提供了很多高效便捷的数据分析工具包, 我们已经初步的接触…

DDD+SOA的事件驱动微服务读写分离架构

DDD DDD是Eric Evans于2003年出版的书名,同时也是这个架构设计方法名的起源 Eric Evans “领域驱动设计之父”,世界杰出软件建模专家。 他创建了Domain Language公司,致力于帮助公司机构创建与业务紧密相关的软件。 他在世界各地宣讲领域驱动…

DrGraph原理示教 - OpenCV 4 功能 - 二值化

二值化,也就是处理结果为0或1,当然是针对图像的各像素而言的 1或0,对应于有无,也就是留下有用的,删除无用的,有用的部分,就是关心的部分 在图像处理中,也不仅仅只是1或0,…

test dbtest-02-Liquibase 是一个数据库变更管理工具

拓展阅读 DbUnit-01-数据库测试工具入门介绍 database tool-01-flyway 数据库迁移工具介绍 什么是 Liquibase? Liquibase 是一种开源的数据库架构变更管理解决方案,它使你能够轻松地管理数据库变更的修订版本。 Liquibase使得参与应用程序发布流程的…

采用 SO-8 封装的 LDO(如 MIC5209BM),用于密封环境时,为保证热应力降额满足要求,通常热耗不应超过 0.3W。

在密封环境中使用SO-8封装的LDO(如MIC5209BM)时,通常会对热耗进行限制,以确保热应力降额满足要求。其主要原因是; 封装热阻 SO-8封装的热阻较高,这意味着它在将内部产生的热量传递到周围环境时效率不高。热阻可以用θJA(连接到环境的热阻)和θJC(连接到芯片的热阻)来…

element-ui table-自定义表格某列的表头样式或者功能

自带表格 自定义表格某列的表头样式或者功能 <el-table><el-table-column :prop"date">//自定义表身每行数据<template slot-scope"scope">{{scope.row[scope.column.label] - ? - : scope.row[scope.column.label]}}</template>…

向爬虫而生---Redis 基石篇1 <拓展str>

前言: 本来是基于scrapy-redis进行讲解的,需要拓展一下redis; 包含用法,设计,高并发,阻塞等; 要应用到爬虫开发中,这些基础理论我觉得还是有必要了解一下; 所以,新开一栏! 把redis这个环节系统补上,再转回去scrapy-redis才好深入; 正文: Redis是一种内存数据库&#xff0c…

Spark导入报错:object security is not a member of package org.apache.kafka.common

引言 build spark里自带的示例项目时报了这样一个错&#xff1a;object kafka is not a member of package org.apache&#xff0c;排查后发现是因为添加的jar依赖里没有kafka这一项&#xff0c;去Maven下载了对应版本的Kafka jar包后放置在examples\jars底下却仍然报错object …

Java经典框架之SpringSecurity

SpringSecurity Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机&#xff0c;Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. SpringSecurity基本应用…

wps将姓名处理格式为:姓**

1.打开wps&#xff0c;在要处理数据右侧一个单元格 输入公式&#xff1a;LEFT(A1,1)&"**"&#xff0c;然后回车 2.按住ctrl和处理好的数据的右下角小方框&#xff0c;往下拖动即可生成格式为&#xff1a;姓** 格式的数据 3.复制生成的数据&#xff0c;右键选择 “…

springboot日志

1、日志用途 故障排查和调试&#xff1a;当项目出现异常或者故障时&#xff0c;日志记录可以快速帮助我们定位到异常的部分以及知道异常的原因。性能监测和优化&#xff1a;通过在关键代码路径中添加日志记录&#xff0c;可以了解应用程序的性能表现&#xff0c;并根据性能表…

MT8766安卓核心板规格参数_MTK8766核心板模块方案定制

MT8766安卓核心板&#xff1a;高性能、稳定可靠、集成度高的一体化解决方案 MT8766安卓核心板采用联发科MTK8766四核4G模块方案&#xff0c;是一款高度集成的安卓一体板。四核芯片架构&#xff0c;主频可达到2.0GHz&#xff0c;支持国内4G全网通。12nm制程工艺&#xff0c;支持…

引导过程与服务控制

一、开机启动的完整过程 bios加电自检测-------mbr------grub----------加载内核文件------------启动第一个进程 简述&#xff1a;加电后bios程序会自检硬件&#xff0c;硬件无故障&#xff0c;会根据第一启动项去找内核&#xff0c;一般来说&#xff0c;第一启动项是硬盘&a…

网络端口(包括TCP端口和UDP端口)的作用、定义、分类,以及在视频监控和流媒体通信中的定义

目 录 一、什么地方会用到网络端口&#xff1f; 二、端口的定义和作用 &#xff08;一&#xff09;TCP协议和UDP协议 &#xff08;二&#xff09;端口的定义 &#xff08;三&#xff09;在TCP/IP体系中&#xff0c;端口(TCP和UDP)的作用 &#xff08;…

使用GPTs+Actions自动获取第三方数据

目录 安装插件与GPT对话联网插件首先,创建GPTs。 Voxscript 官网:https://voxscript.awt.icu/index.htmlOpenAI Schema:https://voxscript.awt.icu/swagger/v1/swagger.yamlServer URL: servers: url: https://voxscript.awt.icu安装插件 要使用这个插件&

HarmonyOS开发环境配置

设备要求 CPU内存&#xff1a;12GB以上电脑需要支持虚拟化并开启虚拟化功能硬盘可用空间30GB以上 安装编辑器的时候需要下载SDK、ohpm依赖确保网络畅通。 HarmonyOS开发环境安装步骤如下 下载并安装DevEco Studio&#xff1a;DevEco Studio是华为官方提供的集成开发环境&am…

干洗店洗鞋店小程序核心功能有哪些?

在繁忙的生活中&#xff0c;我们的鞋子常常承载着风尘仆仆的故事。而洗鞋小程序&#xff0c;就是那个让您的鞋子焕然一新的魔法师。通过这个小程序&#xff0c;您可以在线预约、支付&#xff0c;查询洗鞋订单&#xff0c;并与洗鞋店铺进行互动&#xff0c;轻松享受专业的洗鞋服…

HarmonyOS4.0系统性深入开发12 卡片数据交互说明

卡片数据交互说明 ArkTS卡片框架提供了updateForm()接口和requestForm()接口主动触发卡片的页面刷新。 接口是否系统能力约束updateForm否1. 提供方调用。2. 提供方仅允许刷新自己的卡片&#xff0c;其他提供方的卡片无法刷新。requestForm是1. 使用方调用。2. 仅允许刷新添加…

数字图像处理(3)——频域图像增强

&#x1f525;博客主页&#xff1a;是dream &#x1f680;系列专栏&#xff1a;深度学习环境搭建、环境配置问题解决、自然语言处理、语音信号处理、项目开发 &#x1f498;每日语录&#xff1a;贤才&#xff0c;难进易出&#xff1b;庸才&#xff0c;易进易初出&#xff1b;…

Character Controller Smooth

流畅的角色控制器 Unity的FPS解决方案&#xff01; 它是一种具有非常平滑运动和多种设置的解决方案&#xff1a; - 移动和跳跃 - 坐的能力 - 侧翻角度 - 不平整表面的处理 - 惯性守恒 - 重力 - 与物理物体的碰撞。 - 支持没有家长控制的平台 此解决方案适用于那些需要角色控制器…