‫Bây giờ bạn đã chạy các pod của mình, có thể một
‫lúc nào đó bạn sẽ cần để các pod đó tiếp xúc với các dịch vụ bên ngoài.
‫Điều đó có nghĩa là cho phép họ chấp nhận các kết nối, theo một cách
‫nào đó, trong cụm của bạn hoặc từ bên ngoài cụm của bạn.
‫Trong Kubernetes, chúng tôi sử dụng lệnh kubectl exposure như một
‫trong những cách để tạo một dịch vụ.
‫Chúng tôi đã đề cập đến dịch vụ một vài lần trước đây, nhưng hãy đảm bảo
‫rằng chúng tôi hiểu rõ dịch vụ là gì. Dịch vụ là một điểm
‫cuối nhất quán để những thứ khác bên trong hoặc
‫bên ngoài cụm có thể truy cập
‫vào nó.
‫Khi bạn tạo nhóm trong Kubernetes, chúng không
‫tự động nhận được tên DNS cho kết nối bên ngoài
‫với địa chỉ IP, chặt chẽ.
‫Bạn sẽ muốn làm điều đó với việc tạo một
‫dịch vụ trên nhóm hiện có đó.
‫Có nhiều cách khác nhau ngoài lệnh hiển thị này để
‫tạo một dịch vụ.
‫Hãy tập trung vào những điểm chung.
‫Điểm chung ở đây là DNS cốt lõi.
‫Nếu bạn còn nhớ, chúng tôi đã đề cập điều đó trước đó như một trong những tính năng
‫cốt lõi của máy bay điều khiển của bạn.
‫Dịch vụ đó sẽ là máy chủ DNS của bạn để phân giải tên
‫cho tất cả những thứ này.
‫Trên hết, để chọn IP và
‫cổng và cách nó thực hiện điều đó,
‫cách nó nhận được lưu lượng truy cập về cơ bản đến
‫dịch vụ của bạn là công việc của một trong bốn
‫loại dịch vụ khác nhau. Bây giờ chúng ta hãy xem xét những điều đó và sau đó
‫chúng ta sẽ đi qua một số ví dụ. Hãy bắt đầu với loại
‫dịch vụ ClusterIP, là loại mặc định.
‫Trong trường hợp này, khía cạnh quan trọng nhất là nó chỉ
‫có sẵn trong cụm.
‫Đây thực sự là về một bộ
‫nhóm Kubernetes nói chuyện với một bộ nhóm khác.
‫Điều này làm cho nó căng thẳng DNS riêng, đúng.
‫Đó sẽ là địa chỉ DNS trong mặt phẳng điều
‫khiển DNS cốt lõi. Nó sẽ lấy một địa
‫chỉ IP trong không gian địa chỉ IP ảo đó bên trong cụm.
‫Điều đó cho phép các nhóm khác của bạn đang chạy
‫trong cụm nói chuyện với dịch vụ này bằng cách sử dụng
‫cổng của dịch vụ. Nếu bạn đang chạy một ứng
‫dụng Nginx và nó đang chạy trên cổng 80 khi bạn tạo dịch vụ,
‫thì IP dịch vụ đó cũng có thể nằm trên cổng 80.
‫Điều đó giữ cho một số loại nhất quán ở đó.
‫Nếu bạn nghĩ về nó, điều này rất giống với cách bạn tạo
‫một dịch vụ trong Swarm, bây giờ các dịch vụ đó hơi khác một
‫chút trong Swarm. Họ có một
‫ý tưởng khác xung quanh họ.
‫Nhưng chúng nhất quán ít nhất khi bạn tạo một dịch vụ, nó
‫cung cấp cho bạn IP nội bộ đó trên bộ cân
‫bằng tải, nếu bạn nhớ. Nó chạy nó trên cổng mà ứng dụng đang bật.
‫Trong trường hợp này, chúng ta đang làm một điều rất tương tự,
‫nhưng chúng ta phải tạo điều này bằng lệnh hiển thị hoặc các tùy
‫chọn khác mà chúng ta sẽ nói sau.
‫Tiếp theo ở đây là NodePort, khác biệt một
‫cách tinh tế. Nó hơi khó hiểu một chút.
‫ClusterIP là mặc định và nó luôn hoạt
‫động bên trong cụm.
‫Nó không cần bất cứ điều gì đặc biệt. Nó không cần
‫bất kỳ quy tắc tường lửa nào bên ngoài cụm để
‫lưu lượng truy cập vào nó. Tuy nhiên, ClusterIP chỉ tốt trong cụm.
‫Nhớ lấy. ClusterIP, tốt trong cụm.
‫NodePort được thiết kế để một thứ gì
‫đó bên ngoài cụm có thể nói chuyện với dịch
‫vụ của bạn thông qua địa chỉ IP trên chính các nút.
‫Khi bạn tạo một NodePort, bạn sẽ nhận được một
‫cổng cao trên mỗi nút được gán cho dịch
‫vụ này.
‫Khi bạn nhận được điều đó, bạn có thể cập nhật những điều khác
‫cần biết về cổng này.
‫Cảng này sẽ là một cảng cao.
‫Ví dụ: bạn sẽ không sử dụng cổng 80 khi bạn
‫sử dụng loại này. Mấu chốt của hai điều này là
‫chúng luôn có sẵn trong bất kỳ cụm Kubernetes nào.
‫Cho dù bạn đang sử dụng giải pháp của nhà cung cấp đám mây
‫hay triển khai Kubernetes của riêng mình hoặc triển khai một giải pháp
‫đóng gói như Docker Enterprise hoặc Rancher.
‫Đây là những thứ sẽ luôn hoạt động hiệu quả.
‫Tiếp theo là loại cân bằng tải.
‫Điều này chủ yếu được sử dụng trên đám mây.
‫Ý tưởng ở đây là bạn đang điều khiển bộ cân
‫bằng tải bên ngoài thông qua dòng lệnh Kubernetes, điều này
‫khá thú vị.
‫Về cơ bản, đây là một loạt các tự động hóa.
‫Những gì bạn đang làm ở đây là ở
‫chế độ nền, khi bạn tạo bộ cân bằng tải
‫này, nó sẽ tự động tạo ClusterIP trong NodePort
‫để chúng có sẵn. Sau đó, nó sẽ nói
‫chuyện với hệ thống bên ngoài. Có thể đó là một bộ cân bằng tải AWS hoặc
‫một số nhà cung cấp đám mây khác. Về cơ bản, những thứ
‫này sẽ đến từ các nhà cung cấp cơ sở hạ tầng của bạn và họ
‫sẽ cho phép Kubernetes nói chuyện với họ thông qua một số API từ xa
‫và định cấu hình chúng cho bạn. Vì vậy, trong trường hợp có
‫thể là một bộ cân bằng tải AWS, khi bạn
‫tạo điều này, nó không chỉ tạo các NodePorts và ClusterIP đó
‫trong phần phụ trợ mà còn yêu cầu bộ cân bằng tải AWS
‫nói chuyện với NodePorts.
‫Về cơ bản, đây chỉ là tự động hóa, đúng.
‫Điều này giúp bạn tiết kiệm một bước khỏi việc phải chạy một số dòng
‫lệnh AWS hoặc giao diện web, để tự động thiết lập bộ
‫cân bằng tải đó cho bạn.
‫Hai điều tôi cần phải làm cho điều này là phải suy nghĩ
‫về nó vì điều này chỉ dành cho lưu lượng truy cập vào cụm
‫của bạn từ một nguồn bên ngoài.
‫Nó yêu cầu một nhà cung cấp cơ sở hạ tầng
‫cung cấp cho Kubernetes khả năng nói chuyện với nó từ xa.
‫Loại dịch vụ cuối cùng trong số bốn loại dịch vụ là ExternalName.
‫Điều này ít được sử dụng hơn và nó thực
‫sự không liên quan gì đến việc kiểm soát lưu lượng truy
‫cập đến các dịch vụ của bạn.
‫Đây là thông tin thêm về những thứ trong cụm của bạn cần trao đổi
‫với các dịch vụ bên ngoài.
‫Bạn muốn tạo tên DNS trong hệ thống
‫DNS cốt lõi để cụm của bạn có thể phân giải các
‫Tên bên ngoài mà bạn có thể không
‫kiểm soát bên ngoài. Một trong những lý do bạn có
‫thể sử dụng Tên bên ngoài là khi bạn
‫đang di chuyển mọi thứ. Hãy nghĩ xem bạn có một ứng dụng từ xa hay không.
‫Ứng dụng từ xa đó bên ngoài cụm Kubernetes của
‫bạn có thể đã có tên DNS rồi.
‫Nếu bạn định chuyển nói điều gì đó từ các dịch vụ
‫bên ngoài đó sang các dịch vụ nội bộ, bạn có
‫thể xem cách bạn có thể sử dụng
‫ExternalName để thay thế để kiểm soát DNS bên trong quy trình
‫làm việc Kubernetes của mình. Về cơ bản, sau đó bạn
‫có thể có một dòng lệnh Kubernetes thay vì nói, ồ tôi cần thay
‫đổi DNS bên ngoài cho một cái gì đó, vì vậy
‫tôi phải chạy một số tiện ích khác cho dịch vụ DNS đó.
‫Hoặc, thậm chí có thể là một cái gì đó thậm chí
‫không có API đằng sau nó. Có thể giống như DNS doanh nghiệp hoặc
‫một cái gì đó tương tự. Bạn có thể sử dụng
‫điều này bên trong các cụm của mình để các dịch vụ bên trong các cụm
‫của bạn bắt đầu phân giải một điểm cuối khác với điểm cuối mà chúng đã
‫có trước đó là bên ngoài. Tôi thấy rằng tôi thực sự
‫chỉ sử dụng nó khi tôi cần thay
‫đổi cách nội dung của tôi thoát ra khỏi cụm của tôi sang một số
‫dịch vụ bên ngoài, nhưng tôi không có cách kiểm soát DNS từ xa
‫của những thứ khác. Vì vậy, tôi chỉ muốn
‫làm điều đó bên trong Kubernetes và tạo một số Tên bên ngoài cho nội dung của tôi.
‫Sau đó, khi tôi muốn thay đổi động trong Kubernetes cho nội dung
‫bên trong cụm của mình, tôi có thể thực hiện điều đó khá dễ dàng mà không cần phải
‫nói chuyện với bất kỳ người nào khác.
‫Được rồi. Chúng tôi sẽ tóm tắt
‫bốn loại dịch vụ này, nhưng có một cách khác để lưu lượng truy cập
‫có thể vào bên trong cụm của bạn.
‫Đó là thông qua Ingress.
‫Chúng ta sẽ nói về điều đó sau.
‫Nó được thiết kế đặc biệt cho lưu lượng HTTP.
‫Khi chúng ta xem bài giảng đó, bạn sẽ hiểu tại sao nó hơi khác một
‫chút so với các loại dịch vụ này.