记录使用minikube部署web程序,并灰度发布不同版本
2023-12-27 20:50:13
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个
此时接口返回
2、v2发布占2个副本
此时接口返回
3、关闭v1,v2占用4个副本
接口返回
问题总结
- 不知道minikube内部还存在docker容器环境,一直拉取镜像失败,报错:
magePullBackOff
类似的,原来是没有正确拉取到镜像。
文章来源:https://blog.csdn.net/weixin_43496746/article/details/135249580
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!