什么是controller
Pod和Controller的关系
Pod是通过Controller实现应用的运维,比如伸缩、滚动升级等等
Pod和Controller之间通过label标签建立关系
Deployment控制器应用场景
部署无状态应用 -> 如:web服务、微服务
管理Pod和ReplicaSet
部署,滚动升级等功能
yaml文件字段说明
先创建一个deployment的yaml文件示例
kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml
查看文件内容
apiVersion: apps/v1kind: Deploymentmetadata:creationTimestamp: nulllabels:app: webname: webspec:replicas: 1# 选择podselector:matchLabels:app: webstrategy: {}# pod配置template:metadata:creationTimestamp: nulllabels:app: webspec:containers:- image: nginxname: nginxresources: {}status: {}
使用yaml部署应用
第一步:导出yaml文件
kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml
第二步:根据需要修改文件
第三步:部署应用
kubectl apply -f web.yaml
第四步:对外发布(暴露端口)
首先我们可以通过导出yaml文件时配置好端口号,然后重复上面的第二步与第三步
kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml > web1.yaml# --port:自身端口 --target-port:对外端口
查看pod与service
kubectl get pods,svc
升级回滚
如果我们在部署应用时指定了镜像的版本
spec:containers:- image: nginx: 1.14
升级nginx
kubectl set image deployment web nginx=nginx:1.15
升级的过程中,旧的nginx服务不会停止,在升级完成后自动进行替换
查看升级的状态
kubectl rollout status deployment web
查看升级版本
kubectl rollout history deployment web
