k8s中操作Deployment示例

以下部署过程基于官方手册,稍作调整以便理解。
若还未搭建环境,可参考CentOS7 Kubernetes minikube本地环境搭建一文搭建环境。

本示例包含以下内容:

由于本篇内容是按实际操作顺序编排,如要实践本篇中的事例,推荐从头到尾按顺序一步步执行,以免“跳戏”。

创建Deployment

$ vim nginx-deployment.yaml

创建nginx-deployment.yaml文件,声明deployment的各项参数,文件内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  #指定deployment的名称
  name: nginx-deployment
  labels:
    app: nginx
spec:
  #期望创建3个nginx实例(3个pod)
  replicas: 3
  selector:
    #选择label:app=nginx的pod来创建实例
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

该文件表示要创建3个pod,每个pod运行nginx1.7.9镜像。
执行创建

$ kubectl create -f nginx-deployment.yaml
$ deployment.apps "nginx-deployment" created

创建成功,查看deployment和pod的运行状况:

$ kubectl get deploy
NAME               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   3         3         3            3           57s

$ kubectl get po -o wide
NAME                                READY     STATUS    RESTARTS   AGE       IP           NODE
nginx-deployment-75675f5897-jgl27   1/1       Running   0          12s       172.17.0.5   minikube
nginx-deployment-75675f5897-rrnsk   1/1       Running   0          12s       172.17.0.7   minikube
nginx-deployment-75675f5897-txlkv   1/1       Running   0          12s       172.17.0.6   minikube

可以看到deployment已经创建成功,并创建了3个pod,IP地址分别是172.17.0.5,172.17.0.6,172.17.0.7
分别对三个IP地址使用curl命令,均能返回nginx的欢迎页内容,表示创建成功。

$ curl http://172.17.0.5
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

更新Deployment

我们将nginx:1.7.9版本更新到nginx:1.9.1
手动设置升级的nginx版本:

$ kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1 --record
deployment.apps "nginx-deployment" image updated

查看rollout,pod和rs状态:

$ kubectl rollout status deploy nginx-deployment
Waiting for rollout to finish: 2 out of 3 new replicas have been updated...
$ kubectl get po
NAME                                READY     STATUS        RESTARTS   AGE
nginx-deployment-75675f5897-rrnsk   1/1       Terminating   0          1m
nginx-deployment-75675f5897-txlkv   0/1       Terminating   0          1m
nginx-deployment-c4747d96c-bf97v    1/1       Running       0          4s
nginx-deployment-c4747d96c-ctpl2    1/1       Running       0          5s
nginx-deployment-c4747d96c-rthg5    1/1       Running       0          6s
$ get rs
NAME                          DESIRED   CURRENT   READY     AGE
nginx-deployment-75675f5897   0         0         0         1m
nginx-deployment-c4747d96c    3         3         3         9s

可以看到旧的pod正在被终止,新的pod被创建出来,这是滚动升级的过程。
等升级完成再来看看rollout和pod的状态:

$ kubectl rollout status deplo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值