-
『EKS』EKS연결 및 간단하게 사용해보기AWS/EKS 2022. 2. 13. 18:24
주의
본 내용은 AWS-EC2에 관한 기본적인 이해와 컨테이너 기술에 대한 간단한 기초이론이 있어야지 이해할 수있습니다.
개요
저번에는 간단하게 EKS Cluster를 생성하는 시간을 가졌었습니다.
EKS를 생성할때는 시간은 오래 걸리지만 복잡한 작업없이 원하는 수의 노드를 생성이 가능하고
마스터 - 워커 노드에 관해서 크게 생각할 필요없이 바로 생성이 가능해서 간편하다는 장점이 있습니다.
그렇다면 우리는 이 EKS라는 것에 어떻게 명령을내려서 컨테이너들을 관리할 수있을까요?
바로 kubectl과 우리가 생성한 eks를 연결해주고 eksctl이라는 것을 이용해서 eks를 관리할 수있습니다.
kubectl 명령도 여기서도 작동을 하죠! 왜? EKS가 연결되어있어서 kubernetes를 쓰는 것처럼 할 수있기 때문입니다.
실습
실습을 하기 앞서 리소스가 없거나 Cluster가 없다면 저번 글을 보고 따라서 만드시면 됩니다.
eksctl과 kubectl을 설치하기 전 환경을 선택해야하는데 대표적으로 두 가지 선택지가 있습니다.
- 현재 Host에서 작업을 하는 방법
- EC2 Instance에서 작업을 하는 방법
어느것이 더 좋다 나쁘다는 없고 다음 조건을 충족한 환경을 만드시면 됩니다.
- AWS CLI V2가 설치되어야함.
- AWS CLI에 Root로 로그인을 해주어야함.
- 인터넷이 되어야함.
이제 위 조건은 충족이 되었다는 가정하에 진행을 해보도록 하겠습니다. 아래는 설치를 할 수있는 shellscript입니다.
저는 Amazon Linux2환경에서 진행을 하였다는 점 참고 해주시면 감사하겠습니다.
또한 아래에서 부터는 좀 말투가 4가지 없게 변하는 점...양해부탁 드립니다...ㅋㅋ
#!/bin/bash sudo yum install docker -y curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl kubectl version --client 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 eksctl version
위 코드를 실행하면 Docker, eksctl, kubectl 이 3개가 전부 설치가 완료되었다.
지금부터가 중요합니다. eks와 kubectl이 설치되어있으니 생성한 Cluster와 연결을 해주면 된다.
aws sts get-caller-identity aws eks --region ap-northeast-2 update-kubeconfig --name EKS-Cluster kubectl get nodes
첫번 째 줄은 aws cli중 sts로 지금 현재 호스트가 가지고있는 권한을 알려준다.
두번 째 줄은 aws cli로 eks 와 현재 kubernetes와 연결해준다.
마지막줄인 kubectl get nodes는 kubectl 명령어로 현재 Node를 보여줍니다.
여기서 형식이
ip-숫자-숫자-숫자-숫자.ap-northeast-2.compute.internal 과 같은 Node가 두개가뜨면 된다.
이제 모든 준비가 끝났다. 간단히 웹사이트를 띄우는 실습을 해볼텐데 사실상 코드가 모두 주어지게되어 어렵지는 않다.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-blog-deployment labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - name: http containerPort: 80 protocol: TCP --- apiVersion: v1 kind: Service metadata: name: loadbalancer-service spec: selector: app: nginx ports: - name: httpd port: 80 targetPort: 80 nodePort: 31000 protocol: TCP type: LoadBalancer
위 코드는 k8s의 서비스를 만드는 yaml코드이다.
이제 작업하고있는 환경에 all.yaml이라는 이름으로 생성을 하고 다음 명령어를 사용한다.
kubectl apply -f all.yaml kubectl describe service loadbalancer-service
그러면 아래와 같이 정보들이 쭈루룩 나온다.
이제 저기에서 LoadBalancer Ingress 부분을 복사해서 인터넷 창에 붙여넣기를 해주면 된다.
테스트 페이지가 뜨면서 성공적으로 생성이 된 것을 알 수있다.
삭제
조립은 분해의 역순이다. 그말은 즉슨 실습 내용을 보며 거꾸로 진행하면 다 지울 수있다.
이해가 잘 안되요.
k8s에 대한 이해가 없다면 어려울 수도있다.
다음에 기회가 된다면 k8s에 관한 글도 작성하도록 하겠다.