Deployment 是最常用的用于部署无状态服务的方式。Deployment 控制器使得您能够以声明的方式更新 Pod(容器组)和 ReplicaSet(副本集)。
apiVersion: apps/v1 #与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本
kind: Deployment #该配置的类型,我们使用的是 Deployment
metadata: #译名为元数据,即 Deployment 的一些基本属性和信息
name: nginx-deployment #Deployment 的名称
labels: #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解
app: nginx #为该Deployment设置key为app,value为nginx的标签
spec: #这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用
replicas: 1 #使用该Deployment创建一个应用程序实例
selector: #标签选择器,与上面的标签共同作用,目前不需要理解
matchLabels: #选择包含标签app:nginx的资源
app: nginx
template: #这是选择或创建的Pod的模板
metadata: #Pod的元数据
labels: #Pod的标签,上面的selector即选择包含标签app:nginx的Pod
app: nginx
spec: #期望Pod实现的功能(即在pod中部署)
containers: #生成container,与docker中的container是同一种
- name: nginx #container的名称
image: nginx:1.10 #使用镜像nginx:1.10创建container,该container默认80端口可访问
创建deployment
kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml
kubectl apply -f nginx-deployment.yaml #可以在后面家--record记录过程
查看:
kubectl get deployments
kubectl get deployments nginx-deployment
更新deployment
kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1
#我们可以使用edit命令来编辑Deployment,修改 .spec.template.spec.containers[0].image
kubectl edit deployment/nginx-deployment
详情deployment
kubectl describe deployments
kubectl describe deployments nginx-deployment
rollout回滚deployment:
kubectl rollout status deployment/nginx-deployment #查看状态
kubectl rollout history deployment/nginx-deployment #查看历史
kubectl rollout undo deployment/nginx-deployment #回滚到上一个版本状态
kubectl rollout undo deployment/nginx-deployment --to-revision=2 #回滚到指定的历史版本
Scale扩容deployment:
kubectl scale deployment nginx-deployment --replicas 3 #副本3
kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80 #在cpu使用率在80%范围内自动扩容到10-15个