‫Được rồi. Bài giảng này bắt đầu từ khi bài cuối
‫cùng đã kết thúc. Vì vậy, nếu bạn
‫chỉ nhảy vào cái này và bỏ qua cái cuối cùng,
‫hãy quay lại cái đó vì bạn sẽ cần Triển khai mà chúng tôi đã tạo trong cái
‫đó để bắt đầu cái này.
‫Khi tôi thực hiện một kubectl nhận được tất cả,
‫tôi sẽ thấy ở đây rằng tôi có một Triển khai có
‫một bộ bản sao gồm năm.
‫Bạn sẽ thấy năm vỏ.
‫Sau đó, bạn sẽ có dịch vụ mặc định Kubernetes, dịch
‫vụ này luôn ở đó. Sau đó là
‫dịch vụ IP cụm httpenv.
‫Tất nhiên, bạn có thể có các địa chỉ IP khác nhau và
‫các tên nhóm khác nhau. Đó là nơi chúng ta cần đến.
‫Chúng tôi có Triển khai này.
‫Chúng tôi đã tạo một địa chỉ IP bên trong cụm để những người khác
‫truy cập vào nó với tên thân thiện là httpenv vì
‫đó là tên dịch vụ.
‫Hãy tạo một cái được hiển thị bên ngoài
‫trên IP máy chủ. Điều này sẽ xảy ra, nếu bạn có
‫thể đang ở trong một trung tâm dữ liệu hoặc một nơi nào đó mà
‫bạn không có bộ cân bằng tải, bạn có thể kiểm soát bằng dịch vụ cân bằng tải, mà
‫chúng ta sẽ nói trong một phút.
‫Về cơ bản, trong trường hợp này, bạn muốn thực
‫hiện một NodePort nơi bạn nhận được các cổng ở đâu đó trong phạm
‫vi cao của cụm Kubernetes mà bạn có
‫thể sử dụng để nói chuyện từ bên ngoài vào.
‫Vì vậy, nó sẽ có thể truy cập nó từ một số
‫dịch vụ bên ngoài, phải không. Nó sẽ không ở trên cổng 80 theo mặc định.
‫NodePorts có nghĩa là các cổng cao, vì vậy bạn thường
‫đặt một thứ gì đó ở phía trước, chẳng hạn như
‫bộ cân bằng tải bên ngoài hoặc một số dịch vụ tự động sẽ
‫quản lý điều đó cho bạn. Trong trường hợp này, tôi
‫có thể thực hiện lại kubectl.
‫Nó sẽ giống như lần cuối cùng chúng tôi đã làm.
‫triển khai httpenv.
‫Đó là thứ chúng ta cần vạch trần.
‫Chúng tôi sẽ đưa vào cổng 8888 một lần nữa.
‫Tuy nhiên, chúng tôi sẽ đặt cho nó một cái tên mới
‫vì chúng tôi đã có một cái tên là httpenv.
‫Vì vậy, cái
‫này chúng ta sẽ gọi là httpenv-np không có cổng.
‫Bằng cách đó, nó sẽ hoạt động song song với IP
‫cụm đã có ở đó.
‫Sau đó, chúng tôi sẽ thay đổi loại thành NodePort.
‫Bạn sẽ nhận thấy loại NodePort đó, bởi vì loại mặc định, chúng tôi
‫có thể chỉ định theo cách thủ công nếu bạn muốn.
‫Loại mặc định là IP cụm.
‫Nếu tôi quay lại và thực hiện một kubectl get services, bạn
‫sẽ thấy một
‫cái mới ở đó có loại NodePort.
‫Hãy nói về các cổng ở bên phải.
‫Các cổng đó, khi chúng có dấu hai chấm ở giữa, ngược
‫lại với những gì bạn sẽ thấy trong Docker và Swarm.
‫Trong trường hợp này, cổng bên trái
‫là cổng bên trong cụm, bên trong chính thùng chứa đang
‫được liệt kê.
‫Sau đó, cổng bên phải là cổng trên các nút của
‫bạn tiếp xúc với thế giới bên ngoài.
‫Bạn có thể thắc mắc rằng cổng bên phải đến từ đâu.
‫Cổng đó là từ một phạm vi mặc định cho NodePorts
‫được đặt trước bên trong cụm vùng chứa
‫của bạn.
‫Đó là một phạm vi cao. Hy vọng ở đây là không có
‫xung đột, đúng. Theo mặc định, không có
‫gì khác trên hệ thống của bạn đang chạy trên các cổng đó.
‫Bởi vì thường các cổng thấp, như 8888, đủ phổ biến để chúng có thể được sử
‫dụng bởi thứ khác. Sau đó, bất kỳ
‫cổng nào trong phạm vi thực sự thấp thường chỉ
‫có thể truy cập bằng root. Cổng 1024 trở xuống.
‫Có một số điều cần lưu ý ở đây.
‫Đầu tiên là bạn sẽ thấy IP cụm.
‫Mặc dù khi chúng tôi tạo dịch vụ NodePort này,
‫chúng tôi không nói IP cụm.
‫Chúng tôi đã nói NodePort.
‫Các dịch vụ này là phụ gia.
‫Điều đó có nghĩa là nó bắt đầu với IP cụm, sau
‫đó đi đến NodePort, rồi đến dịch vụ tùy chọn của
‫bộ cân bằng tải. Mỗi người trong số họ sẽ tạo
‫các dịch vụ phía trên nó trong danh sách này.
‫Có nghĩa là khi tôi tạo NodePort, nó sẽ tạo một
‫điểm cuối IP cụm cho tôi vì đó
‫là cách nó kết nối. Nó đưa kết nối đến
‫cổng đó trên cổng cao của nút và sau
‫đó nó chuyển hướng nó đến IP cụm cho dịch vụ đó.
‫Tất nhiên, giống như hầu hết mọi thứ trong Kubernetes, tất cả điều này đều có
‫thể thay đổi và tùy chỉnh.
‫Một trong những điều bạn có thể thay đổi là phạm vi cổng.
‫Một trong số đó là bạn có thể tránh IP cụm.
‫Rất nhiều thứ bạn có thể làm, nhưng hầu hết bạn chỉ có
‫thể làm trong YAML, mà chúng ta sẽ đề cập sau.
‫Khi bạn đang thực hiện công việc tại dòng lệnh như thế này,
‫chúng tôi bị giới hạn về số lượng tùy chọn mà chúng tôi có thể sử dụng.
‫Nếu bạn vượt quá những gì các tùy chọn đó cho phép, bạn sẽ
‫cần bắt đầu thực hiện YAML. Chúng ta sẽ nói về điều đó
‫sau trong khóa học. ĐƯỢC RỒI. Nếu bạn đang sử dụng
‫Linux, NodePort này hiện có thể truy cập được trên localhost.
‫Vì vậy, bạn có thể sử dụng localhost, hoặc chính IP của máy chủ,
‫để CURL cổng này. Dù bạn có cổng nào.
‫Nó có thể sẽ không giống cổng của tôi kể
‫từ 32334 của tôi.
‫Nếu bạn đang sử dụng Docker
‫Desktop, nó sẽ cung cấp một lớp tiện
‫lợi với một thứ gọi là vpnkit vừa được tích hợp vào Docker Desktop,
‫nơi nó sẽ kết nối cái này với localhost trên máy Windows hoặc
‫Mac của bạn.
‫Tôi có thể ngồi ở đây trên máy Mac và cURL
‫localhost 32334 của mình.
‫Tôi nhận được phản hồi tương tự như thể tôi đã
‫CURL IP cụm trực tiếp. Lý do mà điều này
‫ở đây trên Docker Desktop là để bạn không phải nhảy
‫vào các nhóm đó như chúng tôi đã làm trước đó chỉ
‫để bạn có thể truy cập dịch vụ. Đây là một cách để hiển thị các
‫dịch vụ Kubernetes trên máy của bạn để bạn có thể kiểm tra mọi
‫thứ, đúng không. Vì vậy, nếu
‫bạn đang phát triển hoặc thử nghiệm bên trong Kubernetes, thì bạn có thể thực
‫hiện một NodePort và truy cập vào cổng đó, điều này sẽ hơi ngẫu
‫nhiên trên máy chủ của bạn.
‫Một lần nữa, bạn có thể chỉ định một cổng chính xác ở đó, nhưng bạn phải làm
‫điều đó trong YAML, điều này chúng ta sẽ thực hiện sau.
‫Tùy chọn khác, nếu bạn đang sử dụng Docker Desktop, là nó
‫đi kèm với dịch vụ cân bằng tải tích hợp sẵn.
‫Bạn còn nhớ tôi đã nói trước đó khi chúng ta nói
‫về bốn loại dịch vụ này, đó là bộ cân bằng tải không được tích
‫hợp sẵn, theo mặc định và cách duy nhất bạn có thể sử dụng nó
‫là thông qua một dịch vụ bên ngoài, thường là trong một dịch
‫vụ đám mây, bên phải.
‫Với Amazon, đó sẽ là ELB và ALB.
‫Với DigitalOcean, điều đó sẽ xảy ra với bộ cân bằng tải của họ.
‫Bạn sẽ cần thêm plugin đó vào Kubernetes của mình để nó hoạt động
‫với các bộ cân bằng tải bên ngoài đó.
‫Về cơ bản, API kube nói chuyện với API của họ để kiểm soát
‫bộ cân bằng tải đó.
‫Nếu bạn đang sử dụng Docker Desktop, thì bạn có thể thử lệnh này.
‫Chúng tôi sẽ gọi
‫nó là httpenv-lb cho dịch vụ này và chúng tôi sẽ thay đổi loại thành
‫bộ cân bằng tải.
‫Nếu chúng tôi thực hiện dịch vụ nhận kubectl, chúng tôi sẽ thấy ba trình
‫cân bằng tải cho Triển khai này.
‫Một lần nữa, nếu bạn đang sử dụng Docker Desktop,
‫bạn sẽ có thể thấy cả ba. Nếu bạn đang sử dụng Linux, hoặc
‫sử dụng Minikube, hoặc một cái gì đó tương tự, bạn sẽ chỉ thấy hai.
‫Mỗi bộ cân bằng tải, bởi vì về mặt kỹ thuật, nó giống
‫như một plugin hoặc dịch vụ của bên thứ ba là một API từ
‫xa, tất cả các bộ cân bằng tải sẽ có các tính năng và nội dung
‫được hỗ trợ khác nhau. Bạn có thể xem tài liệu của họ
‫để biết họ sẽ làm gì.
‫Trong trường hợp này, với Docker Desktop, tất cả những gì chúng
‫tôi làm là thông báo cho nó biết cổng 8888 là một
‫phần của Triển khai và plugin dịch vụ cân bằng
‫tải từ Docker sau đó sẽ xuất
‫bản nó trên cổng 8888.
‫Điều thú vị ở đây là đó là một cách
‫để có Kubernetes của bạn trên một cổng cụ thể
‫bên ngoài bộ mặc định, phải không.
‫Vì vậy, khi chúng tôi thực hiện NodePort, chúng tôi đã được
‫xác định hoặc bị giới hạn trong tập hợp đó trong
‫phạm vi 30000. Nếu bạn muốn làm điều
‫gì đó giống như bạn làm với Compose, hoặc Swarm, hoặc Docker chạy cục
‫bộ nơi bạn chỉ muốn chạy nó trên một cổng như 80 hoặc bất
‫cứ thứ gì, thì bây giờ bạn có thể với Docker Desktop, sử dụng
‫Kubernetes tích hợp sẵn, bạn có thể làm bộ cân bằng tải đó và chỉ cần nhập
‫vào cổng đó ở đó, và nó sẽ phản hồi ở đó.
‫Bây giờ trên Mac hoặc Windows, tôi có
‫thể nhập cURL localhost 8888 và nhận lại phản
‫hồi đó. Bạn sẽ nhận thấy
‫ở đó cho bộ cân bằng tải rằng nó vẫn có cổng khác.
‫Một lần nữa, đó là bởi vì phạm vi 32 ở
‫đó, theo tôi, ít nhất là phạm vi được xây dựng trong NodePort
‫mà nó đang tạo. Về mặt kỹ
‫thuật, hãy nhớ rằng đây là ba lớp khác nhau
‫để bộ cân bằng tải đang chấp nhận gói của tôi,
‫sau đó chuyển nó đến NodePort và sau đó NodePort
‫sẽ chuyển nó đến IP cụm. Sẽ luôn có NodePort hiển
‫thị ở đó bên cạnh bốn số 8 cho bộ cân
‫bằng tải, mặc dù đó không thực sự là cổng mà
‫bộ cân bằng tải đang sử dụng trên localhost của tôi.
‫Trước khi sang bài giảng tiếp theo, chúng ta hãy dọn dẹp
‫mọi thứ chúng ta vừa làm. Chúng tôi đã tạo ra rất nhiều thứ.
‫Các lệnh này cho bạn thấy rằng bạn có thể sử dụng lệnh
‫xóa với nhiều đối tượng cùng một lúc.
‫Chúng không nhất thiết phải là các đối tượng liên quan.
‫Trên thực tế, bạn chỉ có thể lập một danh sách lớn về
‫chúng nếu bạn muốn bằng một lệnh duy nhất.