
An image contains the code used to create a deployment. Then, a deployment can be created from an image, which should then create a replica set (which is the number of pods that should be created), and then the pods should be created.
If you are not familiar with the oc command, refer to OpenShift - Getting Started with the oc command.
The oc get deployments command can be used to return the deployments in a project / namespace. Something like this should be returned. The DESIRED, CURRENT, UP-TO-DATE and AVAILABLE columns represent the number of replicas for the deployment.
Replicas is the number of pods that should be created for the deployment.
~]# oc get deployments --namespace <some namespace>
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
app001-5b9879db6d 1 1 1 1 205d
The DESIRED replicas is defined in the deployments YAML file, which can be seen with the --output yaml or --output json option.
~]# oc get deployments --namespace <some namespace> -o yaml | grep -i replicas
replicas: 1
Similarly, the oc get replicaset command can be used to display the DESIRED, CURRENT, and READY replicas for the deployments.
~]# oc get replicaset --namespace <some namespace>
NAME DESIRED CURRENT READY AGE
app001-5b9879db6d 1 1 1 205d
You can update a replicaset or deployment to have a certain number of replicas:
- Manually, using the oc scale command
- Automatically, using the oc autoscale command (this article)
The oc autoscale command can be used to automatically update a replicaset and deployment to have a certain number of replicas based on some condition, such as the amount of CPU being used by the deployment. In this example, the deployment will always have a least 1 pod, and will automatically scale up to a maximum of 3 pods when a pod exceeds 50% used CPU.
~]$ oc autoscale deployment my-app --min 1 --max 3 --cpu-percent 50
horizontalpodautoscaler.autoscaling/my-app autoscaled
The oc get horizontalpodautoscaler command can then be used to list the autoscalers that have been created in the project / namespace.
~]$ oc get horizontalpodautoscaler
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
my-app Deployment/my-app <unknown>/50% 1 3 1 10m
And the oc describe horizontalpodautoscaler command can also be used to display information about an autoscaler.
~]$ oc describe horizontalpodautoscaler my-app
Name: my-app
Namespace: default
Labels: <none>
Annotations: <none>
CreationTimestamp: Tue, 23 Aug 2022 06:33:50 -0500
Reference: Deployment/my-app
Metrics: ( current / target )
resource cpu on pods (as a percentage of request): <unknown> / 50%
Min replicas: 1
Max replicas: 3
Deployment pods: 1 current / 0 desired
Or, the oc get horizontalpodautoscaler command with the --output yaml or --output json option can be used.
~]$ oc get horizontalpodautoscaler my-app --output yaml
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
creationTimestamp: "2022-08-23T11:33:50Z"
name: my-app
namespace: default
resourceVersion: "472074474"
uid: 65ca2ce0-52e4-4565-becc-bb79742c4428
spec:
maxReplicas: 3
minReplicas: 1
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
targetCPUUtilizationPercentage: 50
status:
currentReplicas: 1
desiredReplicas: 0
Did you find this article helpful?
If so, consider buying me a coffee over at