一: 简介
为啥需要deployment:
- 目的是让Kubernetes去管理一组无状态Pod的副本,也就是副本集 , 这样就能够保证一定数量的副本一直可用 , 不会因为某一个Pod挂掉导致整个服务挂掉。避免单点故障和支撑更高的访问量
概念:
- Deployment是一个定义及管理多副本应用(即多个副本 Pod)的新一代对象,与Replication Controller相比,它提供了更加完善的功能,使用起来更加简单方便

二: 示例
1.0 定义deployment
- 准备工作目录
bash
mkdir 11deployment ; cd 11deployment
- 定义deployment
bash
vim deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector: #选择器匹配要管理的Pod
matchLabels:
app: nginx
replicas: 2 #Pod 副本数如果 Pod 少于 2 个(比如一个挂了),会自动创建新的补足;如果多于 2 个,会终止多余的。
template: #POD模板。以前定义Pod配置
metadata:
labels:
app: nginx
spec:
containers: #容器配置
- name: nginx
image: nginx
ports:
- containerPort: 80
2.0 创建deployment
- 创建deployment
bash
[root@k8s-master 11deployment]# kubectl apply -f deployment.yaml
deployment.apps/nginx-deployment created
[root@k8s-master 11deployment]#
3.0 查看
- 查看deployment
bash
[root@k8s-master 11deployment]# kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 2/2 2 2 13s
[root@k8s-master 11deployment]#
- 查看pod
bash
[root@k8s-master 11deployment]# kubectl get pods -l app=nginx
NAME READY STATUS RESTARTS AGE
nginx-deployment-7848d4b86f-j2867 1/1 Running 0 31s
nginx-deployment-7848d4b86f-r8rww 1/1 Running 0 31s
[root@k8s-master 11deployment]#
4.0 删除
bash
[root@k8s-master 11deployment]# kubectl delete -f deployment.yaml
deployment.apps "nginx-deployment" deleted
[root@k8s-master 11deployment]# kubectl get deployments
No resources found in default namespace.
[root@k8s-master 11deployment]#