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
类似的,原来是没有正确拉取到镜像。