Elastic Kubernetes Service (EKS) là dịch vụ Kubernetes được quản lý và lưu trữ trên AWS.
Lý do chính để sử dụng EKS là để loại bỏ gánh nặng quản lý các pod, node, v.v. Việc chạy Kubernetes trong AWS hiện nay đòi hỏi rất nhiều chuyên môn kỹ thuật và thường nằm ngoài khả năng của nhiều tổ chức. Với EKS, cơ sở hạ tầng cần thiết được quản lý bởi nhóm "nội bộ" của Amazon, giúp người dùng có một công cụ Kubernetes được quản lý hoàn toàn có thể sử dụng thông qua API hoặc công cụ kubectl tiêu chuẩn.
EKS sẽ hỗ trợ tất cả các tính năng của Kubernetes, bao gồm không gian tên, cài đặt bảo mật, hạn ngạch tài nguyên & dung sai, chiến lược triển khai, trình tự động mở rộng quy mô, v.v. EKS sẽ cho phép bạn chạy mặt phẳng điều khiển của riêng mình, nhưng cũng tích hợp với AWS IAM để bạn có thể duy trì quyền kiểm soát truy cập của riêng mình vào API.
EKS được xây dựng trên giải pháp "Kubernetes—as-a-Service" hiện có của Amazon có tên là Elastic Container Service for Kubernetes (EKS) là dịch vụ do AWS quản lý giúp đơn giản hóa việc triển khai, quản lý và vận hành các cụm Kubernetes trên AWS Cloud.
Nếu bạn đang chạy Kubernetes trên AWS, bạn có trách nhiệm quản lý mặt phẳng điều khiển (tức là các nút chính và nút công nhân). Bạn cũng phải đảm bảo rằng api-server có tính khả dụng cao và có khả năng chịu lỗi, v.v.
EKS đã giúp bạn giải quyết gánh nặng quản lý mặt phẳng điều khiển, bằng cách đó, giờ đây bạn có thể tập trung vào việc chạy khối lượng công việc Kubernetes của mình. Nó thường được sử dụng cho các ứng dụng không trạng thái như dịch vụ vi mô vì mặt phẳng điều khiển được quản lý bởi Amazon (EKS).
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách tạo cụm Kubernetes trên AWS bằng EKS. Bạn sẽ tìm hiểu cách tạo người dùng quản trị cho cụm Kubernetes của mình. Bạn cũng sẽ tìm hiểu cách triển khai ứng dụng vào cụm. Cuối cùng, bạn sẽ kiểm tra cụm của mình để đảm bảo mọi thứ hoạt động bình thường.
Bắt đầu thôi!
1. Đăng nhập vào bảng điều khiển AWS của bạn và đi đến IAM. Nhấp vào Người dùng > Thêm người dùng.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22329%22%3E%3C/svg%3E
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22123%22%3E%3C/svg%3E
2. Trên màn hình tiếp theo, cung cấp tên người dùng như admin. ChọnKhóa truy cập - Truy cập theo chương trình. Nhấp vào vào Tiếp theo: Quyền
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22564%22%3E%3C/svg%3E
3.Trên màn hình tiếp theo, chọn Gắn trực tiếp các chính sách hiện có. Nhấp vào AdministratorAccess. Nhấp vào Tiếp theo: Thẻ.
Chính sách AdministratorAccess là chính sách tích hợp sẵn với Amazon Elastic Container Service (ECS). Nó cung cấp quyền truy cập đầy đủ vào tất cả các tài nguyên ECS và tất cả các hành động trong bảng điều khiển ECS. Lợi ích chính của chính sách này là chúng ta không cần phải tạo hoặc quản lý người dùng bổ sung có các đặc quyền bổ sung để truy cập dịch vụ AWS EKS.
Người dùng quản trị của bạn có thể tạo các phiên bản EC2, ngăn xếp CloudFormation, thùng S3, v.v. Bạn nên rất cẩn thận về việc cấp quyền truy cập này cho ai.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22557%22%3E%3C/svg%3E
3.Trên màn hình tiếp theo, nhấp vào Tiếp theo: Xem lại
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22607%22%3E%3C/svg%3E
4.Trên màn hình tiếp theo, nhấp vào Tạo người dùng.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22572%22%3E%3C/svg%3E
5. Trên màn hình tiếp theo, bạn sẽ nhận được thông báo Thành công màu xanh lá cây. ID khóa truy cập và
Khóa truy cập bí mật cũng được hiển thị trên màn hình này. Bạn sẽ cần những khóa này để định cấu hình công cụ CLI của mình sau này, vì vậy hãy ghi lại những khóa này ở nơi khác.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22346%22%3E%3C/svg%3E
1. Nhập EC2 vào hộp tìm kiếm. Nhấp vào liên kết EC2. Nhấp vào Khởi chạy phiên bản.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22462%22%3E%3C/svg%3E
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22350%22%3E%3C/svg%3E
2. Chọn Amazon Linux 2 AMI (HVM) cho phiên bản EC2 của bạn. Chúng tôi sẽ sử dụng Amazon Linux AMI này để dễ dàng cài đặt Kubernetes và các công cụ cần thiết khác sau này, chẳng hạn như: kubectl!, docker, v.v.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22235%22%3E%3C/svg%3E
3. Trên màn hình tiếp theo, nhấp vào Tiếp theo: Cấu hình phiên bản Chi tiết.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22326%22%3E%3C/svg%3E
3. Trên màn hình tiếp theo, bật tùy chọn Tự động gán IP công khai. Vì máy chủ nằm trong mạng con riêng nên không thể truy cập được từ bên ngoài. Bạn có thể cấp cho máy chủ của mình địa chỉ IP công khai bằng cách liên kết địa chỉ IP đàn hồi với phiên bản. Bằng cách này, EC2 và ELK của bạn có thể truy cập được. Nhấp vào Tiếp theo: Lưu trữ.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22328%22%3E%3C/svg%3E
3. Trên màn hình tiếp theo, nhấp vào Tiếp theo: Thêm thẻ > Tiếp theo: Cấu hình Nhóm bảo mật.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22339%22%3E%3C/svg%3E
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22318%22%3E%3C/svg%3E
4. Trên màn hình tiếp theo, nhấp vào Xem lại và khởi chạy>Khởi chạy.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22320%22%3E%3C/svg%3E
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22324%22%3E%3C/svg%3E
5. Một hộp thoại cặp khóa sẽ xuất hiện. Nhấn Tạo cặp khóa mới. Đặt tên cho cặp khóa, sau đó tải xuống và lưu tệp .pem ở một vị trí an toàn. Nhấp vào Khởi chạy phiên bản.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22687%22%20height=%22546%22%3E%3C/svg%3E
1. Điều hướng đến bảng điều khiển EC2 của bạn. Bạn sẽ thấy phiên bản EC2 mới của mình đang chạy. Nếu không, phiên bản của bạn có thể khởi động lần đầu tiên, hãy đợi 5 phút và thử lại. Khi phiên bản của bạn đang chạy, hãy nhấp vào Kết nối.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22114%22%3E%3C/svg%3E
2. Trên màn hình tiếp theo, nhấp vào Kết nối.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22570%22%3E%3C/svg%3E
Bạn sẽ được đưa đến phiên SSH tương tác trên trình duyệt của mình. SSH cho phép bạn kết nối và vận hành an toàn trên máy chủ từ xa. Phiên SSH tương tác sẽ cho phép chúng ta cài đặt các công cụ dòng lệnh cho EKS và Kubernetes trực tiếp vào phiên bản EC2 của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22113%22%3E%3C/svg%3E
Sau khi đăng nhập vào phiên SSH, điều đầu tiên bạn cần làm là kiểm tra phiên bản aws-cli của mình. Điều này nhằm đảm bảo rằng bạn đang sử dụng phiên bản AWS CLI mới nhất. AWS CLI được sử dụng để định cấu hình, quản lý và làm việc với cụm của bạn.
Nếu phiên bản của bạn đã lỗi thời, bạn có thể gặp một số vấn đề và lỗi trong quá trình tạo cụm. Nếu phiên bản của bạn thấp hơn 2.0, thì bạn sẽ cần phải nâng cấp.
3.Chạy lệnh sau để kiểm tra phiên bản CLI của bạn.
Như bạn có thể thấy trong kết quả đầu ra bên dưới, chúng tôi đang chạy phiên bản 1.18.147 của aws-cli, phiên bản này đã rất lỗi thời. Hãy nâng cấp CLI lên phiên bản mới nhất hiện có, là v2+ tại thời điểm viết bài này.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2282%22%3E%3C/svg%3E
4. Chạy lệnh bên dưới để tải xuống phiên bản mới nhất hiện có của AWS CLI vào phiên bản EC2 của bạn. curl sẽ tải xuống tệp của bạn từ url đã cho, -o sẽ đặt tên theo ý bạn và "awscli-exe-linux-x86_64.zip" là tệp sẽ được tải xuống
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2287%22%3E%3C/svg%3E
5.Một lần khi quá trình tải xuống hoàn tất, hãy chạy lệnh bên dưới để giải nén nội dung của tệp đã tải xuống vào thư mục hiện tại.
6. Tiếp theo, hãy chạy lệnh which aws để thiết lập liên kết của bạn cho phiên bản AWS CLI mới nhất. Lệnh này sẽ cho bạn biết nó nằm ở đâu trong PATH của môi trường, để bạn có thể chạy nó từ bất kỳ thư mục nào.
Như bạn có thể thấy trong đầu ra bên dưới, AWS CLI lỗi thời nằm tại /usr/bin/aws.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2271%22%3E%3C/svg%3E
7. Bây giờ bạn cần cấu hình aws-cli của mình bằng cách chạy lệnh cập nhật với một số tham số. Tham số đầu tiên ./aws/install sẽ giúp chúng ta cài đặt AWS CLI vào thư mục hiện tại. Tham số thứ hai --bin-dir cho biết AWS CLI sẽ nằm ở đâu trong PATH của môi trường của bạn và tham số thứ ba --install-dir là đường dẫn tương đối đến bin-dir. Lệnh này sẽ đảm bảo rằng tất cả các đường dẫn của bạn đều được cập nhật.
8. Chạy lại lệnh aws --version để đảm bảo rằng bạn đang sử dụng phiên bản mới nhất.
Bạn sẽ thấy phiên bản AWS CLI hiện đang được cài đặt. Như bạn có thể thấy trong đầu ra bên dưới, chúng tôi hiện đang sử dụng v2.4.7 của AWS CLI. Đây là phiên bản mới nhất và sẽ không gây ra bất kỳ vấn đề nào khi cấu hình các bước tiếp theo.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2242%22%3E%3C/svg%3E
9. Bây giờ môi trường của bạn đã được cấu hình đúng cách, đã đến lúc bạn cấu hình tài khoản AWS nào mà bạn muốn giao tiếp thông qua AWS CLI. Chạy lệnh sau để liệt kê các biến môi trường tài khoản hiện được cấu hình của bạn cùng với bí danh mà bạn muốn sử dụng cùng với nó.
Điều này sẽ hiển thị cho bạn tất cả các biến môi trường tài khoản AWS hiện được cấu hình. Bạn sẽ thấy một cái gì đó như thế này trong đầu ra bên dưới. Bạn cần thiết lập một số tham số cấu hình để AWS CLI có thể giao tiếp với các tài khoản cần thiết của bạn. Chạy lệnh bên dưới, lệnh này sẽ đưa bạn qua trình hướng dẫn cấu hình để thiết lập tài khoản AWS của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2298%22%3E%3C/svg%3E
Bây giờ bạn đã thiết lập xong các công cụ AWS CLI của mình. Đã đến lúc cấu hình công cụ Kubernetes CLI có tên là kubectl trong môi trường của bạn để bạn có thể tương tác với cụm EKS của mình.
Kubectl là giao diện dòng lệnh cho Kubernetes. Với Kubectl, bạn có thể quản lý các ứng dụng đang chạy trên cụm Kubernetes. Kubectl không được cài đặt theo mặc định trên các hệ thống Linux và MacOS. Bạn có thể cài đặt Kubectl trên các hệ thống khác bằng cách làm theo hướng dẫn trên trang web Kubernetes.
10. Chạy lệnh bên dưới để tải xuống tệp nhị phân kubectl. Tệp nhị phân là tệp máy tính có phần mở rộng ".bin", chỉ có thể thực thi trên một số loại máy tính nhất định. Đây là cách dễ dàng để các loại máy tính khác nhau chia sẻ tệp. Chúng tôi sử dụng tệp nhị phân kubectl vì tệp nhị phân kubectl không phụ thuộc vào nền tảng. Nó sẽ hoạt động trên bất kỳ hệ thống nào có thể chạy hệ điều hành giống Unix, bao gồm Linux và Mac OS.
11. Chạy lệnh chmod bên dưới để thực thi tệp nhị phân kubectl. Lệnh chmod là lệnh Unix và Linux được sử dụng để thay đổi quyền truy cập tệp hoặc thư mục. Lệnh chmod của Linux sử dụng hệ thống số bát phân để chỉ định quyền cho từng người dùng. Kubectl hiện có thể được sử dụng trên máy cục bộ của bạn.
12. Chạy lệnh bên dưới để tạo thư mục kubectl trong thư mục $HOME/bin của bạn và sao chép nhị phân kubectl vào đó. Lệnh mkdir -p $HOME/bin tạo một thư mục con bin bên trong thư mục home của bạn. Lệnh mkdir được sử dụng để tạo các thư mục hoặc thư mục mới. Tùy chọn -p yêu cầu lệnh mkdir tự động tạo bất kỳ thư mục cha cần thiết nào cho thư mục mới. $HOME/bin là biến môi trường lưu trữ đường dẫn thư mục home của bạn. Mọi người dùng Linux đều có thư mục $HOME/bin trong hệ thống tệp của họ. Cấu trúc && được gọi là toán tử AND logic. Nó được sử dụng để nhóm các lệnh lại với nhau để có thể thực thi nhiều lệnh cùng một lúc. Cấu trúc && không cần thiết để lệnh này hoạt động, nhưng nó ở đó như một phương pháp hay nhất.
Lệnh cp ./kubectl $HOME/bin/kubectl sao chép tệp nhị phân kubectl cục bộ vào thư mục kubectl của bạn và đổi tên tệp thành kubectl. Cuối cùng, lệnh export thực hiện những gì nó nói - nó xuất một biến môi trường vào bộ nhớ của shell để bất kỳ chương trình nào chạy từ shell này có thể sử dụng biến đó. Trong trường hợp của chúng ta, chúng ta cần cho kubectl biết thư mục kubectl của chúng ta ở đâu để nó có thể tìm thấy tệp nhị phân kubectl.
13. Chạy lệnh kubectl version bên dưới để xác minh kubectl đã được cài đặt đúng cách. Lệnh kubectl version --short --client sẽ xuất ra phiên bản rút gọn của phiên bản kubectl trong phản hồi Kubernetes REST API được định dạng tốt, dễ đọc đối với con người. Tùy chọn --client cho phép kubectl in phiên bản được định dạng của phản hồi REST API của Kubernetes, nhất quán giữa các phiên bản.
Tùy chọn --short yêu cầu kubectl cung cấp thông tin cơ bản ở dạng nhỏ gọn với một chữ số thập phân cho số thực và định dạng thời gian viết tắt giống như --format. Bạn sẽ thấy đầu ra như bên dưới. Đầu ra này cho chúng ta biết rằng chúng ta đã cài đặt kubectl thành công và đang sử dụng phiên bản chính xác.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2285%22%3E%3C/svg%3E
Điều cuối cùng bạn cần làm trong phần này là cấu hình công cụ cli eksctl để sử dụng cụm Amazon EKS của bạn. Công cụ cli eksctl là giao diện dòng lệnh có thể quản lý cụm Amazon EKS. Nó có thể tạo thông tin xác thực cụm, cập nhật thông số cụm, tạo hoặc xóa các nút công nhân và thực hiện nhiều tác vụ khác.
14. Chạy các lệnh sau để cài đặt công cụ cli eksctl và xác minh phiên bản của nó.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22671%22%20height=%2266%22%3E%3C/svg%3E
1. Chạy lệnh eksctl create cluster bên dưới để cung cấp một cụm có tên dev trong vùng us-east-1 với một nút master và ba nút core.
Lệnh eksctl create cluster tạo một Cụm EKS trong vùng us-east-1 bằng cách sử dụng các mặc định do Amazon đề xuất cho cấu hình cụ thể này và truyền tất cả các đối số trong dấu ngoặc kép ( " ) hoặc dưới dạng biến ( ${ } ) cho phù hợp.
Tham số name được sử dụng để xác định tên của Cụm EKS này và nó chỉ là một nhãn thân thiện để bạn thuận tiện. version là phiên bản bạn muốn cụm sử dụng, đối với ví dụ này, chúng tôi sẽ sử dụng Kubernetes v1.21.2 nhưng bạn có thể tự do khám phá cũng như các lựa chọn khác.
nodegroup-name là tên của một nhóm nút mà cụm này sẽ sử dụng để quản lý các nút worker. Trong ví dụ này, bạn sẽ giữ cho nó đơn giản và chỉ sử dụng standard-workers, nghĩa là các nút worker của bạn sẽ có một vCPU và 3GB bộ nhớ theo mặc định.
nodes là tổng số nút worker lõi mà bạn muốn có trong cụm của mình. Trong ví dụ này, ba nút được yêu cầu. nodes-min và nodes-max kiểm soát số lượng nút tối thiểu và tối đa được phép trong cụm của bạn. Trong ví dụ này, ít nhất một nhưng không quá bốn nút worker sẽ được tạo.
2. Bạn có thể điều hướng đến bảng điều khiển CloudFormation của mình để theo dõi tiến trình cung cấp.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22373%22%3E%3C/svg%3E
Như hiển thị bên dưới, bạn có thể thấy ngăn xếp dev của mình đang được tạo.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22172%22%3E%3C/svg%3E
3. Nhấp vào siêu liên kết ngăn xếp phát triển > Sự kiện. Bạn sẽ thấy danh sách các sự kiện liên quan đến quy trình tạo. Đợi quy trình cung cấp hoàn tất - quá trình này có thể mất tới 15 phút tùy thuộc vào hoàn cảnh cụ thể của bạn - và kiểm tra trạng thái của ngăn xếp trong bảng điều khiển CloudFormation.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22319%22%3E%3C/svg%3E
4. Sau khi bạn đợi ngăn xếp hoàn tất việc cung cấp, hãy điều hướng đến bảng điều khiển CloudFormation của bạn, bạn sẽ thấy trạng thái ngăn xếp dev của mình là CREATE_COMPLETE.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22136%22%3E%3C/svg%3E
Bây giờ, hãy điều hướng đến bảng điều khiển EC2 của bạn. Bạn sẽ thấy một nút chính và ba nút lõi trong Bảng điều khiển EC2. Đầu ra này xác nhận rằng bạn đã thiết lập cụm EKS thành công.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22139%22%3E%3C/svg%3E
5. Chạy lệnh eksctl bên dưới để lấy thông tin chi tiết về cụm dev, chẳng hạn như cluster-ID và vùng.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2292%22%3E%3C/svg%3E
6. Chạy lệnh aws eks update bên dưới để lấy thông tin xác thực của nút làm việc từ xa. Lệnh này phải được thực hiện trên bất kỳ máy tính nào bạn muốn kết nối với cụm. Nó tải xuống thông tin xác thực cho kubectl của bạn để truy cập EKS Kubernetes Cluster từ xa mà không cần sử dụng khóa truy cập AWS Access.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2244%22%3E%3C/svg%3E
1. Chạy lệnh bên dưới để cài đặt giton hệ thống của bạn. Bạn sẽ cần git để sao chép mã máy chủ web nginx từ GitHub.
2. Chạy lệnh git clone bên dưới để sao chép mã máy chủ web nginx từ github vào thư mục hiện tại của bạn.
3. Chạy lệnh cd htf-elk để thay đổi thư mục làm việc thành thư mục tệp cấu hình nginx.
4. Chạy lệnh ls để liệt kê các tệp trong thư mục hiện tại.
Bạn sẽ thấy các tệp sau có trong thư mục nginx của mình.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2234%22%3E%3C/svg%3E
5. Chạy lệnh cat bên dưới để mở tệp nginx-deployment.yaml và bạn sẽ thấy các nội dung sau có trong tệp đó.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22232%22%3E%3C/svg%3E
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22220%22%3E%3C/svg%3E
7. Chạy lệnh kubectl apply bên dưới để tạo dịch vụ nginx trong Kubernetes Cluster của bạn. Sẽ mất vài phút để cụm EKS cung cấp ELB cho dịch vụ này.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2248%22%3E%3C/svg%3E
8. Chạy dịch vụ kubectl get bên dưới để biết thông tin chi tiết về dịch vụ nginx mà bạn vừa tạo.
Bạn sẽ nhận được kết quả sau. ClusterIP là IP kubernetes nội bộ được gán cho dịch vụ này. Tên LoadBalancer ELB là mã định danh duy nhất cho dịch vụ này. Nó sẽ tự động tạo một ELB trên AWS và cung cấp điểm cuối công khai cho dịch vụ này mà các dịch vụ bạn chọn như trình duyệt web (Tên miền) hoặc máy khách API có thể truy cập. Có thể truy cập thông qua địa chỉ IP do bạn lựa chọn.
Load Balancer ELB có tên a6f8c3cf0fe3a468d8828db6059ef05e-953361268.us-east-1.elb.amazonaws.com có cổng 32406, cổng này sẽ được ánh xạ tới cổng container 80. Ghi lại tên máy chủ DNS của load balancer ELB từ đầu ra; bạn sẽ cần tên này để truy cập dịch vụ sau.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2240%22%3E%3C/svg%3E
9. Chạy lệnh kubectl apply bên dưới để áp dụng triển khai cho cụm của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2226%22%3E%3C/svg%3E
10. Chạy lệnh kubectl get deployment để lấy thông tin chi tiết về triển khai nginx mà bạn vừa tạo.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2238%22%3E%3C/svg%3E
11. Chạy lệnh bên dưới để truy cập ứng dụng nginx của bạn thông qua bộ cân bằng tải. Bạn sẽ thấy trang chào mừng từ nginx trong terminal/console của mình, xác nhận rằng ứng dụng nginx của bạn đang hoạt động như mong đợi. Thay thế <LOAD_BALANCER_DNS_HOSTNAME>bằng tên máy chủ DNS của bộ cân bằng tải mà bạn đã ghi chú ở trên.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22252%22%3E%3C/svg%3E
12. Bạn cũng có thể truy cập ứng dụng nginx của mình thông qua trình duyệt bằng cách sao chép và dán tên máy chủ DNS của bộ cân bằng tải vào trình duyệt.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22245%22%3E%3C/svg%3E
Kubernetes hỗ trợ triển khai nhiều nút bằng cách sử dụng các bộ điều khiển đặc biệt hoạt động song song để xây dựng và quản lý các pod hoặc dịch vụ được sao chép. Một số bộ điều khiển này là Deployments, ReplicationController, Job và DaemonSet.
Bộ điều khiển triển khai được sử dụng để kiểm soát sao chép trên pod hoặc cấp dịch vụ. Khi pod của bạn hết tài nguyên, nó sẽ xóa tất cả pod của bộ điều khiển sao chép đó (trừ pod đang chạy trên nút chính) và tạo các bản sao mới của pod này. Điều này sẽ giúp bạn có thời gian hoạt động rất cao trên các ứng dụng của mình.
1.Điều hướng đến bảng điều khiển EC2 của bạn và dừng cả ba nút công nhân.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22158%22%3E%3C/svg%3E
2. Chạy lệnh bên dưới để kiểm tra trạng thái của các pod của bạn. Bạn sẽ nhận được các trạng thái khác nhau: Đang kết thúc, Đang chạy và Đang chờ cho tất cả các pod của bạn. Bởi vì khi bạn dừng tất cả các nút worker, EKS sẽ cố gắng khởi động lại tất cả các nút worker và pod một lần nữa. Bạn cũng có thể thấy một số nút mới, có thể xác định theo độ tuổi của chúng (50).
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22126%22%3E%3C/svg%3E
Phải mất một thời gian để khởi động phiên bản EC2 và các pod mới. Khi tất cả các nút công nhân được khởi động, bạn sẽ thấy tất cả các phiên bản EC2 mới trở lại trạng thái Đang chạy.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22180%22%3E%3C/svg%3E
3. Chạy lại dịch vụ kubectl get. Bạn có thể thấy ESK sẽ tạo một dịch vụ nginx mới và một tên DNS mới cho bộ cân bằng tải của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2299%22%3E%3C/svg%3E
Sao chép và dánDNS mới vào trình duyệt của bạn. Bạn sẽ nhận được lời chào mừng từ trang Nginx một lần nữa. Đầu ra này xác nhận rằng HA của bạn hoạt động như mong đợi.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22197%22%3E%3C/svg%3E
Lý do chính để sử dụng EKS là để loại bỏ gánh nặng quản lý các pod, node, v.v. Việc chạy Kubernetes trong AWS hiện nay đòi hỏi rất nhiều chuyên môn kỹ thuật và thường nằm ngoài khả năng của nhiều tổ chức. Với EKS, cơ sở hạ tầng cần thiết được quản lý bởi nhóm "nội bộ" của Amazon, giúp người dùng có một công cụ Kubernetes được quản lý hoàn toàn có thể sử dụng thông qua API hoặc công cụ kubectl tiêu chuẩn.
EKS sẽ hỗ trợ tất cả các tính năng của Kubernetes, bao gồm không gian tên, cài đặt bảo mật, hạn ngạch tài nguyên & dung sai, chiến lược triển khai, trình tự động mở rộng quy mô, v.v. EKS sẽ cho phép bạn chạy mặt phẳng điều khiển của riêng mình, nhưng cũng tích hợp với AWS IAM để bạn có thể duy trì quyền kiểm soát truy cập của riêng mình vào API.
EKS được xây dựng trên giải pháp "Kubernetes—as-a-Service" hiện có của Amazon có tên là Elastic Container Service for Kubernetes (EKS) là dịch vụ do AWS quản lý giúp đơn giản hóa việc triển khai, quản lý và vận hành các cụm Kubernetes trên AWS Cloud.
Nếu bạn đang chạy Kubernetes trên AWS, bạn có trách nhiệm quản lý mặt phẳng điều khiển (tức là các nút chính và nút công nhân). Bạn cũng phải đảm bảo rằng api-server có tính khả dụng cao và có khả năng chịu lỗi, v.v.
EKS đã giúp bạn giải quyết gánh nặng quản lý mặt phẳng điều khiển, bằng cách đó, giờ đây bạn có thể tập trung vào việc chạy khối lượng công việc Kubernetes của mình. Nó thường được sử dụng cho các ứng dụng không trạng thái như dịch vụ vi mô vì mặt phẳng điều khiển được quản lý bởi Amazon (EKS).
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách tạo cụm Kubernetes trên AWS bằng EKS. Bạn sẽ tìm hiểu cách tạo người dùng quản trị cho cụm Kubernetes của mình. Bạn cũng sẽ tìm hiểu cách triển khai ứng dụng vào cụm. Cuối cùng, bạn sẽ kiểm tra cụm của mình để đảm bảo mọi thứ hoạt động bình thường.
Bắt đầu thôi!
Điều kiện tiên quyết
- Tài khoản AWS.
- Bài viết này giả định rằng bạn đã quen thuộc với Kubernetes và AWS. Nếu chưa, vui lòng dành thời gian để xem qua tài liệu về cả hai trước khi bắt đầu hướng dẫn này.
Tạo người dùng quản trị có quyền
Hãy bắt đầu bằng cách tạo người dùng quản trị cho cụm của bạn.1. Đăng nhập vào bảng điều khiển AWS của bạn và đi đến IAM. Nhấp vào Người dùng > Thêm người dùng.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22329%22%3E%3C/svg%3E
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22123%22%3E%3C/svg%3E
2. Trên màn hình tiếp theo, cung cấp tên người dùng như admin. ChọnKhóa truy cập - Truy cập theo chương trình. Nhấp vào vào Tiếp theo: Quyền
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22564%22%3E%3C/svg%3E
3.Trên màn hình tiếp theo, chọn Gắn trực tiếp các chính sách hiện có. Nhấp vào AdministratorAccess. Nhấp vào Tiếp theo: Thẻ.
Chính sách AdministratorAccess là chính sách tích hợp sẵn với Amazon Elastic Container Service (ECS). Nó cung cấp quyền truy cập đầy đủ vào tất cả các tài nguyên ECS và tất cả các hành động trong bảng điều khiển ECS. Lợi ích chính của chính sách này là chúng ta không cần phải tạo hoặc quản lý người dùng bổ sung có các đặc quyền bổ sung để truy cập dịch vụ AWS EKS.
Người dùng quản trị của bạn có thể tạo các phiên bản EC2, ngăn xếp CloudFormation, thùng S3, v.v. Bạn nên rất cẩn thận về việc cấp quyền truy cập này cho ai.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22557%22%3E%3C/svg%3E
3.Trên màn hình tiếp theo, nhấp vào Tiếp theo: Xem lại
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22607%22%3E%3C/svg%3E
4.Trên màn hình tiếp theo, nhấp vào Tạo người dùng.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22572%22%3E%3C/svg%3E
5. Trên màn hình tiếp theo, bạn sẽ nhận được thông báo Thành công màu xanh lá cây. ID khóa truy cập và
Khóa truy cập bí mật cũng được hiển thị trên màn hình này. Bạn sẽ cần những khóa này để định cấu hình công cụ CLI của mình sau này, vì vậy hãy ghi lại những khóa này ở nơi khác.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22346%22%3E%3C/svg%3E
Tạo EC2 Instance
Bây giờ bạn đã tạo người dùng quản trị, hãy tạo một EC2 instance để sử dụng làm nút chính Kubernetes của bạn.1. Nhập EC2 vào hộp tìm kiếm. Nhấp vào liên kết EC2. Nhấp vào Khởi chạy phiên bản.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22462%22%3E%3C/svg%3E
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22350%22%3E%3C/svg%3E
2. Chọn Amazon Linux 2 AMI (HVM) cho phiên bản EC2 của bạn. Chúng tôi sẽ sử dụng Amazon Linux AMI này để dễ dàng cài đặt Kubernetes và các công cụ cần thiết khác sau này, chẳng hạn như: kubectl!, docker, v.v.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22235%22%3E%3C/svg%3E
3. Trên màn hình tiếp theo, nhấp vào Tiếp theo: Cấu hình phiên bản Chi tiết.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22326%22%3E%3C/svg%3E
3. Trên màn hình tiếp theo, bật tùy chọn Tự động gán IP công khai. Vì máy chủ nằm trong mạng con riêng nên không thể truy cập được từ bên ngoài. Bạn có thể cấp cho máy chủ của mình địa chỉ IP công khai bằng cách liên kết địa chỉ IP đàn hồi với phiên bản. Bằng cách này, EC2 và ELK của bạn có thể truy cập được. Nhấp vào Tiếp theo: Lưu trữ.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22328%22%3E%3C/svg%3E
3. Trên màn hình tiếp theo, nhấp vào Tiếp theo: Thêm thẻ > Tiếp theo: Cấu hình Nhóm bảo mật.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22339%22%3E%3C/svg%3E
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22318%22%3E%3C/svg%3E
4. Trên màn hình tiếp theo, nhấp vào Xem lại và khởi chạy>Khởi chạy.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22320%22%3E%3C/svg%3E
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22324%22%3E%3C/svg%3E
5. Một hộp thoại cặp khóa sẽ xuất hiện. Nhấn Tạo cặp khóa mới. Đặt tên cho cặp khóa, sau đó tải xuống và lưu tệp .pem ở một vị trí an toàn. Nhấp vào Khởi chạy phiên bản.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22687%22%20height=%22546%22%3E%3C/svg%3E
Cấu hình Công cụ Dòng lệnh
Bây giờ bạn đã tạo phiên bản EC2, bạn cần cài đặt máy khách cho phiên bản đó. Theo thuật ngữ AWS, máy khách là công cụ dòng lệnh cho phép bạn quản lý các đối tượng đám mây. Trong phần này, bạn sẽ tìm hiểu cách cấu hình các công cụ Giao diện Dòng lệnh (CLI).1. Điều hướng đến bảng điều khiển EC2 của bạn. Bạn sẽ thấy phiên bản EC2 mới của mình đang chạy. Nếu không, phiên bản của bạn có thể khởi động lần đầu tiên, hãy đợi 5 phút và thử lại. Khi phiên bản của bạn đang chạy, hãy nhấp vào Kết nối.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22114%22%3E%3C/svg%3E
2. Trên màn hình tiếp theo, nhấp vào Kết nối.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22570%22%3E%3C/svg%3E
Bạn sẽ được đưa đến phiên SSH tương tác trên trình duyệt của mình. SSH cho phép bạn kết nối và vận hành an toàn trên máy chủ từ xa. Phiên SSH tương tác sẽ cho phép chúng ta cài đặt các công cụ dòng lệnh cho EKS và Kubernetes trực tiếp vào phiên bản EC2 của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22113%22%3E%3C/svg%3E
Sau khi đăng nhập vào phiên SSH, điều đầu tiên bạn cần làm là kiểm tra phiên bản aws-cli của mình. Điều này nhằm đảm bảo rằng bạn đang sử dụng phiên bản AWS CLI mới nhất. AWS CLI được sử dụng để định cấu hình, quản lý và làm việc với cụm của bạn.
Nếu phiên bản của bạn đã lỗi thời, bạn có thể gặp một số vấn đề và lỗi trong quá trình tạo cụm. Nếu phiên bản của bạn thấp hơn 2.0, thì bạn sẽ cần phải nâng cấp.
3.Chạy lệnh sau để kiểm tra phiên bản CLI của bạn.
Mã:
aws --version
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2282%22%3E%3C/svg%3E
4. Chạy lệnh bên dưới để tải xuống phiên bản mới nhất hiện có của AWS CLI vào phiên bản EC2 của bạn. curl sẽ tải xuống tệp của bạn từ url đã cho, -o sẽ đặt tên theo ý bạn và "awscli-exe-linux-x86_64.zip" là tệp sẽ được tải xuống
Mã:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2287%22%3E%3C/svg%3E
5.Một lần khi quá trình tải xuống hoàn tất, hãy chạy lệnh bên dưới để giải nén nội dung của tệp đã tải xuống vào thư mục hiện tại.
Mã:
unzip awscliv2.zip
Mã:
which aws
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2271%22%3E%3C/svg%3E
7. Bây giờ bạn cần cấu hình aws-cli của mình bằng cách chạy lệnh cập nhật với một số tham số. Tham số đầu tiên ./aws/install sẽ giúp chúng ta cài đặt AWS CLI vào thư mục hiện tại. Tham số thứ hai --bin-dir cho biết AWS CLI sẽ nằm ở đâu trong PATH của môi trường của bạn và tham số thứ ba --install-dir là đường dẫn tương đối đến bin-dir. Lệnh này sẽ đảm bảo rằng tất cả các đường dẫn của bạn đều được cập nhật.
Mã:
sudo ./aws/install --bin-dir /usr/bin --install-dir /usr/bin/aws-cli --update
Mã:
aws --version
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2242%22%3E%3C/svg%3E
9. Bây giờ môi trường của bạn đã được cấu hình đúng cách, đã đến lúc bạn cấu hình tài khoản AWS nào mà bạn muốn giao tiếp thông qua AWS CLI. Chạy lệnh sau để liệt kê các biến môi trường tài khoản hiện được cấu hình của bạn cùng với bí danh mà bạn muốn sử dụng cùng với nó.
Mã:
aws configure
- ID khóa truy cập AWS [Không có]: Nhập khóa truy cập AWS mà bạn đã ghi chú trước đó.
- Khóa truy cập bí mật AWS [Không có]: Nhập Khóa truy cập bí mật AWS mà bạn đã ghi chú trước đó.
- Bạn cũng cần chỉ định tên vùng mặc định nơi cụm EKS của bạn sẽ ở. Bạn nên chọn vùng AWS nơi cụm EKS mong muốn của bạn sẽ ở và gần bạn nhất. Trong hướng dẫn này, chúng tôi chọn us-east-1 vì vị trí địa lý gần chúng tôi và dễ sử dụng cho các bước tiếp theo trong hướng dẫn.
- Định dạng đầu ra mặc định [Không có]: Nhập json làm định dạng đầu ra mặc định của bạn vì nó sẽ rất hữu ích để chúng tôi xem các tệp cấu hình sau này.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2298%22%3E%3C/svg%3E
Bây giờ bạn đã thiết lập xong các công cụ AWS CLI của mình. Đã đến lúc cấu hình công cụ Kubernetes CLI có tên là kubectl trong môi trường của bạn để bạn có thể tương tác với cụm EKS của mình.
Kubectl là giao diện dòng lệnh cho Kubernetes. Với Kubectl, bạn có thể quản lý các ứng dụng đang chạy trên cụm Kubernetes. Kubectl không được cài đặt theo mặc định trên các hệ thống Linux và MacOS. Bạn có thể cài đặt Kubectl trên các hệ thống khác bằng cách làm theo hướng dẫn trên trang web Kubernetes.
10. Chạy lệnh bên dưới để tải xuống tệp nhị phân kubectl. Tệp nhị phân là tệp máy tính có phần mở rộng ".bin", chỉ có thể thực thi trên một số loại máy tính nhất định. Đây là cách dễ dàng để các loại máy tính khác nhau chia sẻ tệp. Chúng tôi sử dụng tệp nhị phân kubectl vì tệp nhị phân kubectl không phụ thuộc vào nền tảng. Nó sẽ hoạt động trên bất kỳ hệ thống nào có thể chạy hệ điều hành giống Unix, bao gồm Linux và Mac OS.
Mã:
curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.8/2020-04-16/bin/linux/amd64/kubectl
Mã:
chmod +x ./kubectl
Lệnh cp ./kubectl $HOME/bin/kubectl sao chép tệp nhị phân kubectl cục bộ vào thư mục kubectl của bạn và đổi tên tệp thành kubectl. Cuối cùng, lệnh export thực hiện những gì nó nói - nó xuất một biến môi trường vào bộ nhớ của shell để bất kỳ chương trình nào chạy từ shell này có thể sử dụng biến đó. Trong trường hợp của chúng ta, chúng ta cần cho kubectl biết thư mục kubectl của chúng ta ở đâu để nó có thể tìm thấy tệp nhị phân kubectl.
Mã:
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
Tùy chọn --short yêu cầu kubectl cung cấp thông tin cơ bản ở dạng nhỏ gọn với một chữ số thập phân cho số thực và định dạng thời gian viết tắt giống như --format. Bạn sẽ thấy đầu ra như bên dưới. Đầu ra này cho chúng ta biết rằng chúng ta đã cài đặt kubectl thành công và đang sử dụng phiên bản chính xác.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2285%22%3E%3C/svg%3E
Điều cuối cùng bạn cần làm trong phần này là cấu hình công cụ cli eksctl để sử dụng cụm Amazon EKS của bạn. Công cụ cli eksctl là giao diện dòng lệnh có thể quản lý cụm Amazon EKS. Nó có thể tạo thông tin xác thực cụm, cập nhật thông số cụm, tạo hoặc xóa các nút công nhân và thực hiện nhiều tác vụ khác.
14. Chạy các lệnh sau để cài đặt công cụ cli eksctl và xác minh phiên bản của nó.
Mã:
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp && sudo mv /tmp/eksctl /usr/bin
Mã:
eksctl version
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22671%22%20height=%2266%22%3E%3C/svg%3E
Cung cấp Cụm EKS
Bây giờ bạn đã có EC2 và các công cụ AWS CLI, bạn có thể cung cấp Cụm EKS đầu tiên của mình.1. Chạy lệnh eksctl create cluster bên dưới để cung cấp một cụm có tên dev trong vùng us-east-1 với một nút master và ba nút core.
Mã:
eksctl create cluster --name dev --version 1.21 --region us-east-1 --nodegroup-name standard-workers --node-type t3.micro --nodes 3 --nodes-min 1 --nodes-max 4 --managed
Tham số name được sử dụng để xác định tên của Cụm EKS này và nó chỉ là một nhãn thân thiện để bạn thuận tiện. version là phiên bản bạn muốn cụm sử dụng, đối với ví dụ này, chúng tôi sẽ sử dụng Kubernetes v1.21.2 nhưng bạn có thể tự do khám phá cũng như các lựa chọn khác.
nodegroup-name là tên của một nhóm nút mà cụm này sẽ sử dụng để quản lý các nút worker. Trong ví dụ này, bạn sẽ giữ cho nó đơn giản và chỉ sử dụng standard-workers, nghĩa là các nút worker của bạn sẽ có một vCPU và 3GB bộ nhớ theo mặc định.
nodes là tổng số nút worker lõi mà bạn muốn có trong cụm của mình. Trong ví dụ này, ba nút được yêu cầu. nodes-min và nodes-max kiểm soát số lượng nút tối thiểu và tối đa được phép trong cụm của bạn. Trong ví dụ này, ít nhất một nhưng không quá bốn nút worker sẽ được tạo.
2. Bạn có thể điều hướng đến bảng điều khiển CloudFormation của mình để theo dõi tiến trình cung cấp.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22373%22%3E%3C/svg%3E
Như hiển thị bên dưới, bạn có thể thấy ngăn xếp dev của mình đang được tạo.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22172%22%3E%3C/svg%3E
3. Nhấp vào siêu liên kết ngăn xếp phát triển > Sự kiện. Bạn sẽ thấy danh sách các sự kiện liên quan đến quy trình tạo. Đợi quy trình cung cấp hoàn tất - quá trình này có thể mất tới 15 phút tùy thuộc vào hoàn cảnh cụ thể của bạn - và kiểm tra trạng thái của ngăn xếp trong bảng điều khiển CloudFormation.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22319%22%3E%3C/svg%3E
4. Sau khi bạn đợi ngăn xếp hoàn tất việc cung cấp, hãy điều hướng đến bảng điều khiển CloudFormation của bạn, bạn sẽ thấy trạng thái ngăn xếp dev của mình là CREATE_COMPLETE.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22136%22%3E%3C/svg%3E
Bây giờ, hãy điều hướng đến bảng điều khiển EC2 của bạn. Bạn sẽ thấy một nút chính và ba nút lõi trong Bảng điều khiển EC2. Đầu ra này xác nhận rằng bạn đã thiết lập cụm EKS thành công.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22139%22%3E%3C/svg%3E
5. Chạy lệnh eksctl bên dưới để lấy thông tin chi tiết về cụm dev, chẳng hạn như cluster-ID và vùng.
Mã:
eksctl get cluster
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2292%22%3E%3C/svg%3E
6. Chạy lệnh aws eks update bên dưới để lấy thông tin xác thực của nút làm việc từ xa. Lệnh này phải được thực hiện trên bất kỳ máy tính nào bạn muốn kết nối với cụm. Nó tải xuống thông tin xác thực cho kubectl của bạn để truy cập EKS Kubernetes Cluster từ xa mà không cần sử dụng khóa truy cập AWS Access.
Mã:
aws eks update-kubeconfig --name dev --region us-east-1
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2244%22%3E%3C/svg%3E
Triển khai ứng dụng của bạn trên Cụm EKS
Bây giờ bạn đã cung cấp Cụm EKS của mình. Hãy triển khai ứng dụng đầu tiên của bạn trên Cụm EKS. Trong phần này, bạn sẽ tìm hiểu cách triển khai máy chủ web nginx cùng với bộ cân bằng tải dưới dạng ứng dụng mẫu.1. Chạy lệnh bên dưới để cài đặt giton hệ thống của bạn. Bạn sẽ cần git để sao chép mã máy chủ web nginx từ GitHub.
Mã:
sudo yum install -y git
Mã:
git clone https://github.com/ata-aws-iam/htf-elk.git
3. Chạy lệnh cd htf-elk để thay đổi thư mục làm việc thành thư mục tệp cấu hình nginx.
Mã:
cd htf-elk
Mã:
ls
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2234%22%3E%3C/svg%3E
5. Chạy lệnh cat bên dưới để mở tệp nginx-deployment.yaml và bạn sẽ thấy các nội dung sau có trong tệp đó.
Mã:
cat nginx-deployment.yaml
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22232%22%3E%3C/svg%3E
- apiVersion: apps/v1 là API Kubernetes cốt lõi
- kind: Deployment là loại tài nguyên sẽ được tạo cho tệp này. Trong Deployment, một Pod được tạo cho mỗi container.
- metadata: chỉ định các giá trị siêu dữ liệu để sử dụng khi tạo đối tượng
- name: nginx-deployment là tên hoặc nhãn cho triển khai này. Nếu không có giá trị, tên triển khai sẽ được lấy từ tên thư mục.
- labels: cung cấp nhãn cho ứng dụng. Trong trường hợp này, nó sẽ được sử dụng để định tuyến dịch vụ thông qua Elastic Load Balancing (ELB)
- env: dev mô tả một biến môi trường được xác định bởi một giá trị chuỗi. Đây là cách bạn có thể cung cấp dữ liệu cấu hình động cho container của mình.
- spec: là nơi bạn xác định số lượng bản sao cần tạo. Bạn có thể chỉ định các thuộc tính mà bạn muốn mỗi bản sao dựa trên.
- replicas: 3 sẽ tạo ba bản sao của pod này trên cụm của bạn. Chúng sẽ được phân phối trên các nút công nhân khả dụng khớp với bộ chọn nhãn.
- containerPort: 80 sẽ ánh xạ một cổng từ container đến một cổng trên máy chủ. Trong trường hợp này, nó sẽ ánh xạ cổng 80 trên container đến cổng 30000 của máy cục bộ của bạn.
Mã:
cat nginx-svc.yaml
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22220%22%3E%3C/svg%3E
7. Chạy lệnh kubectl apply bên dưới để tạo dịch vụ nginx trong Kubernetes Cluster của bạn. Sẽ mất vài phút để cụm EKS cung cấp ELB cho dịch vụ này.
Mã:
kubectl apply -f ./nginx-svc.yaml
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2248%22%3E%3C/svg%3E
8. Chạy dịch vụ kubectl get bên dưới để biết thông tin chi tiết về dịch vụ nginx mà bạn vừa tạo.
Mã:
kubectl get service
Load Balancer ELB có tên a6f8c3cf0fe3a468d8828db6059ef05e-953361268.us-east-1.elb.amazonaws.com có cổng 32406, cổng này sẽ được ánh xạ tới cổng container 80. Ghi lại tên máy chủ DNS của load balancer ELB từ đầu ra; bạn sẽ cần tên này để truy cập dịch vụ sau.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2240%22%3E%3C/svg%3E
9. Chạy lệnh kubectl apply bên dưới để áp dụng triển khai cho cụm của bạn.
Mã:
kubectl apply -f ./nginx-deployment.yaml
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2226%22%3E%3C/svg%3E
10. Chạy lệnh kubectl get deployment để lấy thông tin chi tiết về triển khai nginx mà bạn vừa tạo.
Mã:
kubectl get deployment
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2238%22%3E%3C/svg%3E
11. Chạy lệnh bên dưới để truy cập ứng dụng nginx của bạn thông qua bộ cân bằng tải. Bạn sẽ thấy trang chào mừng từ nginx trong terminal/console của mình, xác nhận rằng ứng dụng nginx của bạn đang hoạt động như mong đợi. Thay thế <LOAD_BALANCER_DNS_HOSTNAME>bằng tên máy chủ DNS của bộ cân bằng tải mà bạn đã ghi chú ở trên.
Mã:
curl ""
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22252%22%3E%3C/svg%3E
12. Bạn cũng có thể truy cập ứng dụng nginx của mình thông qua trình duyệt bằng cách sao chép và dán tên máy chủ DNS của bộ cân bằng tải vào trình duyệt.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22245%22%3E%3C/svg%3E
Xác minh Tính năng Có sẵn Cao (HA) cho Cụm của Bạn
Bây giờ bạn đã tạo cụm thành công, bạn có thể kiểm tra tính năng HA để đảm bảo nó hoạt động như mong đợi.Kubernetes hỗ trợ triển khai nhiều nút bằng cách sử dụng các bộ điều khiển đặc biệt hoạt động song song để xây dựng và quản lý các pod hoặc dịch vụ được sao chép. Một số bộ điều khiển này là Deployments, ReplicationController, Job và DaemonSet.
Bộ điều khiển triển khai được sử dụng để kiểm soát sao chép trên pod hoặc cấp dịch vụ. Khi pod của bạn hết tài nguyên, nó sẽ xóa tất cả pod của bộ điều khiển sao chép đó (trừ pod đang chạy trên nút chính) và tạo các bản sao mới của pod này. Điều này sẽ giúp bạn có thời gian hoạt động rất cao trên các ứng dụng của mình.
1.Điều hướng đến bảng điều khiển EC2 của bạn và dừng cả ba nút công nhân.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22158%22%3E%3C/svg%3E
2. Chạy lệnh bên dưới để kiểm tra trạng thái của các pod của bạn. Bạn sẽ nhận được các trạng thái khác nhau: Đang kết thúc, Đang chạy và Đang chờ cho tất cả các pod của bạn. Bởi vì khi bạn dừng tất cả các nút worker, EKS sẽ cố gắng khởi động lại tất cả các nút worker và pod một lần nữa. Bạn cũng có thể thấy một số nút mới, có thể xác định theo độ tuổi của chúng (50).
Mã:
kubectl get pod
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22126%22%3E%3C/svg%3E
Phải mất một thời gian để khởi động phiên bản EC2 và các pod mới. Khi tất cả các nút công nhân được khởi động, bạn sẽ thấy tất cả các phiên bản EC2 mới trở lại trạng thái Đang chạy.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22180%22%3E%3C/svg%3E
3. Chạy lại dịch vụ kubectl get. Bạn có thể thấy ESK sẽ tạo một dịch vụ nginx mới và một tên DNS mới cho bộ cân bằng tải của bạn.
Mã:
kubectl get service
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2299%22%3E%3C/svg%3E
Sao chép và dánDNS mới vào trình duyệt của bạn. Bạn sẽ nhận được lời chào mừng từ trang Nginx một lần nữa. Đầu ra này xác nhận rằng HA của bạn hoạt động như mong đợi.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22197%22%3E%3C/svg%3E