1. codebuild 배포 시 에러
문제 : [Container] 2020/03/05 16:56:46 Running command kubectl apply -f ./k8s/k8s-deployment.yaml
The Deployment "toy-project-deployment" is invalid: spec.selector: Invalid value: v1.LabelSelThe Deployment "toy-project-deployment" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"toy-project"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutableector{MatchLabels:map[string]string{"app":"toy-project"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
해결방법 :
쿠버네티스 클러스터에 deployment와 service가 올라가 있는 상황에서 동일한 deployment.yaml의 spec.selector.matchLabels.app, spec.template.metadata.Labels.app, spec.template.spec.containers.name 의 값만 바꿔서 "kubectl apply"로 배포하는 경우 에러가 발생함. 클러스터에 올라가있는 deployment와 service를 삭제해주고 재 배포해주면 정상적으로 수행됨
2. deployment 0/1(READY) 및 pod pending 현상
문제 : 쿠버네티스 클러스터에 서비스 배포를 하다보니 deployment는 잘 돌아가다가 0/1(READY) 상태이고, pod들은 pending과 terminating 상태로 변경되어 있는 것을 확인했다. 로그 및 구글링으로 에러의 원인을 찾아보다가, 쿠버네티스 클러스터가 구동되는 서버의 리소스가 부족하면 그런 경우가 간혹 발생한다는 글을 보고 쿠버네티스 클러스터의 마스터 서버와 노드서버로 접속해서 cpu 및 메모리 사용량을 확인해보니, 노드서버에는 아예 ssh 접속조차 되지 않았다. 그래서 CloudWatch 로 확인해보니 CPU가 100%나 사용되고 있었다. CPU 사용률이 조금 떨어졌을 때 ssh로 접속해보니, 간혹 발생하는 kswapd0 라는 프로세스가 CPU를 엄청 많이 사용하고 있었는데, 그 원인이 바로 메모리 부족이며, 메모리가 4G 이하인 인스턴스에서 종종 발생하는 문제라고 한다.
스프링부트 서비스 1개가 구동중일 때도 메모리가 간당간당했는데, 배포를 할 때 메모리 사용량이 늘어나서 kswapd0 프로세스가 구동되어 CPU를 많이 사용하게 되고, 그로 인해 쿠버네티스 리소스들이 전부 종료되거나 pending 상태가 된 것으로 보인다.
해결방법 : 리소스 큰 EC2 인스턴스 사용해야지 뭐
'IT > AWS' 카테고리의 다른 글
AWS kops 쿠버네티스 클러스터에 Ingress 적용하기 (0) | 2020.03.08 |
---|---|
AWS kops 쿠버네티스 클러스터에 CI/CD 파이프라인(Pipeline) 만들기(CodeCommit, CodeBuild 활용) (0) | 2020.03.06 |
AWS에 kops로 쿠버네티스 클러스터 구축하기 (1) | 2020.02.29 |
AWS RDS 생성 후 EC2 인스턴스 내 서비스와 연동 (0) | 2020.02.20 |
AWS CloudFront + S3 + React 를 활용한 정적 웹페이지 만들기 (1) | 2020.02.18 |
댓글