声明式管理方(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: liu
  labels: 
    wdf: nginx1
spec:
#定义deployment的资源需要的参数属性。
  replicas: 3
#定义副本数
  selector: 
#定义标签选择器
    matchLabels:
      wdf: nginx1
#选择匹配的标签
  template:
#定义业务模板,如果定义了多个副本,所有的副本的属性都会按照模版的配置进行匹配
    metadata:
      labels:
        wdf: nginx1
#定义了pod的副本都使用元数据的标签和属性来进行匹配
    spec:
      containers: 
      - name: nginx
        image: nginx:1.10
       #posts:
       #- containerPort: 80
#spec声明的是容器的相关参数,虽然我指定了容器的暴露端口是80,nginx默认的镜像就是80,即使制定了其他端口,也不会改变容器的端口。(默认的可以忽略不写)

service的yaml文件格式

#定义api的版本
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: liu
  labels:
    wdf: nginx1
# 元数据信息包扩:service的名称、所属的命名空间、以及要匹配的deployment的标签要和之前的保持一致
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    nodePort: 32000
  selector:
    wdf: nginx1
#匹配所有的标签都是wdf:nginx1的pod通过后端服务

pod的yaml文件格式

#定义POD的APIVERSION
apiVersion: v1
#定义资源类型
kind: Pod
#定义元数据信息,pod的名称,命名空间,标签
metadata:
  name: centos1
  namespace: liu
  labels:
    wdf: nginx1
spec:
  restartPolicy: Never
#retartPolicy指的是pod内的容器启动失败或者问题的重启策略:Always Never Onfailure(只有异常退出才会重启,状态码非0,如果状态是0,不重启),值得是容器的重启策略,资源类型定义为deployment,容器的重启策略只能是Always。
  containers: 
  - name: centos
    image: 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: centos1
  namespace: lyw
spec:
  restartPolicy: Always
  containers:
  - name: centos
    image: centos:7
    command: ["echo"]
    args: ["hello,world!"]



kubectl apply -f pod.yaml

kubectl logs -n lyw centos1

#启动时候默认执行的命令,args可以给command传参类似于(CMD和entrypoint),如果在yaml文件中定义了输出内容,就会覆盖掉原来容器内部的标准输出。

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

args格式

写法一
apiVersion: v1
kind: Pod
metadata:
  name: centos1
  namespace: lyw
spec:
  restartPolicy: Always
  containers:
  - name: centos
    image: centos:7
    args:
    - /bin/bash
    - -c
    - while true; do sleep 36000; done


sleep 36000: 运行36000秒后退出

kubectl apply -f pod.yaml
kubectl get pod -n lyw

写法二
apiVersion: v1
kind: Pod
metadata:
  name: centos1
  namespace: lyw
spec:
  restartPolicy: Always
  containers:
  - name: centos
    image: centos:7
    args: ["/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: centos1
  namespace: lyw
spec:
  restartPolicy: Always
  containers:
  - name: centos
    image: centos:7
    command: ["/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: centos1
  namespace: lyw
spec:
  restartPolicy: Always
  containers:
  - name: centos
    image: centos:7
    command: ["/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标准输出,建议写在一行提高可读性

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【华为机试】2023年真题B卷(python)-考古问题

一、题目 题目描述: 考古问题,假设以前的石碑被打碎成了很多块,每块上面都有一个或若干个字符,请你写个程序来把之前石碑上文字可能的组合全部写出来,按升序进行排列。 二、输入输出 三、示例 示例1: 输入输出示例仅供…

java练习题之常用类Object类,包装类

常用类 应用知识点: Object类 包装类 习题: 1:(Object 类)仔细阅读以下代码,写出程序运行的结果;并简述 和 equals 的区别。 true false 是判断两个变量或实例是不是指向同一个内存空间。 比较两个引用类型的地址&…

声明式管理方法

声明式管理方法(yaml)文件: 1,适合对资源的修改操作 2,声明式管理依赖于yaml文件,所有的内容都在yamI文件当中 3,编辑好的yaml文件,还是要依靠陈述式命令发布到k8s集群当中 发布的…

Spring见解 1

1.Spring概述 1.1.Spring介绍 ​ Spring是轻量级Java EE应用开源框架(官网: http://spring.io/ ),它由Rod Johnson创为了解决企业级编程开发的复杂性而创建 1.2.简化应用开发体现在哪些方面? IOC 解决传统Web开发中…

SpringBoot—支付—微信

一、支付流程 1.1、支付准备 1.获取商户号 微信商户平台 申请成为商户 > 提交资料 > 签署协议 > 获取商户号 2.获取 AppID 微信公众平台 注册服务号 > 服务号认证 > 获取APPID > 绑定商户号 3.申请商户证书 登录商户平台 > 选择 账户中心 > 安全…

Kali Linux实现UEFI和传统BIOS(Legacy)引导启动

默认Kali linux安装会根据当前启动的引导模式进行安装 例:以UEFI引导启动安装程序,安装后仅能在UEFI引导模式下进入系统 安装Kali系统 这边基于VirtualBox虚拟机镜像实战操作 首先创建一个Kali虚拟机 这里需要注意,把启动 EFI (只针对某些操作系统)选项勾选上,内存、处理器…

I.MX6ULL_Linux_驱动篇(52)linux CAN驱动

CAN 是目前应用非常广泛的现场总线之一,主要应用于汽车电子和工业领域,尤其是汽车领域,汽车上大量的传感器与模块都是通过 CAN 总线连接起来的。 CAN 总线目前是自动化领域发展的热点技术之一,由于其高可靠性, CAN 总线…

酷雷曼精彩亮相CMC 2023中国元宇宙大会,助力云上VR直播

12月23日,2023中关村论坛系列活动——CMC 2023中国元宇宙大会在石景山首钢园冰壶馆成功举办。酷雷曼VR作为元宇宙领域代表企业之一受邀出席会议,分享元宇宙技术研发成果及应用方案,并为大会提供VR直播技术支持。 大咖云集,共商元宇…

数据库进阶教学——主从复制(Ubuntu22.04主+Win10从)

目录 一、概述 二、原理 三、搭建 1、备份数据 2、主库配置Ubuntu22.04 2.1、设置阿里云服务器安全组 2.2、修改配置文件 /etc/my.cnf 2.3、重启MySQL服务 2.4、登录mysql,创建远程连接的账号,并授予主从复制权限 2.5、通过指令,查…

进程终结之道:kill与pskill的神奇战斗

欢迎来到我的博客,代码的世界里,每一行都是一个故事 进程终结之道:kill与pskill的神奇战斗 前言基本用法kill命令:基础语法:选项:示例: pskill命令:基础语法:选项&#x…

kbdnecnt.DLL文件缺失,软件或游戏无法启动运行,怎样快速修复?

不少人都在问“kbdnecnt.DLL文件”是什么?为什么电脑总是报错提示说“kbdnecnt.DLL文件缺失,软件无法启动”? 首先,先来了解“kbdnecnt.DLL文件”是什么? kbdnecnt.DLL是Windows操作系统中的一个动态链接库文件&#…

JOSEF约瑟 断电延时继电器 SRTD-220VDC-2H2D 导轨安装

系列型号: SRTD-24VDC-1H1D断电延时继电器;SRTD-110VDC-1H1D断电延时继电器; SRTD-220VDC-1H1D断电延时继电器;SRTD-110VAC-1H1D断电延时继电器; SRTD-220VAC-1H1D断电延时继电器;SRTD-24VDC-2H断电延时继电…

考PMP真的有用吗?看完立马不犹豫了!

其实我个人觉得在你考证之前,值得反思的是:为什么要考这个证书?是因为公司需要?个人职业发展?还是受到新闻报道或广告的影响,觉得PMP证书有价值,只是想了解一下。这样就会导致很多人会说&#x…

golang并发编程-channel

在golang 并发编程里,经常会听到一句话:不要通过共享内存进行通信,通过通信来共享内存。下面我们会介绍下channel, 通过源码的方式去了解channel是怎么工作的。 基本结构 流程图 代码解读 type hchan struct {qcount uint // …

HubSpot邮件营销好用吗?

HubSpot的邮件营销工具通常被认为是非常强大和易用的,但用户的体验和满意度会因个人需求和经验而异。以下是一些通常与HubSpot邮件营销工具相关的优势: 全面的功能: HubSpot的邮件营销工具提供了丰富的功能,包括电子邮件自动化、…

西门子消防主机电源维修控制器BCB8005

火灾自动报警部分主要由各个部位的火灾探测器及手动报警按钮、消火栓按钮等设备组成。火灾探测器就如同火灾报警系统的“眼睛”,通过各自的火灾探测器采集现场的火警信号,实时传送给火灾报警控制器,火灾报警控制器进行各种智能的分析判断后发出火灾报警&…

【力扣题解】P700-二叉搜索树中的搜索-Java题解

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P700-二叉搜索树中的搜索-Java题解🌏题目描述💡题解&#x1f…

Python 从入门到精通之通俗易懂学闭包

系列 Python从入门到精通之安装与快速入门-CSDN博客 Python从入门到精通之基本数据类型和变量-CSDN博客 Python从入门到精通之集合(List列表、Tuple元组、Dict字典、Set)-CSDN博客 Python从入门到精通之条件语句、循环语句和函数-CSDN博客 Python从…

【双指针算法】-- 左右指针

左右指针 前言一、双指针算法二、左右指针1.用于在已排序数组中找到两个数使其和为特定值2.在字符串中判断是否为回文 总结 前言 今天在刷Leetcode的时候觉得自己双指针掌握的还是不错的记录一下,写个学习笔记,也方便以后翻阅,如果也帮助到你了,那真是太好啦! 本篇介绍的是左右…

八大算法排序@希尔排序(C语言版本)

目录 希尔排序概念算法思想示例分析结论算法步骤选择增量序列按增量分组逐步缩小增量 算法优势 代码实现核心算法希尔排序代码实现: 时间复杂度空间复杂度特性总结 该排序会关联到直接插入排序的知识点,如果对于直接插入排序还有所疑惑,可以跳…