Skip to main content

Kubernetes Kubernetes Deployments & Replication Controllers (Soon Depricated): Example Deployment with Create-Command and YAML Configuration, Scale the Deployment; Example Replication Controller

540 words·
Kubernetes Kubectl
Table of Contents
Kubernetes-Components - This article is part of a series.
Part 5: This Article

Kubernetes Deployments
#

Example: Create Deployment with Create Command
#

# Create a deployment with Nginx container
kubectl create deployment example-deployment --image=nginx:alpine

# Create a deployment with Nginx container: Define number of pod replicas
kubectl create deployment example-deployment --image=nginx:alpine --replicas=2
# List deployments
kubectl get deployments

# List deployment details: Save output in YAML format into file
kubectl describe deployment example-deployment

# List deployment details
kubectl get deployment example-deployment -o yaml > example-deployment.yaml

# Delete the deployment
kubectl delete deployment example-deployment



Example: Create Deployment with YAML Configuration
#

Create Configuration
#

# Create a deployment configuration with dry-run
kubectl create deployment example-deployment --image=nginx --dry-run=client -o yaml > example-deployment.yaml
# Create a configuration for the deployment
vi example-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: example-deployment
  name: example-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: example-deployment
  strategy: {}
  template:
    metadata:
      #creationTimestamp: null
      labels:
        app: example-deployment
    spec:
      containers:
      - image: nginx
        name: nginx
        ports:
          - containerPort: 80
        resources: {}
#status: {}
  • spec.replicas: Number of replica pods

  • spec.selector: The deployment that will manage all pods whose labels match this selector

  • spec.template: Template pod descriptor that defines the pods that will be created

Note: status: and creationTimestamp: can be removed.

# Create the deployment
kubectl create -f example-deployment.yaml

Scale the Deployment
#

# Scale the deployment to 6 pods
kubectl scale deployment example-deployment --replicas=6

Verify the Deployment

# List deployments
kubectl get deployments

# Shell output:
NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
example-deployment     6/6     6            6           5m46s



Replication Controller
#

  • The replication controller ensures that a specified number of pods is running all the time.

  • Replication controllers has mostly been replaced by deployments, which offer more features and functionality.


Example: Replication Controller
#

Create Configuration
#

The following ReplicationController deploys two replicas of pod that consists of an Nginx container:

# Create a configuration for the ReplicationController
vi replication-controller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx-controller
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx-container
        image: nginx
        ports:
        - containerPort: 80
# Create the ReplicationController
kubectl apply -f replication-controller.yaml

List Replication Controllers
#

# List all replication controllers
kubectl get rc

# Shell output: Single container version
NAME               DESIRED   CURRENT   READY   AGE
nginx-controller   2         2         2       30s

Replication Controller Details
#

# List replication controller details
kubectl describe rc nginx-controller

# Shell output:
Events:
  Type    Reason            Age   From                    Message
  ----    ------            ----  ----                    -------
  Normal  SuccessfulCreate  23s   replication-controller  Created pod: nginx-controller-kgdgb
  Normal  SuccessfulCreate  23s   replication-controller  Created pod: nginx-controller-vm2rt

Pod Status & Details
#

# List pods: With label nginx
kubectl get pod -l app=nginx

# Shell output:
NAME                     READY   STATUS    RESTARTS   AGE
nginx-controller-kgdgb   1/1     Running   0          71s
nginx-controller-vm2rt   1/1     Running   0          71s

Edit Replication Controller
#

Use the kubectl edit rc command to edit the replication controller, for example change the amount of replicas to “3”:

# Edit replication controller "nginx-controller"
kubectl edit rc/nginx-controller
# Verify the number of pods
kubectl get pod -l app=nginx

# Shell output:
NAME                     READY   STATUS    RESTARTS   AGE
nginx-controller-2rdkf   1/1     Running   0          5s
nginx-controller-kgdgb   1/1     Running   0          109s
nginx-controller-vm2rt   1/1     Running   0          109s

Delete the Replication Controller
#

# Delete the replication controller and it's pods
kubectl delete rc nginx-controller
kubectl delete rc nginx-alpine-controller

# Verify
kubectl get rc
Kubernetes-Components - This article is part of a series.
Part 5: This Article