controller(Deployment)概述和应用场景

controller(Deployment)概述和应用场景

  • 什么是controller
  • Pod和Controller关系
  • Deployment控制器应用场景
  • 使用deployment部署时yaml中字段说明相互关系建立
  • Deployment控制器部署应用
    • 导出yaml文件
    • 使用yaml部署应用
    • 对外发布(暴露端口号)
  • 升级回滚
    • 应用升级
    • 应用回滚
  • 弹性伸缩

什么是controller

确保预期的pod副本数量,确保所有的node运行同一个pod
一次性任务和定时任务
无状态应用部署
无状态应用部署

  • 在集群上管理和运行Pod的对象

Pod和Controller关系

  • Pod是通过Controller实现应用运维,比如伸缩和滚动升级等等
  • Pod和Controller之间通过label标签建立关系
    controller(Deployment)概述和应用场景_第1张图片

Deployment控制器应用场景

  • 部署无状态应用(web,nginx等)
  • 管理Pod和ReplicaSet
  • 部署,滚动升级等功能
    ** 应用场景:web服务,微服务

使用deployment部署时yaml中字段说明相互关系建立

pod和cotroller通过label和selector
controller(Deployment)概述和应用场景_第2张图片

Deployment控制器部署应用

kubectl create deployment web --image=nginx   // 只是一种测试
kubectl create deployment --image=ngix -o yaml >web01.yaml       //导出到yaml文件中,也可以修改
kubectl apply -f web.yaml    //使用yaml文件应用部署
kubectl get pods   //查看pod信息

导出yaml文件

kubectl create deployment --image=ngix -o yaml >web01.yaml

使用yaml部署应用

kubectl apply -f web.yaml    //使用yaml文件应用部署
kubectl get pods   //查看pod信息

对外发布(暴露端口号)

kubectl expose deployment web01 --port=80 --type=NodePort --target-port=80 --name=web02 -o yaml > web02.yaml
kubectl get pods,service  //查看对外端口号,slave节点也可以访问

controller(Deployment)概述和应用场景_第3张图片
最后使用slave节点访问结果如下:
controller(Deployment)概述和应用场景_第4张图片

升级回滚

应用升级

kubectl set image deployment [pod名] nginx=nginx:1.15 //将镜像从1.14升级到1.15

升级的过程:
使用副本替换,并不是停止原来的1.14版本即服务不中断,而是下载新的1.15再替换掉正在运行的旧版本,依次替换。
controller(Deployment)概述和应用场景_第5张图片
过程
controller(Deployment)概述和应用场景_第6张图片
docker中的镜像,我们发现docker下载了nginx的1.15版本
controller(Deployment)概述和应用场景_第7张图片
查看升级状态

kubectl rollout status deployment web01 //查看升级状态

在这里插入图片描述

应用回滚

将nginx回滚到1.14
查看历史版本

kubectl rollout history deployment web01 // 查看历史升级版本

在这里插入图片描述
回到上一个版本

kubectl rollout undo deployment web01 //还原到上一个版本

controller(Deployment)概述和应用场景_第8张图片
回滚到指定的版本中去

kubectl rollout undo deployment web01 --to-version=2 //回滚到指定版本

在这里插入图片描述

弹性伸缩

kubectl get pods    //查看pod状态
kubectl scale deployment web01 --replicas=10 //伸缩的值

controller(Deployment)概述和应用场景_第9张图片
这个就是弹性伸缩特点,提供多种服务。

你可能感兴趣的:(k8s,Docker,云计算,nginx,docker,k8s,linux)