1、Controller概述
在集群上管理和运行容器对象
2、Pod和Controller关系
Pod是通过controller实现应用的维护:弹性伸缩、滚动升级等
Pod和Controller之间建立关系的方式?
spec:
replicas: 1
selector:
matchLabels:
app: web
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: web
spec:
containers:
- image: nginx
name: nginx
- 通过label标签建立关系
- 控制器中selector。Pod中标签labels
3、deployment应用场景
(1)部署无状态应用(web服务、微服务)
(2)管理Pod和ReplicaSet
(3)部署、滚动升级
4、使用Deployment(无状态)方式部署应用
//创建pod只生成yaml文件,
--dry-run 表示尝试执行,实际不运行
> web.yaml 表示生成yaml文件导出到根目录
kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml
//生成的yaml文件可以进行编辑
//使用yaml文件进行应用部署
kubectl apply -f web.yaml
//查看创建成功的pod
kubectl get pods
//对外进行发布(暴露端口)
--port 表示当前端口
--target-port=80 表示对外端口
--name 表示对此发布的命名
kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml > web1.yaml
kubectl apply -f web1.yaml
kubectl get pods.svc
5、升级、回滚
//直接vi编辑web.yaml中 - image的版本为1.14,并且部署应用
kubectl apply -f web.yaml
//将版本升级为1.15
kubectl set image deployment web nginx=nginx:1.15
//查看应用升级状态
kubectl rollout status deployment web
//查看升级历史版本
kubectl rollout history deployment web
//还原到上一个版本
kubectl rollout undo deployment web
//还原到指定版本
kubectl rollout undo deployment web --to-revision=2
6、弹性伸缩
//设置应用的副本数
kubectl scale deployment web --replicas=10