Deployment 控制器
Pod与controllers的关系
- controllers: 在集群上管理和运行容器的对象
- 通过label-selector相关联
- Pod通过控制器实现应用的运维,如伸缩,滚动升级等
1 | 1. Pod是k8s当中最小的调度单元,但是一般很少直接使用pod |
1 | # 在一个yaml文件中可以分成两类: |
1 | # 知识点总结: |
Deployment 功能与应用场景
- 部署无状态应用
- 管理Pod和ReplicaSet
- 具有上线部署、副本设定、滚动升级、回滚等功能
- 提供声明式更新,例如值只更新一个新的Image
- 应用场景: Web服务,微服务
1 | 1. ReplicaSet也是控制器,但是他得功能比较单一 |
Deployment YAML文件字段解析
1 | 在k8s集群中创建pod的两种方式: |
Deployment 部署无状态应用
1 | [root@k8s-master1 demo]# kubectl create deployment --help |
1 | # 测试并输出到yaml格式文件 |
1 | # 修改为应用属性 |
1 | [root@k8s-master1 demo]# kubectl get pods -o wide |
暴露应用
1 | 在k8s集群中暴露应用两种方式: |
1 | [root@k8s-master1 demo]# kubectl expose --help |
1 | # nodeIP+端口测试访问 |
升级与回滚
升级操作 set
- 升级更新
1 | [root@k8s-master1 demo]# kubectl set --help |
- 模拟程序升级
1 | # 需要修改模拟程序并打包一个新的镜像,推送到镜像仓库,这里先用nginx替代 |
1 | # 错误原因 镜像名字写错了 |
1 | [root@k8s-master1 demo]# kubectl set image deployment web java-demo=nginx:1.16 |
- 查看升级状态
1 | # 如果pod做了健康检查,那么在更新的时候可以查看更新状态 |
- kubectl patch 补丁命令
1 | [root@k8s-master1 demo]# kubectl patch --help |
回滚操作 rollout
- 查看deployment历史记录
1 | [root@k8s-master1 demo]# kubectl rollout --help |
- 回滚到上一个版本
1 | [root@k8s-master1 demo]# kubectl rollout undo deployment/web |
- 回滚到指定版本
1 | # 我这个nginx 回滚到 java-demo 别忘记修改回端口 |
删除应用
1 | # 删除pod还会拉起,因为创建的是deployment会保证副本数量 |
1 | [root@k8s-master1 demo]# kubectl apply -f web.yaml |
弹性伸缩 scale
1 | 1. 根据活动扩容实例 |
1 | # kubectl scale 快速扩容 承担并发 |
- 如果集群的资源不够,单只扩容pod是不行的
1 | 1. 增加nodes节点或者增加nodes的资源 |
- 手动缩容
1 | [root@k8s-master1 demo]# kubectl scale --replicas=3 deployment/web |
Deployment 和 ReplicaSet
1 | 1. 部署1个Deployment,会自动创建1个ReplicaSet和Pod |
1 | 1. 部署Deployment -> 创建RS -> RS管理多个Pod |
1 | 1. Deployment -> 创建RS -> RS管理多个Pod |
1 | [root@k8s-master1 ~]# kubectl set image deployment/web java-demo=nginx:1.16 |