From Kubernetes documentation:
The selector field defines how the Deployment finds which Pods to manage.
But, when creating deployment, I already specify the pod template as part of the deployment. So, why will I need the selectors as well?
Is it supposed to be used like services, where pods are already being started separately, but later brought under the umbrella of Deployment to be managed together?
Answer for this question we can find in section Deployments from kubernetes.io
So, why will I need the selectors as well?
Quotes below from documentation for k8s v 1.14
Pods are already being started separately, but later brought under the umbrella of Deployment to be managed together?
Simply speaking, No
while spec.template.metadata.labels can have extra labels which you can annotate the pod with , the selector section need to pin few of them so it know which pods are under its governance