k8s入门-3

部署扩缩容

kubectl get deploy

复制代码
C:\Users\zhang>kubectl get deploy
NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
hello-k8s-deployment   3/3     3            3           5h56m

通过上面的命令,我们先找到一个deploy用来进行测试。现在看他是3个副本,现在我们把他先缩到1个。

kubectl scale deploy hello-k8s-deployment --replicas=1

复制代码
C:\Users\zhang>kubectl scale deploy hello-k8s-deployment --replicas=1
deployment.apps/hello-k8s-deployment scaled

C:\Users\zhang>kubectl get deploy
NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
hello-k8s-deployment   1/1     1            1           5h58m

然后再加到5个。

kubectl scale deploy hello-k8s-deployment --replicas=5

复制代码
C:\Users\zhang>kubectl scale deploy hello-k8s-deployment --replicas=5
deployment.apps/hello-k8s-deployment scaled

C:\Users\zhang>kubectl get deploy
NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
hello-k8s-deployment   1/5     5            1           6h17m

C:\Users\zhang>kubectl get deploy
NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
hello-k8s-deployment   5/5     5            5           6h18m

通过命令可以看出来,它不是马上就建好5个的,而是有一定的时间,逐渐建立起来的。

滚动更新

建一个新版本

docker build -t hello-k8s:1.0 .

复制代码
D:\LEO\project\test3\k8s-test>docker build -t hello-k8s:1.0 .
[+] Building 0.3s (10/10) FINISHED                                                                 docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                               0.0s
 => => transferring dockerfile: 204B                                                                               0.0s
 => [internal] load metadata for docker.io/library/python:3.10-slim                                                0.1s
 => [internal] load .dockerignore                                                                                  0.0s
 => => transferring context: 2B                                                                                    0.0s
 => [1/5] FROM docker.io/library/python:3.10-slim@sha256:70f65c721aaddfb22b20ed6ec12606c59d9592493c5fcb6639f3d0e8  0.0s
 => => resolve docker.io/library/python:3.10-slim@sha256:70f65c721aaddfb22b20ed6ec12606c59d9592493c5fcb6639f3d0e8  0.0s
 => [internal] load build context                                                                                  0.0s
 => => transferring context: 63B                                                                                   0.0s
 => CACHED [2/5] WORKDIR /app                                                                                      0.0s
 => CACHED [3/5] COPY requirements.txt .                                                                           0.0s
 => CACHED [4/5] RUN pip install --no-cache-dir -r requirements.txt                                                0.0s
 => CACHED [5/5] COPY app.py .                                                                                     0.0s
 => exporting to image                                                                                             0.1s
 => => exporting layers                                                                                            0.0s
 => => exporting manifest sha256:14484ee5ad887573cfd12ac62cbf7eb5547ff03226021a1c4234d5e12b02f89b                  0.0s
 => => exporting config sha256:d69d28bf3d152a2e5b862be56583bac59c13ab81873688aa94be4c2403458c43                    0.0s
 => => exporting attestation manifest sha256:693e5b58682b01e416285b2a47593679eee55578474b79d3e8a6866ea7158774      0.0s
 => => exporting manifest list sha256:f989154c957c2aaba2e37f7abf7ca172b0a54e53f6532dd7ed10ea4d5ac9d43d             0.0s
 => => naming to docker.io/library/hello-k8s:1.0                                                                   0.0s
 => => unpacking to docker.io/library/hello-k8s:1.0                                                                0.0s

更换版本

D:\LEO\project\test3\k8s-test>kubectl set image deploy hello-k8s-deployment hello-k8s=hello-k8s:1.0

deployment.apps/hello-k8s-deployment image updated

D:\LEO\project\test3\k8s-test>kubectl rollout status deploy hello-k8s-deployment

deployment "hello-k8s-deployment" successfully rolled out

查看更换版本的情况可以用下面的方式来确认

复制代码
D:\LEO\project\test3\k8s-test>kubectl rollout history deploy hello-k8s-deployment
deployment.apps/hello-k8s-deployment
REVISION  CHANGE-CAUSE
1         <none>
2         <none>


D:\LEO\project\test3\k8s-test>kubectl rollout history deploy hello-k8s-deployment --revision=2
deployment.apps/hello-k8s-deployment with revision #2
Pod Template:
  Labels:       app=hello-k8s
        pod-template-hash=5dbcc46558
  Containers:
   hello-k8s:
    Image:      hello-k8s:1.0
    Port:       5000/TCP
    Host Port:  0/TCP
    Liveness:   http-get http://:5000/health delay=5s timeout=1s period=10s #success=1 #failure=3
    Readiness:  http-get http://:5000/health delay=5s timeout=1s period=5s #success=1 #failure=3
    Environment:        <none>
    Mounts:     <none>
  Volumes:      <none>
  Node-Selectors:       <none>
  Tolerations:  <none>


D:\LEO\project\test3\k8s-test>kubectl rollout history deploy hello-k8s-deployment --revision=1
deployment.apps/hello-k8s-deployment with revision #1
Pod Template:
  Labels:       app=hello-k8s
        pod-template-hash=54d8cb895d
  Containers:
   hello-k8s:
    Image:      hello-k8s:latest
    Port:       5000/TCP
    Host Port:  0/TCP
    Liveness:   http-get http://:5000/health delay=5s timeout=1s period=10s #success=1 #failure=3
    Readiness:  http-get http://:5000/health delay=5s timeout=1s period=5s #success=1 #failure=3
    Environment:        <none>
    Mounts:     <none>
  Volumes:      <none>
  Node-Selectors:       <none>
  Tolerations:  <none>

最后一步,咱们再试一下回退。

kubectl rollout undo deploy hello-k8s-deployment

复制代码
D:\LEO\project\test3\k8s-test>kubectl rollout history deploy hello-k8s-deployment
deployment.apps/hello-k8s-deployment
REVISION  CHANGE-CAUSE
1         <none>
2         <none>


D:\LEO\project\test3\k8s-test>kubectl rollout undo deploy hello-k8s-deployment
deployment.apps/hello-k8s-deployment rolled back

D:\LEO\project\test3\k8s-test>kubectl rollout history deploy hello-k8s-deployment
deployment.apps/hello-k8s-deployment
REVISION  CHANGE-CAUSE
2         <none>
3         <none>

验证成果,还可以通过查看当前的配置文件来完成,这个更好一点。

kubectl get deploy hello-k8s-deployment -o yaml

可以通过输出看到 image: hello-k8s:latest,这就很明显了。说明已经回退到了之前的版本。

完成。下次再研究一下分环境的功能。

相关推荐
Hadoop_Liang1 天前
使用Kubernetes Gateway API实现域名访问应用
容器·kubernetes·gateway
暮云星影1 天前
全志linux开发屏幕适配(一)屏幕参数设置说明
linux·arm开发
java_cj1 天前
深入kubectl create源码:从YAML到Pod的完整链路拆解
运维·云原生·容器·kubernetes
swordbob1 天前
NIO 的 Channel 里有多个 BIO 吗?
linux·网络·nio
Fcy6481 天前
Linux下 信号的保存与捕捉
linux·中断·信号的捕捉·信号的保存
A_humble_scholar1 天前
Linux(九) 进程管理完全指南:从入门到实战
linux·运维·chrome
江华森1 天前
Linux 操作命令完全指南
linux·运维
rjszcb1 天前
Linux,sensor调试笔记1,修改帧率,以及曝光上不去问题
linux
源图客1 天前
【AI向量数据库】Weaviate介绍与部署
运维·docker·容器
C++ 老炮儿的技术栈1 天前
Ubuntu root账号自动登陆
linux·运维·服务器·c语言·c++·ubuntu·visual studio