Trả lời cho câu hỏi này, chúng ta có thể tìm thấy trong phần Triển khai từ kubernetes.io
Vì vậy, tại sao tôi cũng cần bộ chọn?
Trích dẫn dưới đây từ tài liệu cho k8s v 1.14
.spec.selector
là một trường bắt buộc chỉ định bộ chọn nhãn cho các Pod được nhắm mục tiêu bởi triển khai này.
.spec.selector
phải phù hợp .spec.template.metadata.labels
hoặc API sẽ bị từ chối.
Trong phiên bản API apps / v1, .spec.selector và .metadata.labels không được mặc định thành .spec.template.metadata.labels nếu không được đặt. Vì vậy, chúng phải được thiết lập rõ ràng . Cũng lưu ý rằng .spec.selector là bất biến sau khi tạo Triển khai trong ứng dụng / v1.
Triển khai có thể chấm dứt các Pod có nhãn khớp với bộ chọn nếu mẫu của chúng khác với .spec.template hoặc nếu tổng số Pod đó vượt quá .spec.replicas. Nó mang đến các Pods mới với .spec.template nếu số lượng Pod ít hơn số lượng mong muốn.
Pods đã được bắt đầu một cách riêng biệt, nhưng sau đó được mang theo ô triển khai để được quản lý cùng nhau?
Nói đơn giản, Không
Lưu ý: Bạn không nên tạo các nhóm khác có nhãn khớp với bộ chọn này, bằng cách trực tiếp, bằng cách tạo một nhóm khác Deployment
hoặc bằng cách tạo một bộ điều khiển khác như a ReplicaSet
hoặc a
ReplicationController
. Nếu bạn làm như vậy, người đầu tiên Deployment
nghĩ rằng nó đã tạo ra các nhóm khác. Kubernetes
không ngăn bạn làm điều này. Nếu bạn có nhiều bộ điều khiển có bộ chọn chồng chéo, bộ điều khiển sẽ chiến đấu với nhau và sẽ không hoạt động chính xác.