Điểm:0

Biến URL phụ trợ không trỏ đến đúng cổng

lá cờ in

Tôi vừa triển khai các nhóm giao diện người dùng và nhóm phụ trợ và đã xảy ra sự cố với khả năng kết nối giữa chúng.

Nhóm phụ trợ được định cấu hình theo cách sau:

phiên bản api: v1
loại: Vỏ
metadata:
  tên: af-backend-pod
  nhãn:
    tên: af-backend-pod
    ứng dụng: định dạng adv
thông số kỹ thuật:
  hộp đựng:
  - tên: af-backend
    hình ảnh: localhost:5000/phụ trợ:1.2
    cổng:
    - Cảng container: 4040
    vi:
    - tên: NODE_ENV
      giá trị: "kiểm tra"

Dịch vụ của nhóm phụ trợ:

phiên bản api: v1
loại: Dịch vụ
metadata:
  tên: af-backend
  nhãn:
    tên: af-backend-service
    ứng dụng: định dạng adv
thông số kỹ thuật:
  cổng:
  - cổng: 4040
    cổng mục tiêu: 6011
  bộ chọn:
    tên: af-backend-pod
    ứng dụng: định dạng adv

Sự cố xuất hiện khi giao diện người dùng cố gắng gọi phần phụ trợ bằng tên của nó được xác định trong cấu hình nhóm:

phiên bản api: v1
loại: Vỏ
metadata:
  tên: af-frontend-pod
  nhãn:
    tên: af-frontend-pod
    ứng dụng: định dạng adv
thông số kỹ thuật:
  hộp đựng:
  - tên: af-frontend
    hình ảnh: localhost:5000/giao diện người dùng:1.1
    cổng:
    - cảng container: 80
    vi:
    - tên: REACT_APP_SETUP
      giá trị: "kiểm tra"
    - tên: REACT_APP_BACKEND_URL
      giá trị: "af-backend" # <- cái này
    - tên: REACT_APP_BACKEND_PORT
      giá trị: "6011"

Hiện tại, giao diện người dùng được hiển thị bởi dịch vụ NodePort tại cổng 30120. Ghi lỗi vào bảng điều khiển cho thấy giao diện người dùng cố gắng gọi phần phụ trợ bằng cách sử dụng URL như http://10.11.12.13:30120/ điều đó không chính xác: Tôi muốn thấy API phụ trợ tại cổng 6011, trong nội bộ.

Tôi hiểu có đúng không? Hay tôi cũng nên để dịch vụ phụ trợ có thể truy cập được từ bên ngoài?

Hoặc có thể có một cách để định dạng URL của chương trình phụ trợ, cắt bỏ cổng và thay thế bằng cổng mong muốn?

Mikołaj Głodziak avatar
lá cờ id
Bạn đã sử dụng phiên bản Kubernetes nào và bạn đã thiết lập cụm như thế nào? Bạn đã sử dụng cài đặt kim loại trần hoặc một số nhà cung cấp đám mây? Điều quan trọng là tái tạo vấn đề của bạn.
AbreQueVoy avatar
lá cờ in
Hej Mikołaj. Đó là cụm 3 nút chạy trên phiên bản máy chủ OpenStack. Nó đã được cài đặt với Kubespray; tất cả các nút chạy v1.22.2.
Mikołaj Głodziak avatar
lá cờ id
nếu tôi có thể thấy chính xác, bạn chỉ đặt một biến cho máy chủ đó. Bạn có đang sử dụng bất kỳ sự xâm nhập nào không?
AbreQueVoy avatar
lá cờ in
Không, tôi chỉ sử dụng NodePort.Và tôi cho rằng vấn đề ở đây liên quan đến thực tế là các biến React được thiết lập trong thời gian xây dựng, trong khi ở đây chúng cần thiết trong thời gian chạy.
Mikołaj Głodziak avatar
lá cờ id
Có thể mã hóa nó trong hình ảnh không?
Điểm:0
lá cờ br

Vấn đề nằm ở cấu hình sevice.spec.ports của Backend pod. Cổng mục tiêu là cổng mà dịch vụ sẽ chuyển tiếp lưu lượng. Trong trường hợp này là 4040, vì nhóm phụ trợ đang lắng nghe trên 4040. Và cổng dịch vụ phải là 6011 vì nhóm FE sẽ gọi dịch vụ trên cổng này. Không cần phải hiển thị dịch vụ phụ trợ dưới dạng NodePort. Bạn cũng có thể thử lệnh netcat từ bộ chứa FE để kiểm tra xem dịch vụ có thể truy cập được không. Lệnh: nc -v Service_IP 6011 (mong đợi phản hồi "Thành công".)

phiên bản api: v1
loại: Dịch vụ
metadata:
  tên: af-backend
  nhãn:
    tên: af-backend-service
    ứng dụng: định dạng adv
thông số kỹ thuật:
  cổng:
  - cổng: 4040 << Sai Nên là 6011; FE Pod gọi dịch vụ theo số 6011
    targetPort: 6011 << Sai Nên là 4040; cổng container phụ trợ pod 4040
  bộ chọn:
    tên: af-backend-pod
    ứng dụng: định dạng adv
AbreQueVoy avatar
lá cờ in
Cảm ơn, @Rajesh Dutta. Tôi cũng đã thay đổi `targetPort` thành 4040 và cổng này hiện đã bị lộ. Tuy nhiên, vẫn không có kết nối giữa giao diện người dùng và phụ trợ khi chúng ta nói về trang web, nhưng phần phụ trợ có thể truy cập được từ bên trong thùng chứa giao diện người dùng. Điều gì có thể đang chặn lưu lượng truy cập, giả sử rằng giao diện người dùng của trang web gọi đúng URL của phần phụ trợ?
Rajesh Dutta avatar
lá cờ br
Bạn cũng đã thay đổi trường `port` thành 6011 phải không? (1) Hãy thử thực hiện nslookup af-backend và xem liệu DNS có phân giải được trong FE hay không. (2) Hãy thử cài đặt này trong nhóm FE. Thông thường nó không bắt buộc. - tên: REACT_APP_BACKEND_URL giá trị: "af-backend.default.svc"

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.