Skip to main content

Deployment & ReplicaSets

Deployment automatically creates a replicaset.

Deployment -> Manages Rollout -> Creates ReplicaSets for each version
kubectl create deployment nginx --image=nginx --replicas=4
kubectl scale deployment nginx --replicas=4
kubectl create deployment nginx --image=nginx --dry-run=client -o yaml > nginx-deployment.yaml

k rollout restart deployment my-app
k rollout status deployment/my-deployment
k rollout history deployment/my-deployment (--revision=3)
k rollout undo deployment/my-deployment [--to-revision=1]

k set image deployment/my-deployment nginx-container=nginx:latest
k get replicasets # will be changing during rollout

ReplicaSets

kubectl get rs
k scale --replicas=6 -f replicaset-definition.yml
k scale replicaset my-replicaset --replicas=6

Save rs to file

kubectl get rs new-replica-set -o yaml > new-rs.yaml
warning

ReplicaSets don't have a rollout strategy like Deployments do. Image updates require manual pod deletion for the ReplicaSet to create new pods with the updated image.

Example def file:
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: my-replicaset
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest