Le champ de sélection définit comment le déploiement trouve les pods à gérer.
Mais, lors de la création du déploiement, je spécifie déjà le modèle de pod dans le cadre du déploiement. Alors, pourquoi aurai-je aussi besoin des sélecteurs?
Est-il censé être utilisé comme des services, où les modules sont déjà démarrés séparément, mais plus tard placés sous l'égide du déploiement pour être gérés ensemble?
Réponse à cette question, nous pouvons trouver dans la section Déploiements de kubernetes.io
Alors, pourquoi aurai-je aussi besoin des sélecteurs?
Citations ci-dessous de documentation pour k8s v 1.14
.spec.selector
est un champ obligatoire qui spécifie un sélecteur d'étiquette pour les pods ciblés par ce déploiement.
.spec.selector
doit correspondre.spec.template.metadata.labels
, ou il sera rejeté par l'API.Dans la version API, apps/v1, .spec.selector et .metadata.labels ne sont pas définis par défaut sur .spec.template.metadata.labels s'ils ne sont pas définis. Ils doivent donc être définis explicitement . Notez également que .spec.selector est immuable après la création du déploiement dans apps/v1.
Un déploiement peut mettre fin aux pods dont les étiquettes correspondent au sélecteur si leur modèle est différent de .spec.template ou si le nombre total de ces pods dépasse .spec.replicas. Il fait apparaître de nouveaux pods avec .spec.template si le nombre de pods est inférieur au nombre souhaité.
Les pods sont déjà démarrés séparément, mais plus tard placés sous l'égide du déploiement à gérer ensemble?
Pour parler simplement, Non
Remarque: Vous ne devez pas créer d'autres modules dont les étiquettes correspondent à ce sélecteur, soit directement, en créant un autre
Deployment
, soit en créant un autre contrôleur tel qu'unReplicaSet
ou unReplicationController
. Si vous le faites, le premierDeployment
pense qu'il a créé ces autres pods.Kubernetes
ne vous empêche pas de le faire. Si vous avez plusieurs contrôleurs qui ont des sélecteurs qui se chevauchent, les contrôleurs se battront entre eux et ne se comporteront pas correctement.