linux怎么查看本机内存大小
354
2022-09-10
k8s学习-部署应用实例2
伸缩应用
scaling 伸缩应用
当流量增加的时候,通过对应用程序进行伸缩操作以满足系统性能需求。
伸缩的实现可以通过更改nginx-deployment.yaml文件中部署replicas副本数来完成
sec: replicas: 2 #使用该deployment创建两个应用程序实例
下图中,service A只将访问流量转发到ip为10.0.0.5的pod上
修改了deployment的replicas为4后,k8s又为该deployment创建了3个新的pod。这四个pod有相同的标签,因此service a通过标签选择器与新的pod建立对应关系。将访问流量通过负载均衡再4个pod之间进行转发。
使用kubectl进行扩容
修改nginx-deployment.yaml文件
apiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deployment labels: app: nginxspec: 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.yamlwatch kubectl get pods -o wide
滚动更新
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上。
2.更新完deployment部署文件中的镜像版本后,master节点选择了一个worker节点,并根据新的镜像版本创建pod,新pod拥有唯一的新的IP,同时,master节点选择一个旧版本的pod将其移除。
此时service a将新pod纳入到负载均衡中,将旧pod移除。
3 同步骤2,再创建一个新的pod替换原有的pod
4 如此rolling update滚动更新,指导所有的旧版本的pod均被移除,新版本的pod也达到了deployment部署文件中的副本数,则滚动更新完成。
滚动更新允许以下操作;
将应用程序从准上线环境升级到生产环境(通过更新容器镜像)回滚到以前的版本持续集成和持续交付的应用程序,无需停机
使用kubectl更新
修改nginx-yaml文件,修改文件中的image镜像的标签
apiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deployment labels: app: nginxspec: 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.yamlwatch kubectl get pods -l app=nginx
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~