Dockerfile 작성 예제

Dockerfile 작성할 때 참고용

Run

 

Kubernetes에서 자주 사용하는 커맨드 모음

Kubernetes에서 자주 사용하는 커맨드를 정리했다.

 

zmq.error.ZMQError: Interrupted system call 해결

python 애플리케이션에서 다음 에러가 발생했다.

이 내용이 중요한 것 같다.

zmq.error.ZMQError: Interrupted system call

환경:

  • CentOS release 5.8 (Final)

Centos 6에서는 문제가 없는 앱이었는데, Centos 5에서만 이런 문제가 생겼다. 그래서 trace를 하게 되었다.

app.py는 다음과 같이 하나의 스레드로 0mq 소켓으로 수신 받고 있었다. strace를 하면 아래에 표시된 부분에서 에러가 발생했다.

다음과 같이 두 개의 터미널을 띄워놓고, 순서대로 커맨드를 실행했다.

try로 에러코드를 확인했다.

4번을 표준 errno 시스템 심볼을 확인하니 다음으로 나타났다.

errno.EINTR

Interrupted system call

Centos 6에서는 문제가 발생하지 않았다.

Centos 5에서는 strace 할 때 무엇인가 signal을 보내면서 문제가 발생하는 것으로 보인다. 그래서 우선 예외처리하는 것으로 문제를 해결했다.

 

Python에서 Signal 처리

Python 스크립트가 예기치 않게 종료했을 때, 어떤 signal에 의해 종료되었는지를 확인이 필요한 경우가 있다.  다음 코드를 변형해서 프로그램에 맞게, 적절히 적용할 수 있다.

이 외에도 종료되는 시점에 무엇인가 실행할 필요가 있을 때는 atexit를 사용 할 수 있다.

 

Virtualbox에서 Kubernetes 설치하기

Virtualbox에 두 개의 가상서버로 Kubernetes 설치하는 방법이다.

  • vm 1 : 호스트
  • vm 2 : 노드

두 서버에 kubernetes와 docker와 같은 기본 패키지를 설치한다.

호스트 설정:

호스트 서버 설치

init이 정상적으로 되면, 다른 노드에서 join을 할 수 있는 명령어가 출력되고, 노드 서버에 그대로 입력하면 된다.

노드 서버 설치

Flannel 설정

Virtualbox에서 NAT, Local 두 개의 네트워크 인터페이스를 사용하는데, NAT 네트웍이 첫 번째라서 Flannel이 비정상적으로 동작했다. Local 네트웍(enp0s8)을 사용하도록, 다음 파일을 다운로드 받은 후 수정해야 한다.

https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml

 

Mongo DB 커맨드

기본

백업과 복원

링크