Các bạn có thể đọc lại 3 bài trước của mình để hiểu hơn về eks nhé, còn trong bài này mình sẽ sơ qua khác nhau giữa 2/3 loại EKS Compute Resource và cách tạo chúng qua eksctl
https://devopsify.co/series-aws-eks-bai-1-tong-quan-ve-eks/
https://devopsify.co/series-aws-eks-bai-2-eks-qua-aws-web-console/
https://devopsify.co/series-aws-eks-bai-3-k8s-services-nodeport-loadbalancer-trong-aws-eks/
Cài eksctl
Chạy mớ lệnh sau để cài nhé
echo "===== INSTALL EKSCTL ======" 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/local/bin echo "===== INSTALL EKSCTL COMPLETED ======" echo "Your version:" eksctl version
Tạo SSH key
Thông qua eksctl để cho phép kết nối đến worker node, thì tạo ra SSH key mặc định như sau
ssh-keygen
EKS Cluster Self-Managed Nodes
Kiểu đơn giản thì là một cái node từ EC2 instance, được join vào trong cluster, chỉ có điều nó nằm trong 1 Auto Scaling Group (ASG). Và lưu ý là EKS KHÔNG quản lý ASG này.
Có thể sử dụng qua command-line hoặc yaml file, ở đây mình dùng qua yaml file
Step 1: Tạo file ex-cluster.yaml
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: demo-eksctl-cluster region: ap-southeast-1 nodeGroups: - name: node-group-1 instanceType: t2.small desiredCapacity: 1 #so luong·worker node volumeSize: 8 ssh: allow: true # will use ~/.ssh/id_rsa.pub as the default ssh key
Step 2: Tạo cluster qua ekscli
eksctl create cluster -f ex-cluster.yaml
Lúc này eksctl sẽ gọi đến AWS Cloud Formation để tạo các resources trên EKS
Kiểm tra lại ở giao diện EKS:
Step 3: kết nối vào cluster
Bước này thì mình đã có hướng dẫn ở bài 2
aws eks update-kubeconfig --name demo-eksctl-cluster --region ap-southeast-1 kubectl config use-context <TEN_CONTEXT> kubectl get nodes
EKS Cluster Managed Nodes Groups
Đây cũng là một loại node group trong một ASG nào đó, nhưng ASG này được quản lý bởi EKS. Một vài tính năng trong số này có thể sử dụng với self managed node group. Tuy nhiên điểm trừ của nó là bị giới hạn một số loại AMI nhất định.
Step 1:
Lưu ý phần name sẽ đặt giống tên cluster mục 3 để khỏi phải tạo lại cluster khác cho nhanh 😀
vi managedNodeGroup.yaml
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: demo-eksctl-cluster region: ap-southeast-1 managedNodeGroups: - name: managed-ng-1 instanceType: t2.small minSize: 1 #toi thieu phai co 1 instance maxSize: 2 #toi da phai co 1 instance desiredCapacity: 1 volumeSize: 20 ssh: allow: true # will use ~/.ssh/id_rsa.pub as the default ssh key publicKeyPath: ~/.ssh/id_rsa.pub labels: {role: worker} tags: nodegroup-role: worker - name: managed-ng-2 instanceType: t3.small minSize: 1 maxSize: 2
Step 2: Dùng lệnh tạo nodegroup
eksctl create nodegroup --config-file=managedNodeGroup.yaml
Tiếp tục nó cũng tương tự, cũng gọi đến CloudFormation
Step 3: Kiểm tra EKS
Step 4: Kiểm tra NodeGroup qua kubectl
Dùng lệnh sau để lấy labels, sau đó tìm kiếm qua label thông qua -l
kubectl get nodes --show-labels
kubectl get nodes -l "alpha.eksctl.io/nodegroup-name=node-group-1" kubectl get nodes -l "alpha.eksctl.io/nodegroup-name=managed-ng-1" kubectl get nodes -l "alpha.eksctl.io/nodegroup-name=managed-ng-2"
Deploy nginx
Mục này thì cũng giống mấy bài trước, mục đích test thử xem cluster tạo ra ổn không nên mình không giải thích lại nhé
kubectl create deployment demo-deployment --image=nginx --replicas 2
kubectl get pods -owide
kubectl get endpoints demo-lb-svc
kubectl get svc
Vậy là sau bài này chúng ta đã tìm hiểu được 2/3 loại compute resource của EKS, bài sau sẽ là EKS Fargate
Chúc các bạn thành công