Đăng câu trả lời wiki cộng đồng này để đặt thêm cách tiếp cận cơ bản cho câu hỏi này hơn là đưa ra giải pháp dứt khoát.
Vui lòng chỉnh sửa và mở rộng.
Bạn có thể hiển thị các ứng dụng của mình với Dịch vụ
. Có một số tùy chọn trong đó mỗi tùy chọn khác nhau theo một số cách khác:
Cụm IP
: Hiển thị Dịch vụ trên IP nội bộ của cụm. Việc chọn giá trị này làm cho Dịch vụ chỉ có thể truy cập được từ bên trong cụm. Đây là mặc định Loại dịch vụ
.
- Nút Cổng: Hiển thị Dịch vụ trên IP của mỗi Nút tại một cổng tĩnh (cổng
Nút Cổng
). Một Cụm IP
Dịch vụ mà các Nút Cổng
Các tuyến dịch vụ, được tạo tự động. Bạn sẽ có thể liên hệ với Nút Cổng
Dịch vụ, từ bên ngoài cụm, bằng cách yêu cầu <NodeIP>:<NodePort>
.
- Cân bằng tải: Hiển thị Dịch vụ ra bên ngoài bằng bộ cân bằng tải của nhà cung cấp dịch vụ đám mây.
Nút Cổng
và Cụm IP
Các dịch vụ mà bộ cân bằng tải bên ngoài định tuyến đến sẽ được tạo tự động.
- Tên bên ngoài: Ánh xạ Dịch vụ tới nội dung của
tên bên ngoài
trường (ví dụ: foo.bar.example.com
), bằng cách trả lại một CNAME
ghi lại với giá trị của nó. Không có ủy quyền của bất kỳ loại nào được thiết lập.
-- Kubernetes.io: Tài liệu: Khái niệm: Mạng dịch vụ: Dịch vụ: Dịch vụ xuất bản các loại dịch vụ
Tài liệu dành riêng cho việc hiển thị ứng dụng trên Công cụ Kubernetes của Google
có thể được tìm thấy ở đây:
Tập trung cụ thể vào một số điểm có trong câu hỏi:
Tôi có thể sử dụng dịch vụ NodePort và mất quyền kiểm soát cổng nào mà máy khách cần kết nối. Đó là một vấn đề vì máy chủ tự đăng ký với danh sách máy chủ.
Bạn có thể chỉ định Nút Cổng
cổng trong Dịch vụ
YAML (như nútPort: 32137
hoặc nútPort: 30911
).
Bạn có thể định cấu hình ứng dụng của mình để nghe trên cùng một cổng với nútPort
:
- Ứng dụng đang lắng nghe trên cổng
30000
- Dịch vụ đang sử dụng một
nútPort
với Hải cảng
:30000
(máy khách/người dùng nên kết nối với cổng này) và targetPort:30000
. Trong trường hợp đó sẽ không có thay đổi cổng.
Một lưu ý phụ!
Theo mặc định các nútPort
phạm vi cổng bị chặn bởi GCP
Bức tường lửa. Bạn sẽ cần tạo một quy tắc (hoặc bộ quy tắc) cho phép điều đó.
Tôi có thể sử dụng mạng máy chủ. Nếu thông tin của tôi là chính xác, điều đó yêu cầu các vùng chứa đặc quyền, điều này Chắc chắn là Không tốt.
Tôi sẽ khuyên bạn không nên sử dụng vùng chứa đặc quyền trừ khi có lý do chính đáng đằng sau nó. Trích dẫn các tài liệu chính thức:
Chính sách Đặc quyền được mở có chủ đích và hoàn toàn không bị hạn chế. Loại chính sách này thường nhằm vào khối lượng công việc ở cấp hệ thống và cơ sở hạ tầng được quản lý bởi người dùng có đặc quyền, đáng tin cậy.
-- Kubernetes.io: Tài liệu: Khái niệm: Bảo mật: Tiêu chuẩn bảo mật Pod: Đặc quyền
Cổng có thể được định cấu hình, miễn là tôi biết máy chủ cần chạy trên cổng nào trước khi nhóm khởi động.
Vì bạn sẽ có vô số đơn vỏ quả
(mỗi cái có một cái riêng triển khai
) bạn có thể tham số hóa từng cái. Ý tôi là bạn có thể tạo một mẫu và chỉ sửa đổi các phần trong bảng kê khai của mình (như cổng, biến env, v.v.).
Bạn có thể chuyển biến môi trường cho vỏ
để nó có thể được sử dụng như một tham số trong các lệnh của bạn. Bạn cũng có thể sửa đổi lệnh mà vỏ
đang bắt đầu với