Project 9.쿠버네티스 활용 MSA 기반 SNS 프로젝트 Ch 7. 03 aws-load-balancer 문의드립니다.
Project 9.쿠버네티스 활용 MSA 기반 SNS 프로젝트 Ch 7. 03 aws-load-balancer 문의드립니다.
몇번을 반복해봐도 aws-load-balancer 가 기동에 실패를 하는데 원인을 모르겠습니다.
강의때와 시간차가 좀 있어서 그런지 강의에 나오는 AWS CLI and kubectl 가이드 부분은 없어진 듯 하고 eksctl 위주로 설명이 되있어서 Helm을 사용하여 AWS Load Balancer Controller 설치 가이드에 맞춰서 진행했습니다.
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/aws-load-balancer-controller.html
Helm를 사용하여 AWS Load Balancer Controller 설치 <-- 이걸로 진행
매니페스트를 사용하여 AWS Load Balancer Controller 설치
해당 작업 전에 서브넷에 태그도 kubernetes.io/role/elb, 1로 잘 달았고요.
강좌 및 가이드대로 전부 진행한 후 컨트롤러가 설치되어 있는지 확인해보니
kubectl get deployment -n kube-system aws-load-balancer-controller
NAME READY UP-TO-DATE AVAILABLE AGE
aws-load-balancer-controller 0/2 2 0 70m
이상하게 READY에 0/2가 나옵니다. 보통 2/2가 나와야 하는 것 같은데.. 이후 팟의 상태를 체크해보면 아래와 같이 CrashLoopBackOff으로 나오고요
kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
aws-load-balancer-controller-666cf9d4d-llgdx 0/1 CrashLoopBackOff 18 (69s ago) 69m
aws-load-balancer-controller-666cf9d4d-mnngj 0/1 CrashLoopBackOff 18 (21s ago) 69m
aws-node-69tlg 2/2 Running 0 150m
이후 상세로그를 보면 다음과 같이 나옵니다.
kubectl logs aws-load-balancer-controller-666cf9d4d-llgdx -n kube-system
{"level":"info","ts":"2025-01-18T09:24:53Z","msg":"version","GitVersion":"v2.11.0","GitCommit":"ba4152c1ba7c75be194d75cf343219d4aeaeb116","BuildDate":"2024-12-12T21:01:50+0000"}
{"level":"error","ts":"2025-01-18T09:24:58Z","logger":"setup","msg":"unable to initialize AWS cloud","error":"failed to get VPC ID: failed to fetch VPC ID from instance metadata: error in fetching vpc id through ec2 metadata: get mac metadata: operation error ec2imds: GetMetadata, canceled, context deadline exceeded"}
뭔가 VPC관련 문제가 있는 것 같은데 구글링도 해보고 chatgpt에게 물어봐도 뾰족한 해결책이 안나오네요 ^^;
설마 또 리소스 문제인가 싶어 노드도 하나 더 추가하고 로드밸런서도 delete시키고 재시작 하는걸 살펴봤는데 동일한 오류가 발생합니다.
(또 뭔가 빼먹었겠거니 싶어서 정책도 지우고serviceaccount도 지우고 로드밸런서도 지우고 몇번을 다시 해봐도 동일합니다)
우선은 이렇게 문의글을 올려놓고 '매니페스트를 사용하여 AWS Load Balancer Controller 설치' 가이드대로 다시 진행해보려고 합니다.
-> 해보니 이번에는 1개만 보이고 pod까지도 못간 것 같습니다.
kubectl get deployment -n kube-system aws-load-balancer-controller
NAME READY UP-TO-DATE AVAILABLE AGE
aws-load-balancer-controller 0/1 0 0 51m
kubectl describe deployment aws-load-balancer-controller -n kube-system
Name: aws-load-balancer-controller
Namespace: kube-system
CreationTimestamp: Sat, 18 Jan 2025 10:57:49 +0000
Labels: app.kubernetes.io/component=controller
app.kubernetes.io/name=aws-load-balancer-controller
Annotations: deployment.kubernetes.io/revision: 1
Selector: app.kubernetes.io/component=controller,app.kubernetes.io/name=aws-load-balancer-controller
Replicas: 1 desired | 0 updated | 0 total | 0 available | 1 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app.kubernetes.io/component=controller
app.kubernetes.io/name=aws-load-balancer-controller
Service Account: aws-load-balancer-controller
Containers:
controller:
Image: 232416793008.dkr.ecr.ap-northeast2.amazonaws.com/eks/temp:v2.7.2
Port: 9443/TCP
Host Port: 0/TCP
Args:
--cluster-name=sns-cluster
--ingress-class=alb
Limits:
cpu: 200m
memory: 500Mi
Requests:
cpu: 100m
memory: 200Mi
Liveness: http-get http://:61779/healthz delay=30s timeout=10s period=10s #success=1 #failure=2
Environment: <none>
Mounts:
/tmp/k8s-webhook-server/serving-certs from cert (ro)
Volumes:
cert:
Type: Secret (a volume populated by a Secret)
SecretName: aws-load-balancer-webhook-tls
Optional: false
Priority Class Name: system-cluster-critical
Node-Selectors: <none>
Tolerations: <none>
Conditions:
Type Status Reason
---- ------ ------
Available False MinimumReplicasUnavailable
ReplicaFailure True FailedCreate
Progressing False ProgressDeadlineExceeded
OldReplicaSets: <none>
NewReplicaSet: aws-load-balancer-controller-665df87975 (0/1 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 51m deployment-controller Scaled up replica set aws-load-balancer-controller-665df87975 to 1
여기까지 오는 것도 쉽지는 않았는데 프론트를 딱 붙혀서 확인해보며 화룡점정을 찍으려는데 이 부분이 발목을 잡네요... T^T
(프론트 이미지도 ECR에 올려둔 상태라 프론트 확인만 하면 되는데.. 아쉽습니다. 실습에 드는 클라우드 비용도 만만치 않아서 하루이틀만 더 해보고 안되면 다음 기회에 도전해야 할 것 같습니다)
프론트앤드 기동은 된 것 같지만 서비스 야믈파일 적용할 때 로드밸런서를 참조하는 것 같은데 제대로 설치가 안되어있어서 오류가 발생하는 것 같아요.
kubectl apply -f sns-frontend-service.yaml
Error from server (InternalError): error when creating "sns-frontend-service.yaml": Internal error occurred: failed calling webhook "mservice.elbv2.k8s.aws": failed to call webhook: Post "https://aws-load-balancer-webhook-service.kube-system.svc:443/mutate-v1-service?timeout=10s": no endpoints available for service "aws-load-balancer-webhook-service"
뭔가 설정이 꼬였나 싶어 기존 aws계정 탈퇴하고 다른 E-mail로 신규가입해서 다시 처음부터 셋팅해봤습니다.
역시 안됩니다. 증상은 동일하고요..
아무래도 강의때보다 시간이 많이 지나서 그런지 EKS 생성 메뉴에서부터 "빠른 구성(EKS 자율 모드 사용)-신규 옵션 같은 신규 설정 등이 보이고 사용자지정구성으로 설정해서 강의랑 비슷하게 따라가려고 하니 EKS자율모드-신규의 기본값이 사용으로 되어 있으면서 클러스터롤에 권장 관리형 정책이 없다고 나오는 등 강의랑 다릅니다.
나름 최대한 비슷하게 해보려고 EKS자율모드 사용안함으로 하고 eks-cluster-role로 선택해서 진행했습니다만 결과가 동일하네요. 힘 빠집니다. 휴...
Project 9. Ch 7. 03 부분 로드밸런서 설치 부분은 강의 내용대로 했을 때 진행이 안되기 때문에 (강의 때문이 아니고 AWS의 메뉴 구성이 바뀐 탓이겠습니다마는) 현재 상태에 맞춰서 최소한의 가이드(공지 등)가 제공되야 한다고 봅니다.
9개 프로젝트로 경험하는 대용량 트래픽 & 데이터 처리 초격차 패키지 Online.중에서 가장 시간이 짧아서 9강을 먼저 들은건데 이럴줄이야.. ^^;
단순히 로드 밸런서 설치 부분이 문제가 아니고 EKS생성 부분(Ch1.03)도 가이드가 필요할 수도 있겠다는 생각이 듭니다.
강사님 또는 조교님들께서 확인해주시면 감사하겠습니다.
(아마도 단기간에 답변이 올라오긴 힘들것 같아서 계속 클라우드 환경을 유지할 수가 없어 전부 삭제하고 답변이 올라오면 그때 다시 해봐야겠습니다)