deployment本身三兄弟,还有两个兄弟分别是replicationcontroller,replica set。 由于k8s本身的发展,首先官方建议使用RS(Replicaset)替代RC(ReplicationController)进行部署,RS跟RC没有本质的不同,只是名字不一样,并且RS支持集合式的 selector。然后发展为Deployment:为Pod 和Replicaset 提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController 来方便的管理应用。 那么什么是deployment呢?很简单,类似阿里云的虚拟主机的AZ(弹性伸缩),我们需要对pod进行自动的伸缩管理,所以无论RC-RS-Deployment都是为了这个终极目的而存在的。 由于实用性,我们主要来讲deployment.简单来看一个deployment的yaml文件 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.12.0 ports: - containerPort: 8080 metadata 指明了服务名为nginx-deployment, 标签为nginx, spec指定了pod的副本为2个,每个pod容器镜像为ngix:1.12.0, 容器端暴漏的端口为8080,我们来创建这个deployment. --record为了记录每次的状态更新。 kubectl create -f nginx-deployment.yaml --record 扩容deployment kubectl scale deployment nginx-deployment --replicas 10 kubectl edit deployment/nginx-deployment(编辑) 如果集群支持HPA,自动扩展 kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80 升级镜像 kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1 版本回滚 kubectl rollout status deployment/nginx-deployment(查看) kubectl rollout history deployment/nginx-deployment(查看历史) kubectl rollout undo deployment/nginx --to-revision=2(回滚指定版本)0 kubectl rollout undo deployment/nginx-deployment kubectl rollout status deployment/nginx-deployment 滚动升级配置 kubectl edit deployment nginx-deployment strategy: rollingupdate: maxSurge:3 maxunavailable:1 type:RollingUpdate maxSurge:滚动升级过程升级几个 maxunavailable:升级不可用的个数 具体这两个参数可以查看官网文档说明。 将deployment服务暴露出去 ubectl expose deployment nginx-deployment --type=NodePort