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.selectorlà 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.selectorphải phù hợp .spec.template.metadata.labelshoặ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 Deploymenthoặc bằng cách tạo một bộ điều khiển khác như a ReplicaSethoặc a
ReplicationController. Nếu bạn làm như vậy, người đầu tiên Deploymentnghĩ rằng nó đã tạo ra các nhóm khác. Kuberneteskhô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.