---
# System prepended metadata

title: Kubernetes Workload Resources

---

# Kubernetes Workload Resources

## OpenShift DeploymentConfig v.s. Kubernetes Deployment

Here are the comparison beetween **DeploymentConfig** and **Deployment**: 

|                 | DeploymentConfig                                                                   | Deployment         |
| --------------- | ---------------------------------------------------------------------------------- | ------------------ |
| Manager         | ReplicationController                                                              | ReplicaSet         |
| Selector        | Equality-based selector                                                            | Set-based selector |
| CAP             | Consistency                                                                        | Availability       |
| Auto-Rollback   | Rollback on Failure                                                                | N/A                |
| Trigger         | Such as new deployment on config change                                            | N/A                |
| Lifecycle hooks | Executing custom behavior in different points during the lifecycle of a deployment | N/A                |

The official doc of OpenShift suggest to use Deployment instead of DeploymentConfig if you have no specific requirements. 

## ReplicationController (DeploymentConfig)

* Features
    * Ensure the number of pods
    * Ensure the health of pods
    * Scalability
    * Rolling Update
* Rely on **label** and **selector** to manage pods
    * The labels of pods should equal to those in the slector of DeploymentConfig
    * Otherwise, the DeploymentConfig would keep creating new pods. 

## ReplicaSet (Deployment)

ReplicaSet is said to be upgraded DeploymentConfig. However, they don't show large difference on behaviors. 

* Key Difference
    * Support set-based selector

Also, the official doc of Kubernetes suggest to use Deployment to create Pod and ReplicaSet for Deployment providing declarative updates for them. 

## StatefulSets

StatefulSets shows almost same features as the ReplicaSet. 

* Key Difference
    * Sticky identity for each of pods

It is useful for the following senarios: 

* Stable, **unique network identifiers**.
* Stable, **persistent storage**.
* **Ordered**, graceful deployment and scaling.
* **Ordered**, automated rolling updates.

:::info
"Ordered" means that the update or creation of pods is ordered and one by one. For example, if you deploy 4 pods, the deployed order is 1, 2, 3 , 4. Then you remove them, the removed order is 4, 3, 2, 1. 
:::

## DaemonSet

DaemonSet will run a pod on each Node, so no matter you create or remove the Node, you will remove a Pod. 

So, the senarios is mostly about monitoring and logs collection: 

* running a cluster storage daemon on every node
* running a logs collection daemon on every node
* running a node monitoring daemon on every node

By the way, DaemonSet do not support RollBack. 

## References

* [Understanding Deployments and DeploymentConfigs - Deployments | Building applications | OpenShift Container Platform 4.11](https://docs.openshift.com/container-platform/4.11/applications/deployments/what-deployments-are.html)
* [Deployments | Kubernetes](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/)
* [ReplicaSet | Kubernetes](https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/)
* [ReplicationController | Kubernetes](https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/)
* [StatefulSets | Kubernetes](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/)
* [DaemonSet | Kubernetes](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/)
* [How to achieve Automatic Rollback in Kubernetes? - Stack Overflow](https://stackoverflow.com/questions/69468977/how-to-achieve-automatic-rollback-in-kubernetes)
* [『紅帽』的 Cloud-Native 工作術: 從 Container 到 OpenShift 。 :: 第 12 屆 iThome 鐵人賽](https://ithelp.ithome.com.tw/users/20130321/ironman/3566)
* [Kubernetes 30天學習筆記 :: 2018 iT 邦幫忙鐵人賽](https://ithelp.ithome.com.tw/users/20103753/ironman/1590)
* [[Kubernetes] ReplicaSet 介紹 | 小信豬的原始部落](https://godleon.github.io/blog/Kubernetes/k8s-ReplicaSet-Overview/)