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  | 
