一、通过文件创建deployment

1、创建deployment文件

[root@k8s-master ~]# cat nginx_deploy.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: 10.0.128.0:5000/nginx:1.13
ports:
- containerPort: 80

2、启动deployment

[root@k8s-master ~]# kubectl create -f nginx_deploy.yml
deployment "nginx-deployment" created

3、查看deployment状态

[root@k8s-master ~]# kubectl get all
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/nginx-deployment 3 3 3 3 17s NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/kubernetes 10.254.0.1 <none> 443/TCP 1d
svc/nginx 10.254.145.15 <nodes> 80:30027/TCP 21h NAME DESIRED CURRENT READY AGE
rs/nginx-deployment-2950479891 3 3 3 17s NAME READY STATUS RESTARTS AGE
po/nginx-deployment-2950479891-3zzdf 1/1 Running 0 17s
po/nginx-deployment-2950479891-6nqn3 1/1 Running 0 17s
po/nginx-deployment-2950479891-wxxr5 1/1 Running 0 17s

二、通过命令行创建deployment

1、删除方式1创建的deployment

[root@k8s-master ~]# kubectl delete -f nginx_deploy.yml
deployment "nginx-deployment" deleted
[root@k8s-master ~]# kubectl get all
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 <none> 443/TCP 1d
nginx 10.254.145.15 <nodes> 80:30027/TCP 21h

2、命令创建

[root@k8s-master ~]# kubectl run nginx --image=10.0.128.0:5000/nginx:1.13 --replicas=5 --record
deployment "nginx" created

3、查看

[root@k8s-master ~]# kubectl get all -o wide
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/nginx 5 5 5 0 3s NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
svc/kubernetes 10.254.0.1 <none> 443/TCP 1d <none>
svc/nginx 10.254.145.15 <nodes> 80:30027/TCP 22h app=myweb NAME DESIRED CURRENT READY AGE CONTAINER(S) IMAGE(S) SELECTOR
rs/nginx-835034785 5 5 0 3s nginx 10.0.128.0:5000/nginx:1.13 pod-template-hash=835034785,run=nginx NAME READY STATUS RESTARTS AGE IP NODE
po/nginx-835034785-b9mnp 0/1 ContainerCreating 0 3s <none> k8s-node2
po/nginx-835034785-gp2m5 0/1 ContainerCreating 0 3s <none> k8s-node1
po/nginx-835034785-hhz0b 0/1 ContainerCreating 0 3s <none> k8s-node1
po/nginx-835034785-mvv4p 0/1 ContainerCreating 0 3s <none> k8s-node2
po/nginx-835034785-x6mjp 0/1 ContainerCreating 0 3s <none> k8s-node1

4、升级镜像版本

[root@k8s-master ~]#  kubectl set image deploy nginx nginx=10.0.128.0:5000/nginx:1.15
deployment "nginx" image updated
[root@k8s-master ~]# kubectl get all -o wide
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/nginx 5 5 5 5 32s NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
svc/kubernetes 10.254.0.1 <none> 443/TCP 1d <none>
svc/nginx 10.254.145.15 <nodes> 80:30027/TCP 22h app=myweb NAME DESIRED CURRENT READY AGE CONTAINER(S) IMAGE(S) SELECTOR
rs/nginx-835034785 0 0 0 32s nginx 10.0.128.0:5000/nginx:1.13 pod-template-hash=835034785,run=nginx
rs/nginx-984850083 5 5 5 14s nginx 10.0.128.0:5000/nginx:1.15 pod-template-hash=984850083,run=nginx NAME READY STATUS RESTARTS AGE IP NODE
po/nginx-984850083-4xt4s 1/1 Running 0 5s 172.16.50.4 k8s-node1
po/nginx-984850083-gk5fq 1/1 Running 0 7s 172.16.50.2 k8s-node1
po/nginx-984850083-mhp7h 1/1 Running 0 13s 172.16.50.3 k8s-node1
po/nginx-984850083-vs93g 1/1 Running 0 14s 172.16.19.4 k8s-node2
po/nginx-984850083-z5px0 1/1 Running 0 11s 172.16.19.5 k8s-node2

四、秒级回滚

1、查看历史版本

[root@k8s-master ~]# kubectl rollout history deployment nginx
deployments "nginx"
REVISION CHANGE-CAUSE
1 kubectl run nginx --image=10.0.128.0:5000/nginx:1.13 --replicas=5 --record
2 kubectl set image deploy nginx nginx=10.0.128.0:5000/nginx:1.15

2、执行回滚

[root@k8s-master ~]# kubectl rollout undo deployment nginx --to-revision=1
deployment "nginx" rolled back

3、回滚结果

[root@k8s-master ~]# kubectl get all -o wide
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/nginx 5 5 5 5 1m NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
svc/kubernetes 10.254.0.1 <none> 443/TCP 1d <none>
svc/nginx 10.254.145.15 <nodes> 80:30027/TCP 22h app=myweb NAME DESIRED CURRENT READY AGE CONTAINER(S) IMAGE(S) SELECTOR
rs/nginx-835034785 5 5 5 1m nginx 10.0.128.0:5000/nginx:1.13 pod-template-hash=835034785,run=nginx
rs/nginx-984850083 0 0 0 1m nginx 10.0.128.0:5000/nginx:1.15 pod-template-hash=984850083,run=nginx NAME READY STATUS RESTARTS AGE IP NODE
po/nginx-835034785-1j1pp 1/1 Running 0 11s 172.16.19.2 k8s-node2
po/nginx-835034785-8jvd0 1/1 Running 0 11s 172.16.50.4 k8s-node1
po/nginx-835034785-9cn2z 1/1 Running 0 6s 172.16.19.3 k8s-node2
po/nginx-835034785-9v5q6 1/1 Running 0 7s 172.16.50.2 k8s-node1
po/nginx-835034785-wwqx7 1/1 Running 0 5s 172.16.50.5 k8s-node1

4、版本测试

[root@k8s-master ~]# curl -I 172.16.50.4
HTTP/1.1 200 OK
Server: nginx/1.13.12
Date: Mon, 21 Jan 2019 11:45:08 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 09 Apr 2018 16:01:09 GMT
Connection: keep-alive
ETag: "5acb8e45-264"
Accept-Ranges: bytes

kubernetes云平台管理实战: 高级资源deployment-滚动升级(八)的更多相关文章

  1. kubernetes云平台管理实战: 滚动升级秒级回滚(六)

    一.nginx保证有两个版本 1.查看当前容器运行nginx版本 [root@k8s-master ~]# kubectl get pod -o wide NAME READY STATUS REST ...

  2. kubernetes云平台管理实战:deployment通过标签管理pod(十)

    一.kubectl run命令拓展 1.RC创建 [root@k8s-master ~]# kubectl run web --generator=run/v1 --image=10.0.128.0: ...

  3. kubernetes云平台管理实战:如何创建deployment更好(九)

    一.文件创建带--record 1.文件 [root@k8s-master ~]# cat nginx_deploy.yml apiVersion: extensions/v1beta1 kind: ...

  4. kubernetes云平台管理实战: 最小的资源pod(二)

    一.pod初体验 1.编辑k8s_pod.yml文件 [root@k8s-master ~]# cat k8s_pod.yml apiVersion: v1 kind: Pod metadata: n ...

  5. kubernetes云平台管理实战:HPA水平自动伸缩(十一)

    一.自动伸缩 1.启动 [root@k8s-master ~]# kubectl autoscale deployment nginx-deployment --max=8 --min=2 --cpu ...

  6. kubernetes云平台管理实战: 集群部署(一)

    一.环境规划 1.架构拓扑图 2.主机规划 3.软件版本 [root@k8s-master ~]# cat /etc/redhat-release CentOS Linux release 7.4.1 ...

  7. kubernetes云平台管理实战: 自动加载到负载均衡(七)

    一.如何实现外界能访问 外界访问不了 1.启动svc [root@k8s-master ~]# cat myweb-svc.yaml apiVersion: v1 kind: Service meta ...

  8. kubernetes云平台管理实战: 故障自愈实战(四)

    一.创建实验文件 [root@k8s-master ~]# cat myweb-rc.yml apiVersion: v1 kind: ReplicationController metadata: ...

  9. kubernetes云平台管理实战: 服务发现和负载均衡(五)

    一.rc控制器常用命令 1.rc控制器信息查看 [root@k8s-master ~]# kubectl get replicationcontroller NAME DESIRED CURRENT ...

随机推荐

  1. SQL Server数据库————连接查询和分组查询

    SQL Server数据库————连接查询和分组查询 分组查询 select 列from  <表名> where  …… group by  列 注意:跟order  by一样group ...

  2. c/c++ 多线程 boost的读写(reader-writer)锁

    多线程 boost的读写(reader-writer)锁 背景:保护很少更新的数据结构时,c++标准库没有提供相应的功能. 例如:有个DNS条目缓存的map,基本上很少有更新,大部分都是读取,但是偶尔 ...

  3. Python爬虫之正则表达式(3)

    # re.sub # 替换字符串中每一个匹配的子串后返回替换后的字符串 import re content = 'Extra strings Hello 1234567 World_This is a ...

  4. 爬虫之Requests&beautifulsoup

    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕 ...

  5. 数据可视化的开源方案: Superset vs Redash vs Metabase (二)

    在上篇结尾处我提到“如果现在让我重新选择,我会使用哪个可视化工具?”我的答案是 Redash,原因主要不是功能层面,而是技术层面.本篇就从项目关注度与活跃度,项目的技术架构,源代码的规模与质量,这三个 ...

  6. idea右键无法新建Java Class

    项目中新建目录之后,要在该目录下新增java Class文件,右键——>New发现无对应选项. 原因:新建目录之后需要设置目录作用,从而让idea识别. 方法:File-Project Stru ...

  7. 转://11g之后,通过v$wait_chains视图诊断数据库hang和Contention

    1g之前,通常我们数据库hang住了之后,我们会对数据库做hang analyze来进行分析,在11g之后,我们可以通过一个新的视图v$wait_chains来诊断数据库hang和contention ...

  8. 步步深入:MySQL架构总览->查询执行流程->SQL解析顺序(转)

    文章转自   http://www.cnblogs.com/annsshadow/p/5037667.html https://www.cnblogs.com/cuisi/p/7685893.html

  9. One take,可望而不可即

    One take,是几年之前看综艺节目听林志炫提到的一个词,就是说录制一首歌曲一次性完成,无需后期的各种修音.这个概念听起来就很酷,对不对? 作为一个程序员,我经常也希望能够One take:一次性把 ...

  10. Asp.Net Core SignalR 用泛型Hub优雅的调用前端方法及传参

    继续学习 最近一直在使用Asp.Net Core SignalR(下面成SignalR Core)为小程序提供websocket支持,前端时间也发了一个学习笔记,在使用过程中稍微看了下它的源码,不得不 ...