Kubernetes 之 Deployment
Deployment 定义
Deployment 是 Kubernetes 中最常用资源之一,为 ReplicaSet 和 Pod 的创建提供了一种声明式的定义方法。Kubernetes 通过定义一个Deployment 控制器会创建一个新的 ReplicaSet 资源,通过 ReplicaSet 资源创建对应 Pod 的副本数。同时,如果我们删除 Deployment 控制器,也会删除 Deployment 控制器下对应的 ReplicaSet 控制器和 Pod 副本,这也是声明式定义的一个特点。
Deployment 常规使用
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-nginx
namespace: default
labels:
app: deployment-nginx
spec:
replicas: 2
selector:
matchLabels:
app: pod-nginx
template:
metadata:
labels:
app: pod-nginx
spec:
containers:
- name: nginx
image: docker.io/k8s-test:v1.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
root@k8s-master1:~# kubectl get pods -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
deployment-nginx-6977747dd9-rv2mx 1/1 Running 0 8s 10.244.194.122 k8s-worker1 <none> <none>
deployment-nginx-6977747dd9-sz42q 1/1 Running 0 8s 10.244.126.23 k8s-worker2 <none> <none>
root@k8s-master1:~# kubectl get rs
NAME DESIRED CURRENT READY AGE
deployment-nginx-6977747dd9 2 2 2 24s
root@k8s-master1:~# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
deployment-nginx 2/2 2 2 41s