Kubernetes basics - Deployment
ReplicationController
No more details than official document.
https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/
It enables HA, auto scaling, multi node controll (across nodes). This is the first fancy function in k8s!!
ReplicaSet
ReplicaSet is kind of newer version of ReplicationController.
https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#replicaset
In stead of ReplicationController and ReplicaSet, we create “Deployment” object to manage Pods. Actually, Deployment use ReplicaSet and when we create a Deployment it creates ReplicaSet automatically.
Labels and Selectors
By labels, Selectors can select the Pod which should be monitored by the Selector.
If there already exist replicas selected by Selectors in ReplicaSet, creation of ReplicaSet wouldn’t create a new Pods in template section. But when existing Pods are down, then ReplicaSet create the Pod based on its templates.
Deployment
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
YAML file
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx-deployment
labels:
app: myapp
type: nginx
spec:
template:
metadata:
name: my-nginx
labels:
app: myapp
type: nginx
spec:
containers:
- name: simple-nginx
image: nginx:latest
replicas: 4
selector:
matchLabels:
app: myapp
Create and check
$ kubectl get all --all-namespaces
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 4h16m
$ kubectl apply -f Deployment.md
deployment.apps/my-first-deployment created
$ kubectl get all --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default pod/my-first-deployment-5b9f678469-6b72p 0/1 ContainerCreating 0 4s
default pod/my-first-deployment-5b9f678469-9jwn7 0/1 ContainerCreating 0 4s
default pod/my-first-deployment-5b9f678469-mdzh4 0/1 ContainerCreating 0 4s
default pod/my-first-deployment-5b9f678469-mhcjz 0/1 ContainerCreating 0 4s
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 4h16m
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
default deployment.apps/my-first-deployment 0/4 4 0 4s
NAMESPACE NAME DESIRED CURRENT READY AGE
default replicaset.apps/my-first-deployment-5b9f678469 4 4 0 4s
4 Pods, 1 ReplicaSet, and 1 Deployment are created.
Scale up and down
kubectl edit deployment/{deployment}
and edit the number of replicas
.