k8s学习-部署应用实例2
  TEZNKK3IfmPf 2023年11月14日 25 0

scaling 伸缩应用

当流量增加的时候,通过对应用程序进行伸缩操作以满足系统性能需求。

伸缩的实现可以通过更改nginx-deployment.yaml文件中部署replicas副本数来完成

sec:
replicas: 2 #使用该deployment创建两个应用程序实例

下图中,service A只将访问流量转发到ip为10.0.0.5的pod上

k8s学习-部署应用实例2

修改了deployment的replicas为4后,k8s又为该deployment创建了3个新的pod。这四个pod有相同的标签,因此service a通过标签选择器与新的pod建立对应关系。将访问流量通过负载均衡再4个pod之间进行转发。

k8s学习-部署应用实例2

使用kubectl进行扩容

修改nginx-deployment.yaml文件

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.7.9
ports:
- containerPort: 80

执行并检查结果

kubectl apply -f nginx-deployment.yaml
watch kubectl get pods -o wide

k8s学习-部署应用实例2

 

滚动更新

rolling update滚动更新通过使用新版本的pod逐步替代旧版本的pod来实现deployment的更新,从而实现零停机。新的pod将再具有可用资源的node上进行调度。

k8s更新多副本的deployment的版本的时候,会逐步创建新版本的pod,逐步停止旧版本的pod,以便使应用一直处于可用状态,这个过程中,service能够监视pod的状态,将流量始终转发到可用的pod上。

默认情况下,rolling update滚动更新过程中,k8s逐步使用新版本的pod替换旧版本的pod(最大可用pod数为1,最大新建pod数也为1)。这两个参数可以配置数字或者百分比。再k8s中,更新版本化的,任何部署更新都可以恢复为以前的稳定版本。

描述

1.原本service a 将流量负载均衡到4个旧版本的pod上。

k8s学习-部署应用实例2

2.更新完deployment部署文件中的镜像版本后,master节点选择了一个worker节点,并根据新的镜像版本创建pod,新pod拥有唯一的新的IP,同时,master节点选择一个旧版本的pod将其移除。

此时service a将新pod纳入到负载均衡中,将旧pod移除。

k8s学习-部署应用实例2

3 同步骤2,再创建一个新的pod替换原有的pod

k8s学习-部署应用实例2

4 如此rolling update滚动更新,指导所有的旧版本的pod均被移除,新版本的pod也达到了deployment部署文件中的副本数,则滚动更新完成。

 

k8s学习-部署应用实例2

滚动更新允许以下操作;

  • 将应用程序从准上线环境升级到生产环境(通过更新容器镜像)
  • 回滚到以前的版本
  • 持续集成和持续交付的应用程序,无需停机

 

 

使用kubectl更新

修改nginx-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
watch kubectl get pods -l app=nginx
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年04月19日   62   0   0 git部署
  TEZNKK3IfmPf   2023年11月15日   33   0   0 k8s
  TEZNKK3IfmPf   2023年11月15日   22   0   0 k8s
  TEZNKK3IfmPf   2024年04月19日   38   0   0 部署jar
TEZNKK3IfmPf