无状态应用管理Deployment

本文介绍了Kubernetes中的Deployment概念,包括其在无状态应用部署中的作用,创建、查看、更新、回滚以及扩容的步骤,以及如何通过kubectl进行操作。
摘要由CSDN通过智能技术生成

无状态应用管理Deployment

1、Deployment介绍

Deployment一般用于部署公司的无状态服务。

格式:

apiVersion: apps/v1

kind: Deployment

metadata:

    name: nginx-deployment

    labels:

       app: nginx

spec:

    replicas: 3

    selector:

        matchLabels:

            app: nginx

template:

    metadata:

          labels:

              app: nginx

    spec:

        containers:

        - name: nginx

          image: nginx:1.15

          ports:

          - containerPort: 80

注:从Kubernetes 1.16版本开始,彻底废弃了其他的APIVersion,只能使用apps/v11.16以下的版本可以使用extension等。

  1. metadata.name:Deployment的名称,例如:nginx-deployment
  2. metadata.labels.app:Deployment的标签,例如:nginx
  3. spec.replicasDeployment的副本数量,例如:3
  4. spec.selector.matchLabels.app:Deployment管理的pod,与metadata.labels.app 对应,apiVersionapps/v1必须指定该字段
  5. template.metadata.labels.app定义Pod的标签,例如:nginx
  6. template.spec.containers.name定义Pod运行的容器名称,例如:nginx
  7. template.spec.containers.image定义Pod使用的镜像,例如:nginx:1.15

8)template.spec.containers.ports.containerPort定义Pod用于发送和接收流量的端口例如:80

2、创建Deployment

使用kubectl create创建Deployment

3、查看Deployment

是用kubectl get deployment(简写deploy)

NAME:Deployment的名称;

READY:Pod就绪个数和总副本数;

UP-TO-DATE:显示已达到期望状态的被更新的副本数;

AVAILABLE: 显示用户可以使用的应用程序副本数当前为3,说明目前达到望的Pod;

AGE:显示应用程序运行的时间。

3.1 查看当前Deployment对应的ReplicaSet

kubectl get rs -l app=nginx

3.2 查看Deployment创建的Pod

kubectl get pods

3.3 查看pod 节点信息

kubectl get pods -owide

4、更新Deployment

注意:当且仅当Deployment的Pod模板(即.spec.template)更改时,才会触发Deployment更新,例如更改内存、CPU配置或者容器的image。

假如更新nginx Pod的image使用nginx:latest,并使用--record记录当前更改的参数,后期回滚时可以查看到对应的信息:

kubectl set image deployment nginx nginx=registry.cn-shenzhen.aliyuncs.com/zhouwb/nginx --record

describe查看Deployment的详细信息:

kubectl describe deploy nginx

5、回滚Deployment

当更新了版本不稳定或配置不合理时,可以对其进行回滚操作,假设我们又进行了几次更新(此处以更新镜像版本触发更新,更改配置效果类似):

kubectl set image deployment nginx nginx=registry.cn-shenzhen.aliyuncs.com/zhouwb/nginx:latest --record

kubectl set image deployment nginx nginx=registry.cn-shenzhen.aliyuncs.com/zhouwb/nginx:1.15  --record

使用kubectl rollout history查看更新历史:

 kubectl rollout history deployment nginx

如果只需要回滚到上一个稳定版本,使用kubectl rollout undo即可:

如果要回滚到指定版本,使用--to-revision参数:

kubectl rollout undo deployment nginx --to-revision=4

6扩容Deployment

当公司访问量变大,或者有预期内的活动时,三个Pod可能已无法支撑业务时,可以提前对其进行扩展。

使用kubectl scale动态调整Pod的副本数,比如增加Pod5个:

kubectl scale deployment nginx --replicas=5

  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值