분류 전체보기 1173

CronJobs

CronJobs 크론 형식으로 쓰인 반복 일정에 따라 Job을 주기적으로 생성하고 동작시킨다. Linux의 crontab과 유사하게 생각할 수 있다. Job은 생성하면 즉시 실행되지만, CronJob은 생성 시 주기적으로 스케쥴링하여 실행할 수 있다. 생성 방법 yaml 형식의 정의 파일을 작성한 후 create 명령을 이용해 생성한다. apiVersion: batch/v1beta1 kind: CronJob metadata: name: reporting-cron-job spec: # cronjob spec schedule: "*/1 * * * *" jobTemplete: spec: # job spec completions: 3 parallelism: 3 template: spec: # pod spec c..

Job

컨테이너가 제공할 수 있는 워크로드는 다양하다. 웹, 애플리케이션, 데이터베이스와 같이 수동으로 종료할 때까지 장시간 수행하는 종류부터 계산, 이미지 처리, 대규모 데이터 분석, 리포트 생성, 메일 발송 등 특정 작업을 수행한 후 완료해야 하는, 짧은 시간 동안 수행하는 종류 등이 존재한다. 아래와 같이 간단한 계산을 수행하는 컨테이너를 도커로 실행하면, 컨테이너는 실행을 완료하고 종료된다. docker ps ubuntu expr 3 + 2 반면 동일한 기능을 하는 컨테이너를 쿠버네티스 포드에 생성하여 실행하면, 작업을 수행한 뒤 포드가 완료되고 다시 포드를 생성하여 작업을 수행한다. 쿠버네티스는 기본적으로 컨테이너 실행 상태를 유지하는 방향으로 설정된 restartPolicy 값을 참조하여 임계치에 도..

Rolling Updates & Rollbacks in Deployments

Deployment Strategy Recreate strategy 애플리케이션 인스턴스의 기존 버전을 모두 삭제한 뒤, 새로운 버전의 애플리케이션 인스턴스를 생성하여 배포하는 방식 기존 버전을 중단한 후, 새로운 버전이 동작하기 전까지 애플리케이션의 서비스 중단이 발생한다. Rolling Updates 서버를 실제로 서비스할 때 서비스적인 장애와 배포에 있어서 부담감을 최소화하고, 서비스가 중단되지 않도록 배포하는 무중단 배포 방법 중 하나 새 버전을 배포하면서, 새 버전 인스턴스를 하나씩 늘려가고 기존 버전의 인스턴스를 하나식 줄여나가는 방식 새 버전의 인스턴스로 트래픽이 이전되기 전까지 이전 버전과 새 버전의 인스턴스가 동시에 존재할 수 있다는 단점이 있지만, 시스템을 무중단으로 업데이트할 수 있다..

Labels, Selectors and Annotation

Labels & Selectors Labels 각 항목에 붙은 속성 Selectors 항목을 필터링하는 데 사용한다. 레이블과 셀렉터는 항목을 그룹화하는 표준 방법이다. 유튜브 동영상이나 블로그 포스트에 붙인 태그처럼 클래스, 유형, 그룹 등의 기준으로 레이블을 붙이면 기준에 따라 필터링할 수 있다. 쿠버네티스에는 수많은 개체가 있을 수 있기 때문에 유형, 애플리케이션, 기능 등의 다양한 범주를 기준으로 필터링하여 볼 수 있는 방법이 필요하다. 레이블 지정 방법 일반적으로 정의 파일에 지정할 수 있다. apiVersion: v1 kind: Pod metadata: name: simple-webapp labels: app: App1 function: Front-end spec: containers: - n..

Monitor and Debug Applications

쿠버네티스에서 모니터링할 만한 부분은 아래와 같다. 클러스터의 노드 수, 정상 노드 수 => 노드 수준 지표 CPU 사용률, 네트워크, 디스크 사용률 => 성능 지표 포드 수 => 포드 수준 지표 포드 각각의 CPU 사용량, 포드 각각의 메모리 사용량 => 포드 성능 지표 하지만 쿠버네티스가 전반적으로 모든 기능을 갖춘 모니터링 솔루션을 제공하지는 않는다. 하지만 Metrics-Server, Prometheus, Elastic Stack과 같은 오픈 소스나 Datadog 및 Dynatrace 등의 모니터링 솔루션을 사용할 수 있다. Heapster 쿠버네티스 모니터링 및 분석을 가능하게 한 프로젝트 중 하나다. 현재는 더 이상 사용하지 않으며(deprecated), Metrics Server를 사용한다...

The 'INFORMATION_SCHEMA.GLOBAL_STATUS' feature is disabled

MySQL 5.6이 설치된 서버에서 MySQL 5.7이 설치된 서버로 INFORMATION_SCHEMA.GLOBAL_STATUS를 사용하는 쿼리를 날렸다. 하지만 아래와 같은 에러가 발생하면서 쿼리가 실행되지 않았다. ERROR 3167 (HY000): The 'INFORMATION_SCHEMA.GLOBAL_STATUS' feature is disabled; see the documentation for 'show_compatibility_56' show_compatibility_56 서버가 시스템 및 상태 변수 정보를 사용하는 방법을 제어하는 시스템 변수 MySQL 5.7에서 추가되었다. show_compatibility_56 값이 OFF인 경우, MySQL 5.6과의 호환성이 비활성화되면서 SELEC..

Database 2021.08.04

Container Logging

Docker에서 컨테이너의 로그를 확인하는 방법과 비슷하게, 쿠버네티스에서도 아래와 같이 포드의 로그를 확인할 수 있다. 도커 컨테이너 로그 확인 docker logs # -f : follow. 추가되는 로그 실시간 확인 쿠버네티스 포드 로그 확인 kubectl logs # -f : follow. 추가되는 로그 실시간 확인 단, 포드 내에 여러 개의 컨테이너가 동작하고 있다면 로그를 확인할 컨테이너 이름까지 명시해야 한다. 컨테이너명을 명시하지 않으면 이름을 지정하라는 메시지가 출력되며 로그 확인을 실패한다. kubectl logs

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