kubernetes学习(一) Scale应用 & 滚动更新

一、Scale应用

  默认请款下应用只会运行一个副本,可通过kubectl get deployments 查看副本数。

~$ kubectl get deployments
NAME                  DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
blogtest              1         1         1            1           3d
kubernetes-bootcamp   1         1         1            1           3d

  1、使用scale增加pod数量

    执行如下命令,可将副本数增加到3个。

~$ kubectl scale deployments/blogtest --replicas=3
deployment.extensions "blogtest" scaled

    通过kubectl get pods 可以看到当前的Pod增加到了三个。

~$ kubectl get deployment
NAME                  DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
blogtest              3         3         3            1           3d
kubernetes-bootcamp   1         1         1            1           3d

~$ kubectl get pods
NAME                                  READY     STATUS              RESTARTS   AGE
blogtest-7f9798c5b5-drvl8             0/1       ContainerCreating   0          8s
blogtest-7f9798c5b5-gwkm9             1/1       Running             0          3d
blogtest-7f9798c5b5-snppq             0/1       ContainerCreating   0          8s
kubernetes-bootcamp-56cdd766d-5nj9n   1/1       Running             0          3d

    每次请求发送到不同的Pod,3个副本轮询处理请求,这样就可以实现负载均衡了。

  2、使用scale减少Pod数量

~$ kubectl scale deployments/blogtest --replicas=2
deployment.extensions "blogtest" scaled

 

二、滚动更新

  1、滚动更新

   当前使用版本为v1,使用以下命令将其升级到v2.

~$ curl galaxy-k8s-test-master-02:17812
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-56cdd766d-5nj9n | v=1

~$ kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2deployment.apps "kubernetes-bootcamp" image updated

~$ curl galaxy-k8s-test-master-02:17812
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-7799cbcb86-7dnzp | v=2

    滚动更新过程:v1的Pod被逐个删除,同时启动了新的v2 Pod。

  2、回退更新

   如果要回退到v1版本,执行kubectl rollout undo 命令。

~$ kubectl get pods
NAME                                   READY     STATUS        RESTARTS   AGE
blogtest-7f9798c5b5-gwkm9              1/1       Running       0          3d
blogtest-7f9798c5b5-snppq              1/1       Running       0          48m
kubernetes-bootcamp-56cdd766d-7skbz    1/1       Terminating   0          1m
kubernetes-bootcamp-7799cbcb86-bpnpp   1/1       Running       0          22s

~$ curl galaxy-k8s-test-master-02:17812
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-7799cbcb86-bpnpp | v=2

~$ kubectl rollout undo deployments/kubernetes-bootcamp
deployment.apps "kubernetes-bootcamp" 

~$ kubectl get pods
NAME                                   READY     STATUS        RESTARTS   AGE
blogtest-7f9798c5b5-gwkm9              1/1       Running       0          3d
blogtest-7f9798c5b5-snppq              1/1       Running       0          49m
kubernetes-bootcamp-56cdd766d-jjzqm    1/1       Running       0          13s
kubernetes-bootcamp-7799cbcb86-bpnpp   1/1       Terminating   0          57s

~$ curl galaxy-k8s-test-master-02:17812
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-56cdd766d-jjzqm | v=1

  

原文地址:https://www.cnblogs.com/Lyh1997/p/10230402.html

时间: 2024-11-08 09:47:18

kubernetes学习(一) Scale应用 & 滚动更新的相关文章

Kubernetes集群中Service的滚动更新

Kubernetes集群中Service的滚动更新 二月 9, 2017 0 条评论 在移动互联网时代,消费者的消费行为已经"全天候化",为此,商家的业务系统也要保持7×24小时不间断地提供服务以满足消费者的需求.很难想像如今还会有以"中断业务"为前提的服务系统更新升级.如果微信官方发布公告说:每周六晚23:00~次日凌晨2:00进行例行系统升级,不能提供服务,作为用户的你会怎么想.怎么做呢?因此,各个平台在最初设计时就要考虑到服务的更新升级问题,部署在Kubern

kubernetes 滚动更新

示例: 创建一个app:kubectl create deployment nginx --image=nginx:1.11 创建service kubectl expose deployment nginx --port=80 --type=NodePort 扩缩容:kubectl scale deployment nginx --replicas=5 修改镜像,滚动更新:kubectl set image deployment nginx nginx=nginx:1.10 或者kubectl

Kubernetes Pod应用的滚动更新(八)

一.环境准备 我们紧接上一节的环境,进行下面的操作,如果不清楚的,可以先查看上一篇博文. 滚动更新是一次只更新一小部分副本,成功后,再更新更多的副本,最终完成所有副本的更新.滚动更新的最大的好处是零停机,整个更新过程始终有副本在运行,从而保证了业务的连续性. 二.更新 我们查看一下上一节的配置文件mytest-deploy.yaml. apiVersion: extensions/v1beta1 kind: Deployment metadata: name: mytest spec: repl

Kubernetes——滚动更新和数据管理

k8s——滚动更新滚动更新就是一次只更新一小部分副本,更新成功之后再更新更多的副本,最终完成所有副本的更新.滚动更新最大的好处是零停机,整个更新的过程中始终有副本运行,从而保证了业务的连续性.kubectl create deploy httpd3 --image=httpd  --dry-run -o yaml > httpd3.yaml或者手动编写yaml文件: vim httpd3.yaml apiVersion: apps/v1kind: Deploymentmetadata: labe

Kubernetes学习(四)

四 资源控制器 一.什么是控制器 Kubernetes 中内建了很多 controller(控制器),这些相当于一个状态机,用来控制 Pod 的具体状态和行为 二.控制器类型 ① ReplicationController 和 ReplicaSet ② Deployment ③ DaemonSet ④ StateFulSet ⑤ Job/CronJob ⑥ Horizontal Pod Autoscaling 1.ReplicationController 和 ReplicaSet Replic

Kubernetes学习(六)

六 Service 一.Service 的概念 Kubernetes Service定义了这样一种抽象:一个Pod的逻辑分组,一种可以访问它们的策略 —— 通常称为微服务.这一组Pod能够被Service访问到,通常是通过Label Selector Service能够提供负载均衡的能力,但是在使用上有以下限制: 只提供 4 层负载均衡能力,而没有 7 层功能,但有时我们可能需要更多的匹配规则来转发请求,这点上 4 层负载均衡是不支持的 二.Service 的类型 Service 在 K8s 中

kubernetes学习笔记

docker实现了更便捷的单机容器虚拟化的管理, docker的位置处于操作系统层与应用层之间; 相对传统虚拟化(KVM,XEN): docker可以更加灵活的去实现一些应用层功能, 同时对资源的利用率也更高 相对应用: docker可以把应用更操作系统(镜像)做更好的结合, 降低部署与维护的的成本 处于这样一个位置在单机使用docker进行业务部署是可以感觉到质的提升; 但是针对跨机器, 大规模, 需要对业务质量进行保证的时候, docker本身又有些不足, 而传统的运维自动化工具无论是在do

如何滚动更新 Service?- 每天5分钟玩转 Docker 容器技术(102)

在前面的实验中,我们部署了多个副本的服务,本节将讨论如何滚动更新每一个副本. 滚动更新降低了应用更新的风险,如果某个副本更新失败,整个更新将暂停,其他副本则可以继续提供服务.同时,在更新的过程中,总是有副本在运行的,因此也保证了业务的连续性. 下面我们将部署三副本的服务,镜像使用 httpd:2.2.31,然后将其更新到 httpd:2.2.32. 创建服务: docker service create --name my_web --replicas=3 httpd:2.2.31 将 serv

docker swarm ,滚动更新

一.Docker swarm Swarm 是 Docker 公司在 2014 年 12 月初发布的一套较为简单的工具,用来管理 Docker 集群,它将一群 Docker 宿主机变成一个单一的,虚拟的主机.Swarm 使用标准的 Docker API接口作为其前端访问入口,换言之,各种形式的 Docker Client(docker client in go, docker_py,docker 等)均可以直接与 Swarm 通信.Swarm 几乎全部用 Go 语言来完成开发.Swarm deam