전체 글 1156

Liveness Probe

개요 Docker는 어떠한 이유로 프로세스가 종료되면 컨테이너도 종료된다. 종료된 컨테이너는 수동으로 동작시키거나 새 컨테이너를 생성시킬 때까지 비활성상태가 유지되고, 사용자에게 서비스를 제공하지 못한다. Kubernetes는 애플리케이션이 충돌할 때마다 서비스를 복구하기 위해 컨테이너를 재시작하려고 시도한다. 재시작 횟수는 get pods 명령으로 확인할 수 있다. (RESTART 부분) kubectl get pods 컨테이너가 정상인데 애플리케이션이 동작하지 않는 상태인 경우, 쿠버네티스는 컨테이너가 정상적으로 동작하고 있기 때문에 애플리케이션도 정상적으로 동작하는 상태인 것으로 간주한다. 하지만 실제로 서비스는 사용자에게 제공되지 않는 상태이기 때문에 컨테이너를 재시작하거나, 삭제 후 새 컨테이너를..

VIM - 여러 줄 주석 처리하기

vi Emacs와 함께 유닉스 환경에서 많이 쓰이는 문서 편집기 한 화면을 편집하는 비주얼 에디터(visual editor) VIM Vi IMproved(향상된 VI). 현재 대부분의 리눅스 시스템에 표준 모델로 들어감 보통 vi를 쳐도 vim을 사용하게끔 alias가 잡혀있을 것이다. vim으로 여러 줄을 한꺼번에 편집할 때는 다음과 같이 하면 된다. 1. VISUAL BLOCK 모드로 진입 CTRL + V를 누르면 된다. 2. 커서를 이동해 블록 지정 3. Shift + i를 누르고 내용 편집 4. ESC로 편집 모드 종료 잡았던 블록만큼 한꺼번에 주석처리 된 것을 확인할 수 있다.

Linux 2021.08.01

[CentOS 7] You () are not allowed to use this program (crontab) - 1

에러 해결 crontab을 사용하려고 할 때 간혹 아래 사진과 같은 메시지가 노출되며 사용 불가할 때가 있다. 이 경우에는 아래 경로의 설정 파일을 이용하여 사용자의 crontab 사용 권한을 제어하고 있는 상태일 수 있다. /etc/cron.allow /etc/cron.deny 서버에 /etc/cron.allow라는 파일이 존재하면, root 권한으로 해당 파일에 크론탭을 사용할 계정명을 추가하고 저장한다. 이후 사용자가 크론탭을 사용할 수 있는지 확인해본다. 크론 서비스를 재시작할 필요는 없다. 각 파일 유무에 따른 crontab 사용 제한 /etc/cron.deny O /etc/cron.deny X /etc/cron.allow O /etc/cron.allow에 등록된 계정만 허용 /etc/cron...

Linux 2021.07.31

proxy: Unsupported authorisation protocol

원격 서버에서 크롬 브라우저와 같이 GUI 프로그램을 실행했을 때 아래와 같은 에러를 만날 수 있다. proxy: Unsupported authorisation protocol 프로토콜 사용이 안 된다는 말인데, 기본적으로 원격 GUI 실행은 X Forwarding, 즉 실행에 필요한 프로토콜이 SSH를 통해 포워딩된다. 확인할 다른 부분도 있겠지만 /etc/ssh/sshd_config 파일부터 확인해보도록 한다. 아래의 설정이 no로 되어있지는 않은지, X11Forwarding yes 요청한 사용자가 ssh를 사용하도록 허용되어 있는지 확인하도록 한다. 간단한 배경 지식 Linux에서는 X11이라는 디스플레이 서버를 이용하여 GUI(Graphical User Interface) 환경을 그린다. 크롬 브..

Linux 2021.07.30

ssh - 특정 사용자 접속 제한

SSH는 기본적으로 모든 사용자가 사용할 수 있다. 하지만 필요하다면 특정 사용자나 그룹만 접속할 수 있도록 허용하거나 반대로 접속을 제한할 수 있다. 설정 파일의 경로는 일반적으로 아래와 같다. /etc/ssh/sshd_config # 편집 vim /etc/ssh/sshd_config 시스템 설정 파일이므로 편집에는 root 권한이 필요하다. AllowUsers 접속할 사용자를 지정한다. 이 경우 다른 사용자는 ssh 접속이 불가능하게 된다. AllowUsers # 예시 AllowUsers test_user 공백으로 사용자를 구분하여 여러 사용자를 한꺼번에 허용할 수 있다. 또한 사용자가 특정 호스트에서만 접속할 수 있도록 아래와 같이 ip를 제한할 수도 있다. AllowUsers @ # 예시 Allo..

Linux 2021.07.29

포드 상태와 readinessProbe

포드 상태 1. Pending 포드가 처음 생성된 상태다. 포드 배치 여부를 파악하며, 쿠버네티스가 포드를 배치할 노드를 찾지 못하면 Pending 상태를 유지한다. 아래 명령으로 Pending 상태가 유지되는 원인을 확인할 수 있다. kubectl describe pod 2. ContainerCreating 포드가 스케쥴링되어서 이미지를 pull하고, 컨테이너를 시작하는 상태다. 3. Running 포드 내 모든 컨테이너를 시작하여 포드가 실행 중인 상태다. 프로그램이 완료되거나 종료될 때까지 상태를 유지한다. Pod 상태는 아래와 같이 get pods 명령으로 확인할 수 있다. kubectl get pods Pod Conditions TRUE/FALSE 값으로 포드의 상태를 알려주는 배열 Type S..

Multi-Container Pods

개요 큰 단일 애플리케이션을 마이크로서비스라는 하위 요소로 분리하는 개념은 독립적이고, 작고, 다시 사용할 수 있는 코드 집합을 개발하고 배포하는 것을 가능하게 한다. 즉, 전체 애플리케이션을 수정하는 대신 필요에 따라 각 서비스를 수정하고, 축소/확대하는 것이 가능하다. 다중 컨테이너 포드 온전한 서비스를 동작시키기 위해 여러 기능이 함께 동작해야 하는 경우, 다중 컨테이너 포드를 이용할 수 있다. 포드 내의 컨테이너는 수명주기가 같고, 같은 네트워크에 존재하기 때문에 서로를 localhost로 참조할 수 있으며, 같은 볼륨에 접근할 수 있기 때문이다. 포드 정의 파일의 spec 섹션에서 containers 섹션이 배열인 이유가 바로, 멀티컨테이너 포드를 사용할 수 있게끔 하기 위해서다. apiVers..

sed - 쉘에서 파일 내용 일부 삭제

sed; stream editor 문자열을 필터링하고 변환하는 스트림 편집기 디스크 사용량이 너무 많아서 확인해보니, 로그 파일 하나가 20GB, 30GB가 넘어가고 있었다. 확인해보니 일정 시간 간격으로 로그 파일을 생성하는 게 아니라, 하나의 파일에 로그를 계속 쌓고 있는 상황이다. 정리는 하되 최신 파일 내용을 남겨두어야 하는데 용량이 너무 커서 에디터로 열리지도 않는다. ……도대체 누가 왜 이렇게 한 걸까? 아무튼 그게 급한 게 아니고, 에디터로 편집하는 게 아니라 명령어로 파일 처음부터 어디까지만 삭제할 수는 없을까? 다급하게 찾아보았더니 다행히 sed 명령을 사용하는 방법이 있었다. sed -i '1, 10000d' # -i : 출력 결과를 원본 파일에 저장 sed 명령은 기본적으로 원본 파일..

Linux 2021.07.26

du - 디렉터리 용량 확인

du; Disk Usage 지정된 디렉터리의 디스크 사용량 표시 디스크 정리할 때 디스크 사용량이 많은 디렉터리와 파일을 확인할 때 사용한다. du [OPTION] [DIRECTORY|FILE] # 예시 du -sh ./* # -s : summarize. 디렉터리 내의 모든 파일과 서브 디렉터리의 용량을 합쳐서 표시 # -h : human-readable. 사람이 읽기 쉬운 단위로 표시 보통 현재 디렉터리의 하위 디렉터리 용량을 확인하면서 어느 부분이 원인인지 찾아들어가는 편이다. 모든 디렉터리를 지정하면 출력도 길고 시간도 오래 걸릴 수 있어서 추천하지 않는다. 용량 기준으로 내림차순 정렬 du -sh /PATH | sort -nr

Linux 2021.07.25

다른 두 레포지터리 병합

살다 보면 같은 프로젝트에 대해 뭔가 문제가 생겨서, 아니면 단순 이동 목적으로 새로 레포지터리를 파는 일이 발생하기 마련이다. 하지만 추후 히스토리를 관리할 때에 보면, 같은 프로젝트지만 아예 별개의 레포지터리로 저장되어 있어 병합해야 하는 경우가 있을 수 있다. 그럴 때 아래의 절차 따르면 별개의 저장소를 커밋 히스토리까지 병합할 수 있다. 방법 1. 로컬 상에서 작업을 진행할 프로젝트로 이동한다. 2. 병합할 원격 저장소 추가 git remote add # 예시 git remote add tomerge https://github.com/remote/url.git 3. 원격 저장소에 저장된 커밋 기록 fetch git fetch # 예시 git fetch tomerge 병합할 원격 저장소의 커밋 로그..

Git | GitLab 2021.07.24