에서 는 Kubernetes 문서 :
선택기 필드는 배포에서 관리 할 포드를 찾는 방법을 정의합니다.
그러나 배포를 만들 때 이미 포드 템플릿을 배포의 일부로 지정했습니다. 그렇다면 왜 선택기가 필요할까요?
포드가 이미 개별적으로 시작되었지만 나중에 배포 관리를 통해 관리되는 서비스처럼 사용해야합니까?
에서 는 Kubernetes 문서 :
선택기 필드는 배포에서 관리 할 포드를 찾는 방법을 정의합니다.
그러나 배포를 만들 때 이미 포드 템플릿을 배포의 일부로 지정했습니다. 그렇다면 왜 선택기가 필요할까요?
포드가 이미 개별적으로 시작되었지만 나중에 배포 관리를 통해 관리되는 서비스처럼 사용해야합니까?
답변:
이 질문에 대한 답변 은 kubernetes.io의 배포 섹션 에서 찾을 수 있습니다.
그렇다면 왜 선택기가 필요할까요?
k8s v 1.14에 대한 문서 에서 아래 인용
.spec.selector
이 배포가 대상으로하는 포드의 레이블 선택기를 지정 하는 필수 필드입니다.
.spec.selector
일치해야합니다. 그렇지 않으면.spec.template.metadata.labels
API에서 거부됩니다.API 버전 apps / v1에서 .spec.selector 및 .metadata.labels는 설정되지 않은 경우 기본적으로 .spec.template.metadata.labels로 설정되지 않습니다. 따라서 명시 적으로 설정해야합니다 . 또한 apps / v1에서 배포를 생성 한 후에는 .spec.selector를 변경할 수 없습니다.
템플릿이 .spec.template과 다르거 나 해당 포드의 총 수가 .spec.replicas를 초과하는 경우 배포에서 레이블이 선택기와 일치하는 포드를 종료 할 수 있습니다. 포드 수가 원하는 수보다 적 으면 .spec.template의 새 포드가 나타납니다.
포드는 이미 개별적으로 시작되었지만 나중에 배포 관리를 통해 함께 관리됩니까?
간단히 말해서, 아니오
참고 : 직접 다른 라벨을 만들
Deployment
거나 aReplicaSet
또는 a 같은 다른 컨트롤러를 만들어이 셀렉터와 레이블이 다른 포드를 만들면 안됩니다ReplicationController
. 그렇게하면 첫 번째는Deployment
다른 포드를 만들었다 고 생각합니다.Kubernetes
당신이 이것을하는 것을 막지 않습니다. 선택기가 겹치는 컨트롤러가 여러 개인 경우 컨트롤러가 서로 싸우며 올바르게 작동하지 않습니다.
.spec.template.metadata.labels
합니까? spec
아래에 정의 된 것처럼 요점은 무엇 Deployment
이므로 배포를 위해 포드가 시작되는 것이 분명합니다.