2016-07-14 26 views
5

Từ kubernetes docs:Kubernetes - giao tiếp vùng chứa trong một nhóm sử dụng tên thay vì 'localhost'?

Các ứng dụng trong một pod đều sử dụng cùng không gian tên mạng (cùng một IP và không gian cảng), và có thể vì thế “tìm” nhau và giao tiếp sử dụng localhost.

Có thể sử dụng một số tên cụ thể của vùng chứa thay vì locahost không?

Ví dụ: với docker-compose up, bạn sử dụng tên dịch vụ để liên lạc. [docs]

Vì vậy, nếu Docker-compose.yml tập tin của tôi là

version: '2' 
services: 
    web: 
    build: . 
    ports: 
     - "8000:8000" 
    srv: 
    build: . 
    ports: 
     - "3000:3000" 

Sau đó, tôi truy cập srv từ bên trong bằng cách gọi webhttp://srv:3000/, khônghttp://localhost:3000

Làm thế nào tôi có thể đạt được cùng hành vi trong kubernetes? Bất kỳ cách nào để chỉ định tên để sử dụng trong cấu hình yaml của nhóm?

Trả lời

9

localhost chỉ là tên cho thiết bị lặp mạng (thường là 127.0.0.1 cho IPv4 và ::1 cho IPv6). Thông tin này thường được chỉ định trong tệp /etc/hosts của bạn.

Vỏ có IP riêng, vì vậy mỗi vùng chứa bên trong chia sẻ IP đó. Nếu các thùng chứa này phải độc lập (nghĩa là không cần phải được thu thập), chúng phải nằm trong nhóm riêng của chúng. Sau đó, bạn có thể xác định service cho mỗi cái cho phép tra cứu DNS dưới dạng "$ SERVICENAME" từ nhóm trong cùng một không gian tên hoặc "$ SERVICENAME. $ NAMESPACE" từ nhóm trong các không gian tên khác nhau.

+0

nhưng tôi không thể thay đổi để '/ etc/hosts' của một nhóm theo cách thủ công vì máy chủ có thể đến và đi. Kể từ khi các container thuộc về nhau tôi không thể làm cho họ một dịch vụ. Có cách nào quanh đây không? – Jatin

1

docker-compose triển khai các vùng chứa riêng lẻ, liên kết chúng với nhau để chúng biết tên và IP của nhau.

a Pod trong Kubernetes tương tự, nhưng đây không phải là mục đích của Pod để giữ nhiều dịch vụ bên ngoài và liên kết chúng với nhau.

Pod là đối với các vùng chứa phải chạy trên cùng một máy chủ và chỉ tương tác với nhau. Các container giao tiếp nội bộ thông qua localhost.

Hầu hết Pods thực ra là một vùng chứa duy nhất.

A Pod giao tiếp với bên ngoài bằng cách sử dụng Services. Về bản chất một Pod xuất hiện như thể nó chỉ là một container.

dưới mui xe, một Pod có ít nhất 2 vùng chứa: vùng chứa pause quản lý IP của Pod và sau đó là vùng chứa đính kèm của bạn. Điều này cho phép thùng chứa của bạn bị sập, khởi động lại và được liên kết lại trong Pod mà không thay đổi IP, cho phép quản lý các sự cố vùng chứa mà không liên quan đến bộ lập lịch và đảm bảo Pod nằm trên một nút duy nhất trong suốt thời gian tồn tại của nó.

Nếu các thùng chứa chúng tôi được lên lịch lại mỗi khi chúng gặp sự cố, chúng có thể sẽ được cập nhật trên một máy chủ khác, định tuyến sẽ phải được cập nhật ...

Các vấn đề liên quan