创建deployment
nginx-dempoyment.yml
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template: # create pods using pod definition in this template
metadata:
# unlike pod-nginx.yaml, the name is not included in the meta data as a unique name is
# generated from the deployment name
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
$ kubectl create -f nginx_depolyment.yml
deployment.apps "nginx-deployment" created
查看demployment
root@ubuntu-128:/home/itcast/working/deployment# kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 2/2 2 2 23m
root@ubuntu-128:/home/itcast/working/deployment# kubectl get deployments -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx-deployment 2/2 2 2 23m nginx nginx:1.7.9 app=nginx
root@ubuntu-128:/home/itcast/working/deployment#
查看deployment细节描述,按照标签方式查看
root@ubuntu-128:/home/itcast/working/deployment# kubectl describe deployment nginx-deployment
Name: nginx-deployment
Namespace: default
CreationTimestamp: Tue, 13 Aug 2019 07:10:14 +0800
Labels: <none>
Annotations: deployment.kubernetes.io/revision: 1
Selector: app=nginx
Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx
Containers:
nginx:
Image: nginx:1.7.9
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: nginx-deployment-76bf4969df (2/2 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 2m57s deployment-controller Scaled up replica set nginx-deployment-76bf4969df to 2
root@ubuntu-128:/home/itcast/working/deployment# kubectl get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx-deployment-76bf4969df-b6srp 1/1 Running 0 4m24s app=nginx,pod-template-hash=76bf4969df
nginx-deployment-76bf4969df-d8kj9 1/1 Running 0 4m24s app=nginx,pod-template-hash=76bf4969df
root@ubuntu-128:/home/itcast/working/deployment# kubectl get pod -l app=nginx
NAME READY STATUS RESTARTS AGE
nginx-deployment-76bf4969df-b6srp 1/1 Running 0 3m55s
nginx-deployment-76bf4969df-d8kj9 1/1 Running 0 3m55s
更新deployment
nginx_depolyment_update.yml
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.8 # Update the version of nginx from 1.7.9 to 1.8
ports:
- containerPort: 80
更新deployment 只能使用apply,其实apply有创建和更新的作用
$ kubectl apply -f nginx_depolyment_update.yml
depolyment "nginx-deployment" updated
可以看到版本已经更新了
root@ubuntu-128:/home/itcast/working/deployment# kubectl get deployments -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx-deployment 2/2 2 2 31m nginx nginx:1.8 app=nginx
再次增加实例数目 2--->4
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 4 # Update the replicas from 2 to 4
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.8
ports:
pod变成了三个了
root@ubuntu-128:/home/itcast/working/deployment# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-5896fbb489-2vp6n 1/1 Running 0 6m3s
nginx-deployment-5896fbb489-59tp9 0/1 ContainerCreating 0 83s
nginx-deployment-76bf4969df-d8kj9 1/1 Running 0 12m
nginx-deployment-76bf4969df-wr2vq 1/1 Running 0 7m20s
第三种修改的方式,直接修改,推荐
kubectl edit -f nginx_deployment_scale.yml
删除demployment
$ kubectl delete deployment nginx-deployment
depolyment "nginx-deployment" deleted
探究deployment原理
root@ubuntu-128:/home/itcast/working/deployment# kubectl rollout history deployment nginx-deployment --revision=1
deployment.extensions/nginx-deployment with revision #1
Pod Template:
Labels: app=nginx
pod-template-hash=76bf4969df
Containers:
nginx:
Image: nginx:1.7.9
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
root@ubuntu-128:/home/itcast/working/deployment# kubectl rollout history deployment nginx-deployment --revision=2
deployment.extensions/nginx-deployment with revision #2
Pod Template:
Labels: app=nginx
pod-template-hash=5896fbb489
Containers:
nginx:
Image: nginx:1.8
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>