Controllern不像Pod,是虚拟出来的概念,Controller是实际存在的,是k8s在集群上管理和运行容器的对象
Pod是通过Controller实现应用的运维,比如伸缩、滚动升级等等
Pod和Controller之间是通过labei标签建立联系
部署无状态应用
管理Pod和副本ReplicaSet数量
部署,滚动升级等功能
应用场景:web服务、微服务部署等
kubectl create deployment web1 --image=nginx --dry-run -o yaml > web1.yaml
然后我们会得到一个web1.yaml文件如下所示
kubectl apply -f web1.yaml
然后我们一直等待,等待他运行成功
kubectl expose deployment web1 --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml > web1Expose.yaml
然后我们可以看到一个部署文件:web1Expose.yaml
我们将其部署,将Nginx应用进行发布,进行端口暴露
kubectl apply -f web1Expose.yaml
kubectl get pods,svc
这个时候已经发布成功,我们可以通过三个节点,只要是30339端口即可访问Nginx服务
下面我们初始化一下环境,将刚刚部署的pod删掉,先删pod ,再删Deployment
kubectl get pods
kubectl delete pod podName
kubectl get deployments
kubectl delete deployment depName
修改刚刚我们导出的web1.yaml文件
副本数量修正为2
Nginx的镜像指定版本为1.14
使用yaml部署应用
kubectl apply -f web1.yaml
然后我们去诸多node节点查看相应的镜像版本信息
从刚刚我们的操作中,我们部署了两台版本为1.14的Nginx,现在我们要对其进行升级到1.15
kubectl set image deployment web1 nginx=nginx:1.15
我们可以查看升级状态
kubectl rollout status deployment 应用名称
过程分析:升级过程中为什么对外暴露的服务不会停止
就是刚刚查看是否升级成功的命名把status改成history即可查看所有版本信息
kubectl rollout history deployment web1.
版本回滚到上一个版本
kubectl rollout undo deployment web1
版本回滚到指定版本
kubectl rollout undo deployment web1 --to-reversion=2
就使用我们刚刚部署的Nginx做列子,我们对其副本伸缩
kubectl scale deployment web1 --replicas=10
原文:https://www.cnblogs.com/msi-chen/p/14328025.html