伸缩应用程序和执行滚动更新
【摘要】 伸缩应用程序 Scaling(伸缩)应用程序伸缩 的实现可以通过更改 nginx-deployment.yaml 文件中部署的 replicas(副本数)来完成spec: replicas: 2 #使用该Deployment创建两个应用程序实例 Scaling(伸缩)概述下图中,Service A 只将访问流量转发到 IP 为 10.0.0.5 的Pod上修改了 Deploymen...
伸缩应用程序
Scaling(伸缩)应用程序
伸缩 的实现可以通过更改 nginx-deployment.yaml 文件中部署的 replicas(副本数)来完成
spec:
replicas: 2 #使用该Deployment创建两个应用程序实例
Scaling(伸缩)
概述下图中,Service A 只将访问流量转发到 IP 为 10.0.0.5 的Pod上
修改了 Deployment 的 replicas 为 4 后,Kubernetes 又为该 Deployment 创建了 3 新的 Pod,这 4 个 Pod 有相同的标签。因此Service A通过标签选择器与新的 Pod建立了对应关系,将访问流量通过负载均衡在 4 个 Pod 之间进行转发。
实战:将 nginx Deployment 扩容到 4 个副本
修改 nginx-deployment.yaml 文件
将 replicas 修改为 4
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment # 指定的唯一名称,在同一命名空间内必须唯一。
labels:
app: nginx
spec:
replicas: 2 #使用该Deployment创建两个应用程序实例
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
执行命令
kubectl apply -f nginx-deployment.yaml
执行滚动更新
滚动更新概述
- 原本 Service A 将流量负载均衡到 4 个旧版本的 Pod 上
- 更新完 Deployment 部署文件中的镜像版本后,master 节点选择了一个 worker 节点,并根据新的镜像版本创建 Pod(紫色容器)。新 Pod 拥有唯一的新的 IP。同时,master 节点选择一个旧版本的 Pod 将其移除。
此时,Service A 将新 Pod 纳入到负载均衡中,将旧Pod移除
- 同步骤2,再创建一个新的 Pod 替换一个原有的 Pod
更新 nginx Deployment
修改 nginx-deployment.yaml 文件
修改文件中 image 镜像的标签,如下所示
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 4
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.8 #使用镜像nginx:1.8替换原来的nginx:1.7.9
ports:
- containerPort: 80
执行命令
kubectl apply -f nginx-deployment.yaml
查看过程及结果
执行命令,可观察到 pod 逐个被替换的过程。
watch kubectl get pods -l app=nginx
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)