Deployment在继承Pod和Replicaset的所有特性的同时,它可以实现对template模板进行实时滚动更新并具备我们线上的Application life circle的特性。
1、创建Deployment
# vi deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: httpd-deployment
labels:
app: httpd-deployment
spec:
replicas: 2
selector:
matchLabels:
app: httpd-demo
template:
metadata:
labels:
app: httpd-demo
spec:
containers:
- name: httpd
image: httpd
imagePullPolicy: Always
ports:
- containerPort: 80
env:
- name: VERSION
value: "v1"
# 创建
kubectl create -f deployment.yaml
2、查看Deployment
# kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
httpd-deployment 2 2 2 2 8d
# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
httpd-deployment-956697567-8mqch 1/1 Running 0 8d 10.244.0.36 kube-master
httpd-deployment-956697567-wcbs6 1/1 Running 0 8d 10.244.0.37 kube-master
# kubectl describe deployment
...
3、更新deployment
通过此命令可以呼出vi编辑器对模板进行编辑.
kubectl edit -f deployment.yaml
通过此命令使当前编辑结果生效.
kubectl apply -f deployment.yaml
再次查看可以看到老版本的deployment已经下架, 新版本的已经生效.
# kubectl get deployment
NAME DESIRED CURRENT READY AGE
httpd-deployment-6b98d94474 0 0 0 1m
httpd-deployment-956697567 2 2 2 7m
4、扩容与缩容
可以修改replicas的赋值对deployment进行扩容与缩容
kubectl scale deployment/httpd-deployment --replicas=1
5、删除deployment
kubectl delete deployment httpd-deployment