본문 바로가기
IT/AWS

AWS kops 쿠버네티스 관련 에러 정리(진행 중)

by twofootdog 2020. 3. 6.

 

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 인스턴스 사용해야지 뭐

 

 

 

 

댓글