Tôi trở nên quen thuộc hơn với Kubernetes vào ban ngày, nhưng tôi vẫn ở mức cơ bản. Tôi cũng không phải là một anh chàng mạng.Có nghĩa là gì đối với Dịch vụ thuộc loại NodePort và có cả cổng và targetPort được chỉ định?
Tôi nhìn chằm chằm vào đoạn mã sau đây của một định nghĩa dịch vụ, và tôi không thể hình thành nên bức tranh ngay trong tâm trí của tôi về những gì đang được tuyên bố:
spec:
type: NodePort
ports:
- port: 27018
targetPort: 27017
protocol: TCP
Tham chiếu ServicePort documentation, mà đọc một phần:
nodePort The port on each node on which this service is exposed when type=NodePort or LoadBalancer. Usually
integer assigned by the system. If specified, it will be allocated to the service if unused or else creation of the
service will fail. Default is to auto-allocate a port if the ServiceType of this Service requires one. More info:
http://kubernetes.io/docs/user-guide/services#type--nodeport
port The port that will be exposed by this service.
integer
targetPort Number or name of the port to access on the pods targeted by the service. Number must be in the range 1
IntOrString to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the
target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map).
This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field.
More info: http://kubernetes.io/docs/user-guide/services#defining-a-service
sự hiểu biết của tôi là cổng mà một khách hàng bên ngoài của cụm "sẽ thấy" sẽ là động gán một trong khoảng 30000
-32767
, theo quy định in the documentation. Điều này sẽ, sử dụng một số ma thuật đen mà tôi chưa hiểu, chảy vào targetPort
trên một nút nhất định (27017
trong trường hợp này).
Vì vậy, port
được sử dụng cho mục đích gì?
Cảm ơn bạn. Vì vậy, 'nodePort' là _not_ một cổng mà Dịch vụ lắng nghe? Nó thay vào đó là một cổng được mở trên các nút lưu trữ các Pods mà Mặt trận dịch vụ? –
'nodePort' là duy nhất, do đó, 2 dịch vụ khác nhau không thể có cùng một' nodePort' được gán. Khi được khai báo, chủ k8s dự trữ 'nodePort' cho dịch vụ đó. 'nodePort' sau đó được mở trên nút ** EVERY ** (chủ và công nhân) - cũng là các nút không chạy một nhóm dịch vụ đó - [k8s iptables] (https://kubernetes.io/docs/user-guide)/services/# virtual-ips-and-service-proxy) ma thuật sẽ chăm sóc định tuyến. Bằng cách đó bạn có thể thực hiện yêu cầu dịch vụ của bạn từ bên ngoài cụm k8 của bạn tới bất kỳ nút nào trên nút 'nodePort' mà không lo lắng liệu một nhóm có được lên lịch biểu hay không. – fishi
Từ kênh # kubernetes-users Slack: "các nút' nodePort' đến dịch vụ, lần lượt chuyển đến pod/nếu bạn nhấn dịch vụ trực tiếp thì bước 'nodePort' bị bỏ qua/'định tuyến ma thuật' được xử lý bởi 'kube-proxy'". Điều này dẫn tôi đến nói (sử dụng ký hiệu đã phát minh): "' nodePort' -> 'port' ->' targetPort', không phải 'nodePort' ->' targetPort' && 'port' ->' targetPort' ". –