记录使用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-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: demo:1.0.1
        ports:
        - containerPort: 8833

deploy-v2.yaml

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

service-config.yaml

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
  - protocol: TCP
    port: 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类似的,原来是没有正确拉取到镜像。
  • 31
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
全量发布: 全量发布是指将新版本的应用程序一次性全部部署到生产环境中,替换旧版本的应用程序。全量发布的优点是部署速度快,缺点是风险大,如果新版本出现问题,整个系统都会受到影响。 蓝绿部署: 蓝绿部署是指在生产环境中同时部署两个版本的应用程序,其中一个版本对外提供服务,称为蓝色版本,另一个版本不对外提供服务,称为绿色版本。当新版本的应用程序部署完成后,将流量从蓝色版本切换到绿色版本,这样就可以实现零停机部署。蓝绿部署的优点是可以快速回滚,缺点是需要占用双倍的资源。 滚动发布: 滚动发布是指将新版本的应用程序分批次部署到生产环境中,每次只部署一小部分,等待一段时间后再部署下一批。滚动发布的优点是可以逐步验证新版本的应用程序是否稳定,缺点是部署时间长。 灰度发布灰度发布是指将新版本的应用程序逐步部署到生产环境中,只对部分用户提供服务,称为灰度用户。通过监控灰度用户的使用情况,来验证新版本的应用程序是否稳定。如果出现问题,只会影响部分用户,不会对整个系统造成影响。灰度发布的优点是风险小,缺点是部署时间长。 监控告警: 监控告警是指通过监控系统对生产环境进行实时监控,当出现异常情况时,及时发出告警信息,通知相关人员进行处理。监控告警的优点是可以及时发现问题,缺点是需要投入大量的人力和物力进行维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值