DevOps
Calico?Weave? CNI에 관하여
Calico?Weave? CNI에 관하여
2021.10.25Kubernetes를 설치하여 사용할때 항상 CNI를 설치해야 core-DNS서비스가 정상동작하고, 네트워크 폴리시 등의 보안 정책을 적용할 수 있었기에, 그냥 무의식적으로 설치하여 사용했었는데 막상 다시한번 내가 쿠버네티스를 제대로 이해하고 있는가? 를 되돌아보다 보니, 가장 중요하고 기본적인 지식인 네트워크 부분을 제대로 이해하지 않고 대충 넘어갔던것이 아닌가 하는 생각이 들었다. 다중노드 및 대규모 클러스터 환경에서 올바른 컨테이너로 트래픽을 전달하기 위해서 사용한다고만 개념적으로 이해하고 있었지, istio와 같은 서비스메시를 이해하기 시작하면서 명확한 그 개념에 대해서 혼돈이 오기 시작했다. 그래서 오늘은 가장 대표적으로 많이 사용되는 Calico CNI 플러그인을 분석해 보면서 다른 CNI들과..
[DC/OS 아키텍처에 관한 분석]MESOS와 MARATHON
[DC/OS 아키텍처에 관한 분석]MESOS와 MARATHON
2021.10.19DC/OS는 쿠버네티스와 같은 컨테이너 오케스트레이션 솔루션으로 알려져 있다. 실제로도 그렇게 많이 사용되고 있지만 DC/OS를 리셀링 하는 회사에서 엔지니어로 근무하며 많이 받았던 질문으로 “그래서 쿠버네티스와는 뭐가 다른데?” 라는 질문에 대해 장황하게 설명하게 되는 나 자신을 돌아보며, 먼저 DC/OS 라는 플랫폼에 대해서 다시 한번 간단하게 해부해 보고자 한다. MESOS 아키텍쳐DC/OS를 지칭할 때 종종 marathon + mesos 라는 수식어를 붙이곤 한다. 실제로 DC/OS는 Apache 재단에서 핫한 프로젝트 중 하나였던 Mesos 라는 프로젝트에 핵심 기능을 의존하여 개발된 서비스인데, mesos는 컨테이너 오케스트레이션이라는 컨셉에만 초점을 두고 탄생한 플랫폼이 아니다. Mesos는..
ElasticSearch Index LifeCycle to Template with Fluentbit
ElasticSearch Index LifeCycle to Template with Fluentbit
2021.03.29문제 DC/OS에서는 로그 모니터링을 위해 자체적으로 로그 수집 Agent로 FluentBit을 사용한다. 현재 사용하고 있는 시스템에서는 모니터링 시스템을 구축하기 위해서 FluentBit 을 활용하여 EFK를 구축하여 사용하고 있는데, 아래와 같은 설정을 통해 ElasticSearch에 적재되는 로그들이 매일 다른 Index명을 통해 저장되도록 설정되고 있었다. [OUTPUT] Name es Match * Host Port Logstash_Format True Logstash_Prefix fluent-bit 하지만 적재되고 있는 인덱스에 대해서 특별한 관리가 되지 않고 계속 로그가 쌓이기만 하고 있어서 서버에 과도한 용량이 점유되는 상황이 발생하여, ElasticSearch에서 자체적으로 제공하는 I..
gitlab 컨테이너 backup/restore(백업 및 복원)
gitlab 컨테이너 backup/restore(백업 및 복원)
2021.03.16본 문서는 DockerHub 이미지 gitlab/gitlab-ce:11.11.8-ce.0을 기준으로 작성되었으며 12.2 버전 이상이거나 컨테이너가 아닌 경우 공식 문서를 참고하는 것을 권장한다 gitlab에서 공식 제공하는 컨테이너를 사용하는 경우, gitlab 데이터를 백업 및 복원하는 과정에서 겪은 시행착오를 정리한다. 백업 복원 작업시 다음과 같은 내용들은 유의하는 것이 좋다. 백업 대상 서비스와 복원 대상 서비스의 gitlab 버전을 같은 버전으로 설정해 준다. 마운트를 완료한 상태에서, 순정상태의 gitlab을 한번 기동하여 동작을 확인한다. gitlab 쉘을 통해 복원 명령 수행시 확인 입력을 받는 경우(데이터 삭제시)가 있으므로 가급적으로 컨테이너에 직접 접근하여 명령을 수행한다. 공식 문..
kubernetes shared memory 사이즈 조정
kubernetes shared memory 사이즈 조정
2021.02.08리눅스 IPC는 System V와 POSIX 두가지 표준을 가지고 있는데, System V 모델을 따르는 Shared Memory는 IPC Namespace Isolatior가 제공하는 기능만으로 별도의 작업 없이 사용하는데 큰 문제가 없지만, POSIX 모델의 Shared Memory는 파일 기반으로 관리되는 구조이다. https://www.technovelty.org/linux/shared-memory-on-linux.html 문제는 쿠버네티스에서 POD가 생성되면 기본적으로 64MB사이즈의 shm 공유메모리 공간이 할당되는데, 이 공간만으로는 제약이 걸리는 상황이 많이 발생한다는 점이다. 이러한 현상과 관련하여 몇가지 상황을 이전에도 경험했었고, 본 글을 작성하는 시점에서는 컨테이너 내에서 tens..
CKA 공부 할때 끄적끄적
CKA 공부 할때 끄적끄적
2021.02.08아키텍쳐쿠버네티스 클러스터는 크게 Control Plane 컴포넌트와 Node 컴포넌트 그룹으로 구분지을 수 있습니다. Control Plane을 포함한 모든 클러스터의 구성 요소들은 컨테이너 기반으로 동작하도록 설치가 되고, 기본적으로 간단화하기 위해, 또 보안을 위해 Control Plane 컴포넌트들은 특정 노드에만 올라가고, 일반 사용자 그룹의 컨테이너는 배포가 되지 않도록 설정됩니다. 일반적인 쿠버네티스 클러스터의 아키텍쳐에서는 이렇게 Control Plane 컴포넌트로 구성된 Control Plane 노드와 사용자 컨테이너 배포를 위한 Worker 노드로 구분되어 구성됩니다. 설치 방법별 구성요소 관리 팁kubeadm 사용 배포시Control Plane 노드의 /etc/kubernetes/ma..
kubernetes etcd error message database space exceeded
kubernetes etcd error message database space exceeded
2020.08.23본 문서는 2020년 08월 21일, kubernetes 1.17.9버전, konvoy 1.5버전을 기준으로 작성되었습니다. 에러 발생 정상적으로 동작하던 쿠버네티스 클러스터가 갑자기 새로운 deploy를 생성하지도, 삭제하지도, 수정하지도 못하는 이상증세를 보였습니다. 그리고 다음과 같은 메시지를 띄웠습니다. etcdserver: mvcc: database space exceeded log messages messages로그 등에서도 해당 에러와 함께 이러한 비슷한 구문을 출력하고 많은 에러를 발생시키는 것을 볼 수 있습니다. applying raft message exceeded backend quota compact.go:124] etcd: endpoint ([https://172.16.4.141:..
POSTGRES could not remove file pg wal
POSTGRES could not remove file pg wal
2020.08.23replication 에러 상황에서 postgresql 컨테이너를 강제로 재기동 했더니 저런 로그가 뜨면서 DB접속이 안된다. 당연히 replication도 계속 에러상황이다. 2020-07-07 11:02:55.161 GMT [59] LOG: could not remove file "pg_wal/000000010000002A0000003A": Device or resource busy 2020-07-07 11:02:56.969 GMT [59] LOG: could not remove file "pg_wal/0000000100000004000000DF": Device or resource busy 2020-07-07 11:02:56.969 GMT [303434] ERROR: requested WAL seg..
DCOS cleanup unreachable tasks
DCOS cleanup unreachable tasks
2020.07.01서비스 운영중에 agent노드 한대가 갑자기 중단되는 상황이 발생했다. 노드 재시작 이후 서비스 원상 복구가 완료되었으나, 중단된 노드에서 동작하던 Task들이 DC/OS Dashboard에서 Unreachable로 표시되어 없어지지 않는 현상이 발생했다. 원인 bundle-2020-03-21-1584755074/128.11.1.69_agent/var/log/mesos/mesos-agent.log: I0320 22:49:04.198818 13317 gc.cpp:129] Unscheduling '/var/lib/mesos/slave/slaves/a3195c3b-8e69-4322-902b-13aa3f891e21-S1/frameworks/24879db0-e85c-486c-9dca-63d49354eac6-000..
Docker 컨테이너 로그 용량
Docker 컨테이너 로그 용량
2020.06.30Docker 컨테이너를 많이 사용하다보면, 단시간에 로그가 급격하게 많이 쌓이는 현상이 발생하기도 한다. /var/lib/docker/containers 경로 아래에는 서버에서 동작중인 컨테이너들의 정보들이 기록되는데, 각각의 컨테이너별로 폴더가 생성이 되고, 그 아래에 "~~".log라는 이름으로 로그들이 생성되게 된다. 나는 이미 EFK 스택을 이용해서 ElasticSearch가 모든 로그들을 수집하여 관리하고 있도록 설정해 두었기 때문에, 저 로그들이 많이 쌓여있어도 아무런 의미가 없다. 그리고 멍청하게 시스템에 용량이 부족해져도 계속 로그가 생성되고 쌓이기 때문에, 저 로그들에 대해서 용량 제한과 같은 설정을 주어야 했다. 다행히도, 역시나 갓갓툴인 Docker에서는 이러한 현상에 대한 대비가 다..
apt 패키지 설치시 사용자 상호 작용 방지
apt 패키지 설치시 사용자 상호 작용 방지
2020.05.14dockerfile을 이용하여 패키지를 설치하는데, 아래와 같이 선택을 해야하는 항목들이 여러개 발생하여 작업에 어려움이 있었다. Preconfiguring packages ... Configuring tzdata ------------------ Please select the geographic area in which you live. Subsequent configuration questions will narrow this down by presenting a list of cities, representing the time zones in which they are located. 1. Africa 4. Australia 7. Atlantic 10. Pacific 13. Etc 2. Amer..
docker 컨테이너에서 GPU 사용
docker 컨테이너에서 GPU 사용
2020.05.14본 내용은 2020년 5월 14일에 작성 됨 본 내용은 docker community에디션 19.03.5 버전을 기준으로 작성 됨 예전에 docker에서 gpu를 사용해야 할때, nvidia 그래픽 카드를 지원하는 nvidia-docker 명령어를 따로 설치하여 사용했었는데, docker 진영에서 업데이트를 통해 위의 내용을 흡수하여 반영한 듯 하다. docker 공식 docs의 내용을 확인하면, 이제 별도의 명령어를 설치하지 않고, nvidia-container-runtime 이라는 패키지를 설치하는 것으로 docker 자체 명령어를 사용하여 nvidia-gpu 자원을 컨테이너에서 사용할 수 있도록 지원하는 것으로 보인다. 요구사항 nvidia 그래픽카드가 장착 된 linux 서버 docker 19.0..