记录使用minikube部署web程序,并灰度发布不同版本

1. 安装软件

1.1安装docker desktop

下载地址
重点:配置镜像加速

1.2 安装k8s&minikube

这里参考阿里社区的配置
minikube1.24.0版本下载地址
重点:安装版本问题【因为后面要用阿里云的服务来获取所需Docker镜像,一直不成功使用的高版本,所以最后降回了1.24.0
启动完成后会在docker启动一个容器,如下
在这里插入图片描述

2 同步本地镜像到minikube

因为是使用minikube启动的k8s环境,所以如果要使用本地制作的web镜像,还需要把镜像同步到minikube,可以使用以下命令同步:

# General
minikube image load <IMAGE_NAME>
# Example
minikube image load pz/demo

或者是通过使用Minikube的image build, 我们可以在Minikube中直接构建镜像:

# General
minikube image build -t <IMAGE_NAME> .
# Example
minikube image build -t pz/demo .

我使用了第一种方法,成功后可以看到你的镜像已经在minikube容器内的docker镜像列表了【有点套娃的感觉】。
可以看到镜像已经同步过来了

3 构建Pod,Service

我这里直接贴出代码:

deploy-v1.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: my-deployment-v1
spec:replicas: 2  # 设置副本数量selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-containerimage: demo:1.0.1ports:- containerPort: 8833

deploy-v2.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: my-deployment-v2
spec:replicas: 2  # 设置副本数量selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-containerimage: demo:1.0.2ports:- containerPort: 8833

service-config.yaml

apiVersion: v1
kind: Service
metadata:name: my-service
spec:selector:app: my-appports:- protocol: TCPport: 8833  # Service 暴露的端口targetPort: 8833  # 将流量转发到 Pod 的 8833 端口type: NodePort

然后执行:

kubectl apply -f deploy-v1.yaml
kubectl apply -f deploy-v2.yaml
kubectl apply -f service-config.yaml

然后再去执行就可以访问你的服务了。

minikube service my-service

服务爆露出来

可以做一些灰度发布操作

1、 先修改deploy-v1.yaml中的副本数量为4个

v1版本启动4个副本
此时接口返回
v1只返回hello002

2、v2发布占2个副本

v1和v3同时运行
此时接口返回
负载均衡输出

3、关闭v1,v2占用4个副本

v3占用4个副本
接口返回
只有v3版本输出

问题总结

  • 不知道minikube内部还存在docker容器环境,一直拉取镜像失败,报错:magePullBackOff类似的,原来是没有正确拉取到镜像。

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

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

相关文章

vue项目中实现预览pdf

vue项目中实现预览pdf 1. iframe <iframe :src"pdfSrc"></iframe> ​data() {return {pdfSrc: http://192.168.0.254:19000/trend/2023/12/27/5635529375174c7798b5fabc22cbec45.pdf,}},​iframe {width: 100%;height: calc(100vh - 132px - 2 * 20px -…

使用pytorch搭建ResNeXt并基于迁移学习训练

冻结除最后全连接层以外的所有权重&#xff0c;只去单独训练它最后一层的的权重&#xff0c;这个方法&#xff0c;冻结了所有网络的权重。 for param in net.parameters():param.requires_grad False

【已解决】vs2015下c++对sqlite的操作

本博文源于笔者操作sqlite3&#xff0c;借鉴了很多文章的思路&#xff0c;这里并整理了c常用的对数据库的操作供大家点赞收藏以后备用。包含了&#xff1a;c对sqlite3的创建数据库、创建数据表、写入数据表、读取数据表、删除数据表。也包括了最基础的让c运行sqlite3.内容供读者…

大数据Doris(四十二):使用物化视图

文章目录 使用物化视图 一、​​​​​​​创建物化视图

Android 8.1 设置USB传输文件模式(MTP)

项目需求&#xff0c;需要在电脑端adb发送通知手机端接收指令&#xff0c;将USB的仅充电模式更改成传输文件&#xff08;MTP&#xff09;模式&#xff0c;便捷用户在我的电脑里操作内存文件&#xff0c;下面是我们的常见的修改方式 1、android12以下、android21以上是这种方式…

树莓派,opencv,Picamera2利用舵机云台追踪人脸(PID控制)

一、需要准备的硬件 Raspiberry Pi 4b两个SG90 180度舵机&#xff08;注意舵机的角度&#xff0c;最好是180度且带限位的&#xff0c;切勿选360度舵机&#xff09;二自由度舵机云台&#xff08;如下图&#xff09;Raspiberry CSI 摄像头 组装后的效果&#xff1a; 二、项目目…

Elasticsearch中复制一个索引数据到新的索引中

问题 我有时候&#xff0c;需要调试一个已经存在的ES索引&#xff0c;需要从已有的索引复制数据到新的索引中去。 解决 这里我借助一个GUI工具&#xff0c;来解决这个问题&#xff0c;底层它是使用Reindex的API实现索引数据复制的。利用Reindex API搞不定这个事情&#xff0…

留言板(Mybatis连接数据库版)

目录 1.添加Mybatis和SQL的依赖 2.建立数据库和需要的表 3.对应表中的字段&#xff0c;补充Java对象 4.对代码进行逻辑分层 5.后端逻辑代码 之前的项目实例【基于Spring MVC的前后端交互案例及应用分层的实现】https://blog.csdn.net/weixin_67793092/article/details/134…

是德科技E9304A功率传感器

是德科技E9304A二极管功率传感器测量频率范围为9 kHz至6 GHz的平均功率&#xff0c;功率范围为-60至20 dBm。该传感器非常适合甚低频(VLF)功率测量。E系列E9304A功率传感器有两个独立的测量路径&#xff0c;设计用于EPM系列功率计。功率计自动选择合适的功率电平路径。为了避免…

Centos如何修改ssh端口

想必很大一部分的同学用的是centos服务器&#xff0c;对于默认的22端口存在一定的安全风险&#xff0c;所以今天我们一起看下如何修改ssh端口 一、什么是SSH SSH&#xff08;Secure Shell&#xff09;是一种安全的远程登录协议&#xff0c;它允许您通过网络远程连接到Linux系统…

企业员工2024年工作计划和目标怎么写?怎么提醒自己按时执行?

2024年的钟声即将敲响&#xff0c;对于众多企业员工而言&#xff0c;新的一年意味着新的挑战和机遇。而在这之前&#xff0c;制定一份明确的2024年工作计划与目标就显得尤为重要。但不少员工在面对这个任务时&#xff0c;往往感到无从下手&#xff0c;那么如何撰写一份实用且有…

卖给我这支笔:如何回答最棘手的面试问题之一

在求职面试中&#xff0c;招聘经理有时会递给应聘者一支书写工具并说&#xff1a;“把这支笔卖给我”&#xff0c;从而给他们带来了麻烦。 如果您正在寻找销售工作&#xff0c;最好对这个问题做好准备。对于这个问题有好的方法也有坏的方法&#xff0c;如果你的面试官问到这个…

【线性代数】通过矩阵乘法得到的线性方程组和原来的线性方程组同解吗?

一、通过矩阵乘法得到的线性方程组和原来的线性方程组同解吗&#xff1f; 如果你进行的矩阵乘法涉及一个线性方程组 Ax b&#xff0c;并且你乘以一个可逆矩阵 M&#xff0c;且产生新的方程组 M(Ax) Mb&#xff0c;那么这两个系统是等价的&#xff1b;它们具有相同的解集。这…

软件测试/测试开发丨Python学习笔记之基本数据类型与操作

一、变量 1、变量的定义&#xff1a; a. 在python中&#xff0c;变量是一种存储数据的载体。计算机中的变量是实际存在的数据或者说是存储器中存储数据的一块内存空间&#xff1b; b.变量的值可以被读取和修改。 2、命名规则&#xff1a; a.变量名由字母&#xff08;广义的Unic…

一文详解SpringBoot 定时任务(cron表达式)

IDE&#xff1a;IntelliJ IDEA 2022.2.3 x64 操作系统&#xff1a;win10 x64 位 家庭版 JDK: 1.8 文章目录 一、如何开启一个SpringBoot定时任务&#xff1f;二、cron表达式详解2.1 语法格式2.2 符号解析2,2.1 通用符号: , - * /2.2.2 专有符号&#xff1a;&#xff1f;L w # c…

Cucumber-JVM的示例和运行解析

Cucumber-JVM 是一个支持 Behavior-Driven Development (BDD) 的 Java 框架。在 BDD 中&#xff0c;可以编写可读的描述来表达软件功能的行为&#xff0c;而这些描述也可以作为自动化测试。 Cucumber-JVM 的最小化环境 Cucumber-JVM是BDD的框架&#xff0c; 提供了GWT语法的相…

Deepin更换仿Mac主题

上一篇博客说了要写一篇deepin系统的美化教程 先看效果图&#xff1a; 准备工作&#xff1a; 1.你自己 嘻嘻嘻 2.能上网的deepin15.11电脑 首先去下载主题 本次需要系统美化3部分&#xff1a;1.图标 2.光标 3.壁纸 开始之前&#xff0c;请先把你的窗口特效打开&#xff0c;…

论文阅读《Rethinking Efficient Lane Detection via Curve Modeling》

目录 Abstract 1. Introduction 2. Related Work 3. BezierLaneNet 3.1. Overview 3.2. Feature Flip Fusion 3.3. End-to-end Fit of a Bezier Curve 4. Experiments 4.1. Datasets 4.2. Evalutaion Metics 4.3. Implementation Details 4.4. Comparisons 4.5. A…

读论文之StoryGAN

StoryGAN: A Sequential Conditional GAN for Story Visualization 本文参考StoryGAN-CSDN博客https://blog.csdn.net/Forlogen/article/details/93378325 ​​​​​​论文阅读&#xff1a;StoryGan - 简书 (jianshu.com)https://www.jianshu.com/p/f28d6f472396 项目源码&…

完全背包问题,原理剖析,公式推导,OJ详解

文章目录 前言一、完全背包的状态设计1、状态设计2、状态转移方程3、对比0/1背包问题4、时间复杂度分析 二、完全背包问题的优化1、时间复杂度优化2、空间复杂度优化 三、OJ练习裸题完全背包离散化最小值 前言 完全背包问题&#xff0c;相比0/1背包问题&#xff0c;实就每个物品…