본문 바로가기

회고

협업시스템 프로젝트 운영환경 ceph storage 오류

HyperCloud라는 제품으로 협업 시스템 운영환경을 관리했다.

 

협업 시스템에서 모니터링 시스템을 구축해달라는 의뢰가 들어왔고 그 시스템을 hypercloud위에서 구축중이었다.

node1, node2, node3 3개의 노드가 있는데

node1 번에 도커가 설치되어 있었고, 나는 그 설치된 도커를 이용하기 위해 1번 노드를 사용하였다.

 

1번 노드를 통해 docker build, docker push해서 테스트 하는 방식으로 개발을 진행했다.

협업 시스템 환경은 개발계가 없다. 그래서 모니터링 서버 테스트할 환경이 없었고

나는 모니터링 서버는 다른 서버에 영향을 주지 않는다고 생각했기에 운영환경에서 진행했다.

도커와 쿠버네티스에대한 지식이 전혀 없이 그냥 무작정 하는 개발이었다.

 

테스트를 하던 도중 hypercloud 시스템이 먹통이 되었고 너무 당황했다.

원인은 알고보니 도커와 쿠버네티스를 관리하는 linux 스토리지 사용량이 80%이상이 되면 ceph stroage가 동작하지 않는것이 기본정책이라고 한다. 이 경우 Evited 상태로 파드들이 매우 여러개 뜨는 현상과 동시에 cepth 상태가 비정상적으로 변하게 된다.

 

그래서 운영시스템이 멈추는 대참사가 일어나고 말았다ㅜㅜ

 

1. 도커 빌드시에 태그가 제대로 들어가지 않았다.

- 태그가 없는게 원인이 맞는지 모르겠지만 빌드시에 원본이미지에 diff만 가져가는 형식이 아니라 빌드할때마다 해당하는 서버 용량이 그대로 prolinux에 남아있었다.

 

docker image를 검색해서 사용하지 않는 이미지를 모두 지우고, 모니터링서버 관련해서도 전부 지웠다.

처음에는 docker prune 명령어를 사용하려고 했으나 정상적인 이미지까지 지워질지도 모른다는 무서움에 이미지 ID를 확인해 일일히 삭제했다.

 

신기하게도 docker명령어롤 통해 이미지를 지우고 바로 du -sh 명령어로 용량을 체크했을때 용량의 변화는 없었다.

내부적으로 스토리지에서 지우는데는 시간이 필요한 것 같다.

 

images하위경로에 blobs 파일이 용량이 엄청 컸는데 이건 지우면 큰일난다고 한다..

그래서 필요없으면 이미지를 지우거나, registry에서 이미지를 지우거나, 도커 가비지 컬렉터를 이용해서 지워야 한다고한다.

 

이미지 띄우니 pvc mount하는 부분에서 문제가 생겼다.
replicaSet에서 default pod 개수 0으로 설정해서 전부 지우는 작업을 했다.

하나씩 띄우면 혹시나 될거 같았다.

 

그런데 이상하게 pod가 종료가 되지 않아 강제종료 커멘드를 사용했다.

k delete po -n ptask      task-po2-dwkht  proauthdb-fh9ql  --grace-period=0 --force

osd 스토리지가 정상화가 잘 안되었다. 아래 커널 로그 확인하는 명령어로 확인해보면 다 실패였다.

dmesg | grep osd

curl로 모니터링 서버 정리

curl http://203.241.0.204:5000/v2/monitoring/tags/list
curl -v --silent -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X DELETE http://203.241.0.204:5000/v2/monitoring/manifests/sha256:23f5d8ecd0c9e1acdb10bc44a907c0803f500d8e07bd54760320bf044bcdcb44

레지스트리에 직접 접속해서 정리하려고 했다. 근데 잘 안되었다. 내가 시스템에서 사용하는 레지스트리 구조를 몰랐다.

이거 환경구성한 사람은 퇴사했다ㅜㅜ

docker ps | grep registry
docker exec -it 8521607972a8  //bin//bash

알고보니 레지스트리를 default 레지스트리를 사용하고 있엇다.

협업시스템 레지스트리로 옮겨서 거기서 이미지를 사용하는 방식으로 변경해야하겠다는 생각이 들었다.

 

그리고 ceph 스토리지 정상화 한후에 정상적으로 작동하였다.

k get po -n rook-ceph 
k exec -it -n rook-ceph rook-ceph-tools-8644d9c859-7kczh  bash

 

After day 1

알고보니 docker build가 성공하면 이미지를 만들기 위해 사용했던 컨테이너는 삭제되고 기존에 사용하던 이미지도 삭제된다고 한다.

 

내가생성한 이미지를 docker image -a 로 확인했을때 태그가 들어가지 않았는데 도커 build시에 태그를 기입했었다. 아마도 같은 태그를 이용하여 계속 빌드했기때문에 문제가 발생한거 같다는 생각이 든다.

 

느낀점

운영에 관해 모르고 개발하니 충분히 고려할 수 있는 부분도 고려못한 부분이 아쉽다.

도커, 쿠버네티스

 

모르는 부분 정리해야겠다

'회고' 카테고리의 다른 글

와플웍스 구독형 서비스 오픈  (0) 2021.12.17
SPC 프로젝트  (0) 2021.12.08
A사 v3 프로젝트  (0) 2021.11.14
협업툴 프로젝트  (0) 2021.11.14
2020년 7월까지의 회고  (0) 2020.08.20