Clarification with Docker Objects

Hi, I am new to docker objects and am confused to the applications of different Docker objects. More specifically Deployment, ReplicaSet, Pod, DaemonSet, and Services. I was hoping if someone could give me a brief explanation on when to use these applications. For example(please correct me if I’m wrong), I believe that a Pod can be used if you want to run a container on all nodes in a cluster. And I believe that if you wanted to ensure a pod ran a specific number of instances you would use a ReplicaSet. Additionally, Deployment would be used to deploy updates to my applications with a specific number of replicas. And a Daemon set ensures all eligible nodes run the pod(from what I understand it’s like the Replica Set but only lets eligible nodes to run?).

Couple more questions I had while reading the kubernetes documentation on Deployments:
Also, when defining a deployment, do you need to define all the selector labels on the pod template?
Additionally, does the pod template in the Deployment only have labels that are selector labels?
When dealing with pods, they limit the fields you can change. Do deployments also limit the fields?
When rolling out changes, from what I understood, Deployments automate the scaling up or down of pods(please correct me if this is wrong).
Lastly, I understand that CronJobs can create Jobs on a repeating schedule. Can Jobs do this themselves, or do you need to use CronJobs?

Thanks for taking the time to read this and help.

Those are Kubernetes “kinds” and are typicaly described thru manifest files.

I can highly recommend this free selfpaced training: Deploying and Scaling Microservices with Docker and Kubernetes
If you are serious with Kubernetes, you will want to do all slides and perform all exercices.

If you are just looking for the answers to your questions, you can start with slide 145.