AWS

EKS cluster Management

enumclass 2021. 3. 13. 18:23

cluster 정보 얻기

$ eksctl get nodegroup --cluster EKS-course-cluster
2021-03-13 18:08:25 [ℹ]  eksctl version 0.40.0
2021-03-13 18:08:25 [ℹ]  using region us-west-2
CLUSTER                 NODEGROUP       STATUS          CREATED                 MIN SIZE        MAX SIZE        DESIRED CAPACITY        INSTANCE TYPE   IMAGE ID                ASG NAME
EKS-course-cluster      ng-1            CREATE_COMPLETE 2021-03-13T08:48:55Z    3               3               3                       t2.small        ami-01f2f1180914aad2b   eksctl-EKS-course-cluster-nodegroup-ng-1-NodeGroup-1X4BWPMRE6QZ4

MIN SIZE : 최소 노드 사이즈

MAX SIZE : 최대 노드 사이즈

 

cluster Size 변경하기

$ eksctl scale nodegroup --cluster=EKS-course-cluster --nodes=5 --nodes-max=5 --name=ng-1
2021-03-13 18:18:01 [ℹ]  scaling nodegroup "ng-1" in cluster EKS-course-cluster
2021-03-13 18:18:03 [ℹ]  scaling nodegroup, desired capacity from 3 to 5, max size from 3 to 5
2021-03-13 18:18:04 [ℹ]  waiting for CloudFormation changeset "eksctl-scale-nodegroup-1615627083" for stack "eksctl-EKS-course-cluster-nodegroup-ng-1"
2021-03-13 18:18:20 [ℹ]  waiting for CloudFormation changeset "eksctl-scale-nodegroup-1615627083" for stack "eksctl-EKS-course-cluster-nodegroup-ng-1"
2021-03-13 18:18:23 [ℹ]  waiting for CloudFormation stack "eksctl-EKS-course-cluster-nodegroup-ng-1"
2021-03-13 18:18:41 [ℹ]  waiting for CloudFormation stack "eksctl-EKS-course-cluster-nodegroup-ng-1"
2021-03-13 18:19:01 [ℹ]  waiting for CloudFormation stack "eksctl-EKS-course-cluster-nodegroup-ng-1"
2021-03-13 18:19:21 [ℹ]  waiting for CloudFormation stack "eksctl-EKS-course-cluster-nodegroup-ng-1"
2021-03-13 18:19:38 [ℹ]  waiting for CloudFormation stack "eksctl-EKS-course-cluster-nodegroup-ng-1"
2021-03-13 18:19:56 [ℹ]  waiting for CloudFormation stack "eksctl-EKS-course-cluster-nodegroup-ng-1"

--nodes : cluster에 등록할 node 수

--nodes-max : 최대 node 수

만약 nodes가 nodes-max보다 높다면 node는 추가 되지 않는다.

 

Node group 추가하고 Spot Instance Type 섞기

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: EKS-course-cluster
  region: us-west-2

nodeGroups:
  - name: ng-1
    instanceType: t2.small
    desiredCapacity: 3
    ssh: # use existing EC2 key
      publicKeyName: udacity
  - name: ng-mixed
    minSize: 3
    maxSize: 5
    instancesDistribution:
      maxPrice: 0.2
      instanceTypes: ["t2.small", "t3.small"]
      onDemandBaseCapacity: 0
      onDemandPercentageAboveBaseCapacity: 50
    ssh: # use existing EC2 key
      publicKeyName: udacity

- ng-mixed 이하 코드가 추가된 코드임

- instancesDistribution : Spot Instance 설정임

- onDemandPercentageAboveBaseCapacity: 50 -> 50%를 ondemand 하고 50%를 Spot instance로 생성 관리

eksctl.io/usage/spot-instances/

t2와 t3 instance type이 섞인것을 확인 가능함

spot instance

이중 instance id => `i-0a968b80eebf123c8`로 명명되는 인스턴스의 경우 spot instance로 생성 되어있다. 

$ eksctl get nodegroup --cluster EKS-course-cluster
2021-03-13 20:37:02 [ℹ]  eksctl version 0.40.0
2021-03-13 20:37:02 [ℹ]  using region us-west-2
CLUSTER                 NODEGROUP       STATUS          CREATED                 MIN SIZE        MAX SIZE        DESIRED CAPACITY        INSTANCE TYPE   IMAGE ID                ASG NAME
EKS-course-cluster      ng-1            UPDATE_COMPLETE 2021-03-13T08:48:55Z    3               5               3                       t2.small        ami-01f2f1180914aad2b   eksctl-EKS-course-cluster-nodegroup-ng-1-NodeGroup-1X4BWPMRE6QZ4
EKS-course-cluster      ng-mixed        CREATE_COMPLETE 2021-03-13T11:08:22Z    3               5               0                       t2.small        ami-01f2f1180914aad2b   eksctl-EKS-course-cluster-nodegroup-ng-mixed-NodeGroup-1W27Q1JUTT6ZP

Node Group이 2개로 분리 되어있다.

 

EKS nodegroup 삭제하기

$ eksctl delete nodegroup --config-file=eks-course.yaml --include=ng-mixed --approve
2021-03-13 20:52:45 [ℹ]  eksctl version 0.40.0
2021-03-13 20:52:45 [ℹ]  using region us-west-2
2021-03-13 20:52:46 [ℹ]  comparing 2 nodegroups defined in the given config ("eks-course.yaml") against remote state
2021-03-13 20:52:46 [ℹ]  combined include rules: ng-mixed
2021-03-13 20:52:46 [ℹ]  1 nodegroup (ng-mixed) was included (based on the include/exclude rules)
2021-03-13 20:52:47 [ℹ]  will drain 1 nodegroup(s) in cluster "EKS-course-cluster"
2021-03-13 20:52:49 [ℹ]  cordon node "ip-192-168-12-117.us-west-2.compute.internal"
2021-03-13 20:52:49 [ℹ]  cordon node "ip-192-168-50-49.us-west-2.compute.internal"
2021-03-13 20:52:49 [ℹ]  cordon node "ip-192-168-68-94.us-west-2.compute.internal"
2021-03-13 20:52:50 [!]  ignoring DaemonSet-managed Pods: kube-system/aws-node-dgbjb, kube-system/kube-proxy-fhjcs
2021-03-13 20:52:50 [!]  ignoring DaemonSet-managed Pods: kube-system/aws-node-frqsz, kube-system/kube-proxy-rf5m6
2021-03-13 20:52:51 [!]  ignoring DaemonSet-managed Pods: kube-system/aws-node-426st, kube-system/kube-proxy-k5h8l
2021-03-13 20:52:51 [✔]  drained all nodes: [ip-192-168-12-117.us-west-2.compute.internal ip-192-168-50-49.us-west-2.compute.internal ip-192-168-68-94.us-west-2.compute.internal]
2021-03-13 20:52:51 [ℹ]  will delete 1 nodegroups from cluster "EKS-course-cluster"
2021-03-13 20:52:52 [ℹ]  1 task: { 1 task: { delete nodegroup "ng-mixed" [async] } }
2021-03-13 20:52:52 [ℹ]  will delete stack "eksctl-EKS-course-cluster-nodegroup-ng-mixed"
2021-03-13 20:52:52 [ℹ]  will delete 1 nodegroups from auth ConfigMap in cluster "EKS-course-cluster"
2021-03-13 20:52:52 [ℹ]  removing identity "arn:aws:iam::144965779334:role/eksctl-EKS-course-cluster-nodegro-NodeInstanceRole-1HQ1ND2OI1NXV" from auth ConfigMap (username = "system:node:{{EC2PrivateDNSName}}", groups = ["system:bootstrappers" "system:nodes"])
2021-03-13 20:52:52 [✔]  deleted 1 nodegroup(s) from cluster "EKS-course-cluster"

delete를 이용해서 특정 nodegroup을 삭제 할 수 있음

delete nodegroup

 

728x90
반응형