• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

default 네임스페이스 안의 모든 구성요소를 새로운 네임스페이스로 옮기는 방법이 있을까요?

20.05.13 21:47 작성 조회수 146

1

안녕하세요 선생님!

강의를 통해 열심히 로컬에서 쿠버네티스를 돌려보고는

이제는 GCP 에서 쿠버네티스를 활용해 보고 있는 꿈나무 입니다. (뿌듯)

## 현재 상황

GCP 의 default 네임스페이스는 기본 limitRange 가 설정이 되어 있는데, 이게 CPU request 가 100m 이나 됩니다... kubectl edit 으로 1m 등의 값으로 설정해도 며칠 후에는 100m 으로 좀비처럼 부활하죠;; 가벼운 pod 2~3개를 실행하면 벌써 인스턴스 하나가 꽉 차버립니다.

그래서 제목의 질문처럼 아예 다른 namespace 로 이주를 가버리려고 합니다!

현재 default 네임스페이스에는

statefulset (mysql)

deployment (웹서버)

엘라스틱 서치

등등이 자리잡아 있는 상태입니다.

## 생각해 본 솔루션

$ kubectl get all -n default -o yaml

를 사용해서 yaml 을 얻어낸 후, yaml 안의 네임 스페이스를 전부 손으로 바꾼다음에 kubectl apply 를 해 보려고 합니다만...

실행에 옮기기 전에 만약 선생님이라면 어떻게 하셨을지 물어보고 싶습니다...! 더 좋은 방법이 있을까요?

답변 2

·

답변을 작성해보세요.

1

정승원님의 프로필

정승원

질문자

2020.05.18

감사합니다! helm 에 대해서 더 공부해 봐야겠네용~

1

안녕하세요.

그런상황이 흔한 일은 아니기 때문에 저도 좋은 경험을 말씀드리기 힘들겠네요.

보통 시스템 하나의 여러 object들을 helm차트로 관리하기 때문에 그런 작업이 필요할때

helm으로 전체를 삭제하는 명령 한번. 그리고 다른 namespace를 만들면서 전체를 배포하는 명령 하나로 끝나거든요.

일단 기존 default namespace에 running인 pod에 대한 중단 없이 namespace만 변경을 원하신가면 그런 방법은 찾기 힘들꺼고요

질문 드리고 싶은 건. kubectl get 명령으로 기존 running중인 object들의 yaml json을 가져온다고 하신 부분은 현재 default에 있는 모든 object들이 한번에 만들어진게 아니고 중간중간 추가됐기 때문에 전체 object들에 대한 yaml파일이 없어서인거같네요?

그런 전제라면 결국 제가 생각하더라도 기존 object들에 대해 리스트업이 되야하는점. 그리고 모든 네임스페이스 수정해야된다는점. 그리고 재배포 후 기존 오브젝트를 지원야한다는 단계는 똑같다고 봅니다.

결국 그런 절차를 어떻게 할꺼냐에 대한 부분은 위에 솔루션으로 생각한 대로 하는게 좋을듯 싶네요.

왜냐면 현재 형상에 대한 전체 yaml 파일 내용들을 가지고 있어야되는건 일단 꼭 필요한 작업이니까요.