K8S三种发布方式和声明式资源管理
| 蓝绿发布 | 把应用服务集群标记位两个组,蓝组和绿组,先升级蓝组,先要把蓝组从负载均衡当中移除,绿组继续提供服务,蓝组升级完毕,再把绿组从负载均衡当中移除,绿组升级,然后都加入回负载均衡当中去,完成对外服务,对硬件资源要求很高,但是有了云计算和微服务,现在的成本也大大降低了 特点: 1.一旦出现问题,问题影响范围很大 2.发布策略简单 3.基于云计算技术和微服务,用户是无感知的 4.升级和回滚都比较方便 缺点: 在发布升级的过程之中,只有一部分集群在对外服务,可能会使集群的负载能力下降,响应变慢,需要注意给集群增加负载能力(一般来说没什么特殊需求) 段时间内可能会浪费一定的资源成本 |
| 金丝雀发布(灰度发布) | 基于deployment控制器创建的服务,才可以使用这种发布方式,也算是一种滚动更新,实现了一个步骤叫暂停,也就是发布的过程中,暂时停止,只有一部分的pod先升级,其他的pod还是处于老的版本,只有一部分用户可以访问新的版本,绝大数用户还在老版本,确定无问题之后,再把剩下的老版本升级成新的版本,也就是把暂停取消,继续发布,如果有问题可以立即回滚,暂停不是回滚,一旦取消暂停只能全部升级完毕之后,再回滚。 特点: 自动化的要求比较高,对运维人员的要求比较高 方便发现问题,及时解决,影响范围比较小 用户无感知,可以实现平滑过渡,而且比较节约资源 发布策略比较复杂 不易回滚,必须等到全部发布成功之后才能回滚。 |
| 滚动发布 | deployment的默认更新方式 |
| 应用程序升级,面临的最大的问题是新旧业务之间的切换,从立项>定稿>需求发布>开发>测试>发布,测试之后上线,再完美也会有问题,为了不让发生的问题影响所有用户,有了上述的三种发布方式 |
声明式资源管理(yaml文件)
| 1 | 适合对资源的修改操作 |
| 2 | 声明式管理依赖于yaml文件,所有的内容都在yaml文件当中 |
| 3 | 编辑好的yaml文件还是要靠陈述式命令发布到k8s集群当中 |
| Kubectl create | 只能创建,不能更新,从指定yaml文件中读取配置,创建服务,不能更新 |
| Kubectl apply -f | 既可以创建资源对象也可以更新资源对象,如果yaml文件更改了,apply可以直接更新资源对象 |
| Kubectl delete -f | 删除yaml文件中声明的资源对象,如deployment或者pod和service |
Yaml文件如何生成
| 1 | 手打 |
| 2 | 可以根据已有的资源,直接生成 1.deployment的yaml文件 2.Service的yaml文件 3.不基于控制器的pod的yaml文件 |
k8s当中支持两种声明式资源管理方式
| yaml格式 | 用来配置和管理资源对象 |
| Json格式 | 主要用于api接口之间消息的传递 |
[root@master01 k8s.yaml]# kubectl get deployments.apps
NAME READY UP-TO-DATE AVAILABLE AGE
myapp-test 0/3 3 0 5d
nginx-chen 0/1 1 0 40h
[root@master01 k8s.yaml]# kubectl get deployments.apps nginx-chen -o yaml
展示yaml文件
[root@master01 k8s.yaml]# kubectl get deployments.apps nginx-chen -o yaml > /opt/k8s.yaml/nginx-chen.yaml
导出修改
[root@master01 k8s.yaml]# vim nginx-chen.yaml
[root@master01 k8s.yaml]# kubectl apply -f nginx-chen.yaml
Warning: resource deployments/nginx-chen is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.
deployment.apps/nginx-chen configured
第二次更新必须要导出之后才能更新
[root@master01 k8s.yaml]# kubectl get pod
deployment
apiVersion: apps/v1
#声明API版本的标签
kind: Deployment
#定义资源的类型service/pod/deployment/jod/ingress/daemonset/statefulset
metadata:name: nginx1namespace: chenlabels:wdf: nginx1
#标签名可以自定义
#定义资源的元数据信息,资源名称,资源对象部署的命名空间,标签等等信息
spec:
#定义deployment的资源需要的参数属性replicas: 3
#定义副本数selector:
#定义标签选择器matchLabels:wdf: nginx1
#选择匹配的标签template:
#定义业务模版,如果定义了多个副本,所有的副本的属性都会按照模版的配置进行匹配metadata:labels:wdf: nginx1
#定义了pod的副本都使用元数据的标签和属性来进行匹配spec:containers:- name: nginximage: nginx:1.10posts:- containerPort: 80
#spec声明的是容器的相关参数,虽然我指定了容器的暴露端口是80,nginx默认的镜像就是80,即使声明了其他端口,也不会改变容器的端口,除非nginx的端口已经被修改,那么这里声明端口是可以的
service
#定义API的版本
apiVersion: v1
kind: Service
metadata:name: nginx-servicenamespace: chenlabels:wdf: nginx1
#这里的元数据信息包括,service的名称,所属的命名空间,以及要匹配的deployment的标签,这里的标签要和之前的标签名保持一致,否则它不知道为谁服务
spec:type: NodePortports:- port: 80targetPort: 80#nodepord: 30000
#这里可以指定访问端口,可以以不指定,不指定就会随机分配(范围是30000-32764)selector:wdf: nginx1
#匹配所有的标签都是wdf:nginx1的pod后端提供服务
pod
#定义pod的apirversion
apiVersion: v1
#定义资源的类型
kind: Pod
#定义元数据信息,主要是一些pod的名称,命名空间,标签
metadata:name: centos1namespace: chen
spec:restartPolicy: Never
#restartPolicy指的是pod内的容器启动失败或者有问题的重启策略:Always Never Onfailue ##三种重启策略,只有异常退出才会重启,状态非0,如果状态是0,不重启,restartPolicy指的是容器的重启策略,资源类
型定义为deployment,容器的重启策略只能是Alwayscontainers:- name: centosimage: centos:7command: ["echo"]args: ["hello,word!"]command
args
定义容器运行的命令参数,类型于docker的CMD和entrypoint
args可以理解docker中的cmd 给command传参
command和args都会覆盖原容器的标准输出(cmd)#定义pod的apiversion
apiVersion: v1
#定义资源的类型
kind: Pod
#定义元数据信息,pod的名称,所属的标签
metadata:name: centos1
spec:restartPolicy: Always
#restartPolicy指的是pod内的容器启动失败或者有问题的重启策略:always 指的是总是重启 never 指的是挂就挂了 Onfailure(只有异常退出才会重启,状态非0,如果状
态码是0,不重启),restartPolicy指的是容器的重启策略,资源类型定义为deployment,容器的重启策略只能是Alwayscontainers:- name: centosimage: centos:7args:- /bin/bash- -c- while true; do sleep 3600; done
#多个命令要用分号隔开#定义pod的apiversion
apiVersion: v1
#定义资源的类型
kind: Pod
#定义元数据信息,pod的名称,所属的标签
metadata:name: centos1namespace: xiaobu
spec:restartPolicy: Always
#restartPolicy指的是pod内的容器启动失败或者有问题的重启策略:always 指的是总是重启 never 指的是挂就挂了 Onfailure(只有异常退出才会重启,状态非0,如果状
态码是0,不重启),restartPolicy指的是容器的重启策略,资源类型定义为deployment,容器的重启策略只能是Alwayscontainers:- name: centosimage: centos:7command: ["/usr/bin/test", "-e", "/etc/passwd"]command: ["/bin/bash", "-c", "touch /tmp/live ; sleep 30; rm -rf /tmp/live; slepp 3600"]
#command和args只能有一个,会把容器的标准输出覆盖,不论是args和commmand都会覆盖CMD和ENTYRPOINTcommand和args不要同时出现,除非你要传参,都会容器的标准输出
相关文章:
K8S三种发布方式和声明式资源管理
蓝绿发布 把应用服务集群标记位两个组,蓝组和绿组,先升级蓝组,先要把蓝组从负载均衡当中移除,绿组继续提供服务,蓝组升级完毕,再把绿组从负载均衡当中移除,绿组升级,然后都加入回负载…...
从千问Agent看AI Agent——我们很强,但还有很长的路要走
前言 最近双十一做活动买了台新电脑,显卡好起来了自然也开始大模型的学习工作了,这篇文章可能是该系列的第一弹,本地私有化部署千问agent,后面还会尝试一些其他的大模型结合本地知识库或者做行业垂直模型训练的,一步…...
Word2Vector介绍
Word2Vector 2013 word2vec也叫word embeddings,中文名“词向量”,google开源的一款用于词向量计算的工具,作用就是将自然语言中的字词转为计算机可以理解的稠密向量。在word2vec出现之前,自然语言处理经常把字词转为离散的单独的…...
书生·浦语大模型全链路开源体系----(1)
书生浦语大模型全链路开源体系 什么是大语言模型? 大语言模型是指具有大规模参数和强大语言理解能力的机器学习模型。这些模型通常使用深度学习技术,特别是递归神经网络(RNN)或变换器(Transformer)等架构…...
第四篇 行为型设计模式 - 灵活定义对象间交互
第四篇:行为型设计模式 - 灵活定义对象间交互 行为型设计模式关注对象之间的交互和职责分配,旨在定义对象间的高效、灵活的通信机制。以下是十一种常见行为型设计模式的详解及其应用场景。 1. 策略模式详解及其应用场景 详解: 策略模式定义…...
2023最新租号平台系统源码支持单独租用或合租使用
这是一款租号平台源码,采用常见的租号模式。目前网络上还很少见到此类类型的源码。 平台的主要功能如下: 支持单独租用或采用合租模式; 采用易支付通用接口进行支付; 添加邀请返利功能,以便站长更好地推广…...
数据库的连接
连接数据库 我们使用WinR输入cmd打开运行窗口 输入:sqlplus并回车 输入用户名和密码,我用的是Scott,密码我自己设置的123456,Scott默认的密码是tiger,回车 这种情况表示登录成功 在连接Scott成功的情况下创建一些数据,在我的资源里面有个Oracle数据基础可以下载,直接复制粘…...
第14课 利用openCV快速数豆豆
除了检测运动,openCV还能做许多有趣且实用的事情。其实openCV和FFmpeg一样都是宝藏开源项目,貌似简单的几行代码功能实现背后其实是复杂的算法在支撑。有志于深入学习的同学可以在入门后进一步研究算法的实现,一定会受益匪浅。 这节课&#…...
在前端利用Broadcast Channel实现浏览器跨 Tab 窗口通信的方法
Broadcast Channel 在前端,我们经常会用postMessage来实现页面间的通信,但这种方式更像是点对点的通信。对于一些需要广播(让所有页面知道)的消息,用postMessage不是非常自然。Broadcast Channel 就是用来弥补这个缺陷…...
【Apache Doris】自定义函数之 JAVA UDF 详解
【Apache Doris】自定义函数之 JAVA UDF 详解 一、背景说明二、原理简介三、环境信息3.1 硬件信息3.2 软件信息 四、IDE准备五、JAVA UDF开发流程5.1 源码准备5.1.1 pom.xml5.1.2 JAVA代码 5.2 mvn打包5.2.1 clean5.2.2 package 5.3 函数使用5.3.1 upload5.3.2 使用 六、注意事…...
BMS电池管理系统带充放电控制过流过压保护
2.4G无线采集BMS开发板(主从一体) 全新升级 (赠送上位机源码TTL 上位机,可以改成自己想要的界面) 12串电池TTL上位机 CAN通信上位机源码有偿开源,供项目二次开发。 增加STM32平台 USB转TTL通信 CAN通信 增加…...
在Linux中以后台静默运行Java应用程序
在Linux系统上运行Java应用程序时,有时我们希望将其设置为后台运行,而关闭终端窗口时不会影响进程的执行。在本文中,我们将介绍几种实现这一目标的方法。 1. 使用nohup命令 nohup是一个用于在后台运行进程的命令,而且关闭终端窗…...
k8s---Pod的生命周期
Pod是什么? pod是k8s中最小的资源管理组件。 pod也是最小化运行容器化应用的资源管理对象。 pod是一个抽象的概念,可以理解为一个或者多个容器化应用的集合 在一个pod当中运行一个容器是最常用的方式 在一个pod当中可以同时运行多个容器,…...
CSS animation动画和关键帧实现轮播图效果HTML
CSS animation动画和关键帧实现轮播图效果HTML 这轮播图效果使用h5和css3实现效果,不需要js控制,但是其中的缺点就是不能使用鼠标进行切换效果。 具有代码如下 <!DOCTYPE html> <html lang"en"><head><meta charset&quo…...
Unity之键盘鼠标的监控
小编最近在玩大表哥2,通过 W、A、S、D 来移动亚瑟,鼠标左键来不吃牛肉 我们都知道玩家通过按键鼠标来控制游戏人物做出相应的行为动作,那在Unity引擎里是怎么知道玩家是如何操作的呢?本篇来介绍Unity是怎样监控键盘和鼠标的。 首先…...
C# windows服务程序开机自启动exe程序
我们使用传统的Process.Start(".exe")启动进程会遇到无法打开UI界面的问题,尤其是我们需要进行开启自启动程序设置时出现诸多问题,于是我们就想到采用windows服务开机自启动来创建启动一个新的exe程序,并且是显式运行。 首先是打开…...
【SpringMVC】常用注解
什么是MVC? MVC是一种程序分层开发模式,分别是Model(模型),View(视图)以及Controller(控制器)。这样做可以将程序的用户界面和业务逻辑分离,使得代码具有良好…...
关于曲率、曲率半径和曲率圆,看这几篇文章就够啦
关于曲率、曲率半径和曲率圆的内容,是考研数学数学一和数学二大纲中明确要求掌握的内容,但这部分内容在很多教材教辅以及练习题中较少涉及。在本文中,荒原之梦考研数学网就为大家整理了曲率、曲率半径和曲率圆方程相关的概念、基础知识以及练…...
java面试题-Spring常见的异常类有哪些?
远离八股文,面试大白话,通俗且易懂 看完后试着用自己的话复述出来。有问题请指出,有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来,大家一起解决。 java面试题汇总-目录-持续更新中 NullPointerException&…...
数据库选择题 (期末复习)
数据库第一章 概论简答题 数据库第二章 关系数据库简答题 数据库第三章 SQL简答题 数据库第四第五章 安全性和完整性简答题 数据库第七章 数据库设计简答题 数据库第九章 查询处理和优化简答题 数据库第十第十一章 恢复和并发简答题 2015期末 1、在数据库中,下列说…...
三相LCL型并网逆变器:电容电流反馈与全前馈电网电压控制策略研究,谐波THD优化至5%以下的相...
三相lcl型并网逆变器控制策略 电容电流反馈和电网电压全前馈,加入5.7.11.13次谐波thd<5。 相关方面电力电气工程,电子信息工程等等都可以。最近在调试三相LCL并网逆变器时发现个有意思的现象:当电网背景谐波严重时,常规…...
无人机组装调试仿真教学软件技术解析(架构+功能+落地)| 产品实测
在无人机职业教育领域,仿真教学软件的核心价值是“还原实操场景、降低落地成本、提升教学效率”,但目前多数同类软件普遍存在架构冗余、3D交互卡顿、功能与教学场景脱节、后台管理薄弱等痛点,难以满足院校规模化、标准化的组装调试教学需求。…...
基于Python的物流管理系统毕业设计源码
博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在开发一套基于Python的物流管理系统,以提升物流企业的运营效率和管理水平。具体而言,研究目的可从以下几个方面进行阐述&#x…...
利用快马平台十分钟搭建yolo目标检测web演示原型
最近在尝试用YOLO算法做目标检测的Web演示,发现用InsCode(快马)平台可以超级快地搭建出原型。整个过程比我预想的简单太多,从零开始到实际运行只用了十分钟左右,特别适合想快速验证想法的时候用。这里记录下我的实现思路和具体步骤࿰…...
bge-large-zh-v1.5在RAG中的应用:提升问答系统准确率
bge-large-zh-v1.5在RAG中的应用:提升问答系统准确率 1. RAG系统与Embedding模型的关系 1.1 什么是RAG系统 RAG(Retrieval-Augmented Generation)系统是现代问答系统的核心技术架构,它通过两个关键步骤回答用户问题:…...
华为,华三交换机开启snmp的命令
华为,华三交换机开启snmp的命令 配置community指定版本为v2c, v3(支持这2个版本)指定源接口 snmp-agent snmp-agent community read public snmp-agent sys-info version v2c v3 snmp-agent protocol source-interface MEth0/0/0配置完成后&a…...
OpenClaw多任务测试:百川2-13B-4bits模型在并行处理中的显存管理
OpenClaw多任务测试:百川2-13B-4bits模型在并行处理中的显存管理 1. 测试背景与动机 上周在调试一个自动化工作流时,遇到了一个典型问题:当OpenClaw同时处理文件格式转换、网页信息抓取和邮件发送任务时,后台的百川2-13B模型频繁…...
如何用60元的消费级IMU实现车载组合导航?SINS/NHC实战解析
如何用60元的消费级IMU实现车载组合导航?SINS/NHC实战解析 在自动驾驶和车载导航领域,高精度定位一直是核心技术难题。传统方案依赖昂贵的专业级惯性测量单元(IMU),成本动辄数千元,让许多预算有限的开发者望而却步。但你可能不知…...
3步获取macOS完整安装包:Download Full Installer工具的终极指南
3步获取macOS完整安装包:Download Full Installer工具的终极指南 【免费下载链接】DownloadFullInstaller macOS application written in SwiftUI that downloads installer pkgs for the Install macOS Big Sur application. 项目地址: https://gitcode.com/gh_m…...
低代码拖拽逻辑执行慢10倍?:用3个内存布局优化+1个opcode精简表,让RuleEngine吞吐量突破23,000 TPS
第一章:低代码拖拽逻辑执行慢10倍?:用3个内存布局优化1个opcode精简表,让RuleEngine吞吐量突破23,000 TPS低代码规则引擎在拖拽式策略编排场景下,常因对象频繁分配、字段间接寻址与冗余指令解析导致执行路径膨胀。我们…...
