• kubernetes云平台管理实战: 高级资源deployment-滚动升级(八)


    一、通过文件创建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
  • 相关阅读:
    iOS:图片相关(19-05-09更)
    iOS:文字相关(19-01-08更)
    iOS:通信录(完成)(18-01-18更)
    Swift 中的Closures(闭包)详解
    Swift 中的高阶函数和函数嵌套
    Swift API设计原则
    Swift下CoreData的使用
    iOS 使用贝塞尔曲线绘制路径
    iOS CALayer使用
    iOS 多线程的使用
  • 原文地址:https://www.cnblogs.com/luoahong/p/10302601.html
Copyright © 2020-2023  润新知