Thông số kỹ thuật - bộ chọn - matchLabels được sử dụng trong khi tạo triển khai là gì?


18

Từ tài liệu Kubernetes :

Trường bộ chọn xác định cách Triển khai tìm thấy Pods nào cần quản lý.

Nhưng, khi tạo triển khai, tôi đã chỉ định mẫu pod là một phần của việc triển khai. Vì vậy, tại sao tôi cũng cần bộ chọn?

Có phải nó được sử dụng như các dịch vụ, trong đó các nhóm đã được bắt đầu riêng rẽ, nhưng sau đó được mang theo ô triển khai để được quản lý cùng nhau?

Câu trả lời:


8

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.


5
Vậy nó dùng để làm gì? Có vẻ như bạn phải luôn luôn làm cho bộ chọn khớp với nhãn của spec spec Có một số trường hợp hữu ích không làm như vậy?
Victor Noël

4
Không thực sự trả lời câu hỏi Tại sao? - Tại sao matchLabels tồn tại và phải khớp .spec.template.metadata.labels? Ý nghĩa của nó speclà gì , như được xác định dưới đây Deploymentvì vậy rõ ràng những gì Pods được bắt đầu cho Triển khai.
Ivan

2
Bất cứ ai va vào cuộc thảo luận này nên kiểm tra tài liệu mới nhất. Ví dụ: hiện tại, .spec.selector không phải là trường tùy chọn. Đây là một lĩnh vực bắt buộc. kubernetes.io/docs/con accept / workloads / controlers / deployment
SoftwareTheory

Cảm ơn rất nhiều về lời bình luận của bạn. Tôi nghĩ rằng trong tài liệu mới, các tác giả đã sửa tùy chọn thành bắt buộc, bởi vì trong các tài liệu cũ, trường này được cho là tùy chọn nhưng trên dòng tiếp theo, tác giả đã thêm rằng trường này phải được đặt rõ ràng :) Vì vậy, trường này cũng được yêu cầu
alexander.polomodov

@SoftwareTheory Có, nhưng nó vẫn không giải thích lý do tại sao nó được yêu cầu, vì dù sao mẫu spec Pod được định nghĩa bên dưới.
dùng168317
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.