도커 12

[Kubernetes] 깔끔하게 kubeadm reset 하기

Prologue 클러스터를 잘못 구축했을 때, 이거 저거 생각할 필요 없이 클러스터를 날려버리고 싶었습니다. 단순히 kubeadm을 이용해 배포하는 단계부터 다시 시작하고 싶었기 때문입니다. 예전에 찾아둔 방법인데, 이제야 공유합니다. kubeadm을 이용해 클러스터를 구축했을 때 사용할 수 있는 방법이니 참고해주세요! Docker Reset # Docker 초기화 $ docker rm -f `docker ps -aq` $ docker volume rm `docker volume ls -q` $ sudo umount /var/lib/docker/volumes $ sudo rm -rf /var/lib/docker/ $ sudo systemctl restart docker kubeadm Reset # kub..

IT/Kubernetes 2021.06.22

[containerd] containerd를 CRI 런타임으로 하는 Kubernetes 클러스터를 구축해보자

Prologue 사내에서 테스트 용도로 사용할 쿠버네티스 클러스터가 필요해서 급하게 VM을 만들고 구축을 하려던 참이었습니다. 이전에 올렸던 글에서 소개드린 것처럼, 1.20 릴리즈부터는 Docker가 Deprecated 되었다는 것이 생각나서, 이참에 containerd로 클러스터를 구축해보자는 생각이 들어 이렇게 진행하게 되었습니다. 본 포스트에서는 Ubuntu 18.04 위에서 containerd를 설치합니다. Kubernetes 클러스터 구축 과정은 별도의 포스트로 다룰 예정이니 참고해주세요! 그리 어렵지 않으니 쉽게 따라하실 수 있습니다. Kubernetes 클러스터 구축 과정을 다룬 포스트가 올라왔습니다. 여기를 참조해주세요! containerd 설치를 위한 사전 작업 우선 containerd..

IT/containerd 2021.06.19

[DevOps] Jenkins Pipeline이 종료되지 않는 경우

Prologue 평화롭게 파이프라인 구성을 위한 테스팅을 진행하던 중, 갑자기 파이프라인이 종료되지 않는 문제가 발생했습니다. 스택 오버 플로우를 찾아보니, "Script Console"에서 명령줄을 넣어 실행하면 종료된다고 합니다. 하지만 그리 쉽게 문제가 해결되지 않았고, 좀 더 내려보다 보니, 직접 파이프라인 빌드 디렉터리를 삭제하고 Jenkins를 재시작하는 방법을 소개하는 답변이 있었습니다. 제 경우에는 이 해결 방법이 딱 맞아서, 이번 포스트에서는 이 내용을 소개하고자 합니다. 해결 방법 우선 Jenkins 서버에 SSH로 접속합니다. 만약 Docker 등으로 실행한 경우라면, docker exec 명령어 등을 사용해서 붙습니다. 만약 /bin/bash 또는 sh가 제공되지 않는다면, 아래 명..

IT/DevOps 2021.06.14

[Docker] 도커 재시작 없이 CA 인증서만 업데이트하는 방법

Prologue 그동안 사내에서 Private Registry를 구축해서 사용하다보니, HTTPS 인증 때문에 인증서 파일을 업데이트하고 도커 데몬을 재시작해주어야 하는 경우가 종종 있었습니다. 만약에 도커 데몬을 재시작하지 않은 상태로 Login을 시도하면 아래와 같은 에러가 발생합니다. Error response from daemon: Get https://192.168.1.1/v1/users/: x509: certificate signed by unknown authority하지만 매우 중요한 프로세스가 운용되고 있는 노드에 대해선 도커 데몬을 재시작하는 것이 상당히 부담이 되었습니다. 경험상 도커를 재시작하고나서 정상적으로 실행되지 않는 프로세스들이 몇몇 있었기 때문입니다. 때문에 Private ..

IT/Docker 2021.05.28

[containerd] 인증서 등록에도 불구하고 private registry로부터 image pull이 안 될 경우

문제 상황 새로운 Private Registry (Harbor)를 구축하고 CA 인증서를 호스트에 등록 및 config.toml 파일까지 업데이트 해주었음에도 불구하고 Image Pull 작업을 요청하면 401 에러가 발생하였습니다. config.toml 파일을 어떻게 업데이트하여야 하는지는 추후 포스트에서 다루겠습니다. 임시 해결 방법 아래 명령어처럼 image를 가져올 때 --user USERID:PASSWORD 인자를 추가로 넘겨 주면, 정상적으로 이미지를 가져옵니다. 하지만 근본적인 해결책은 될 수 없으므로 해당 문제를 완전히 해결할 수 있는 방법을 찾으면 업데이트 하도록 하겠습니다. $ sudo ctr images pull --user USERID:PASSWORD IMAGE_PATH 마무리 여기..

IT/containerd 2021.05.26

[Kubernetes] Kubernetes와 Docker (Kubernetes v1.20)

Kubernetes가 v1.20 업데이트 이후로 Docker를 Deprecate 하기로 결정했다. (출처 : https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#deprecation) Deprecate Dockershim #94624 정확히 말하자면, Kubelet에서 Dockershim의 지원이 Deprecation 된 것이다. Kubernetes는 CRI (Container Runtime Interface) 인터페이스를 통해 컨테이너 런타임과 통신한다. CRI는 컨테이너 런타임과의 인터페이스 표준(API)을 정의한 것으로, Kubernetes CRI를 지원하면, 엔드 유저 입장에선 지금까지 써오던 Kubern..

IT/Kubernetes 2020.12.22

[Wiki] Dockerfile(도커파일)의 명령어 알아보기

Dockerfile(도커파일)의 명령어 알아보기 Dockerfile은 코드의 형태로 인프라 구성 방법을 지정해둔 파일이다. 이를 이용해 이미지에 추가적인 미들웨어나 애플리케이션을 설치하여 배포할 수 있다. 이 글에서는 Dockerfile의 명령어를 알아본다. Dockerfile의 기본형식 1COMMAND VALUEcs COMMAND에는 아래의 명령어 중에 하나를 선택하여 지정한다. COMMAND에는 다음과 같은 명령어가 지정될 수 있다. ffCOMMAND 설명 COMMAND 설명 FROM 베이스 이미지 지정 ADD 파일 추가 MAINTAINER 작성자 지정 COPY 파일 복사 RUN 명령어 실행 VOLUME 볼륨 마운트 CMD 데몬 실행 ENTRYPOINT 데몬 실행 LABEL 라벨 설정 USER 사용자..

IT/IT WIKI 2017.10.24

[Wiki] 다수의 도커 컨테이너 로그를 호스트에서 보는 법

다수의 도커 컨테이너 로그를 호스트에서 보는 법도커로 많은 컨테이너를 생성해서 이용하는 경우, 각 컨테이너 별 로그를 하나하나 확인해야 하는 불편함이 있다. 이런 불편함을 해결하는 방법을 소개한다. 1docker run --log-driver syslog ...cs docker 컨테이너를 생성할 때, 위처럼 --log-driver 옵션에서 syslog로 로그 방식을 변경해주는 경우, 호스트에서 다음의 명령어로 모든 컨테이너들의 로그를 확인할 수 있다. 1tail -f /var/log/messagescs 문제점이 있다면, --log-driver 옵션을 주어 설정한 경우에는 docker logs ~ 명령어로 로그를 확인할 수 없다.

IT/IT WIKI 2017.10.21

[Wiki] httpd start시 "Set the 'ServerName' directive globally to suppress this message" 오류 발생하는 경우 해결법

'httpd start' 시, Set the 'ServerName' directive globally to suppress this message 오류 발생하는 경우 해결법httpd를 인스톨하고, httpd start 명령어를 수행했을 때, "Set the 'ServerName' directive globally to suppress this message" 오류가 발생하는 경우가 있다. 생각보다 간단한 방법이었다. httpd의 설정 파일, httpd.conf 파일을 보면, 위 오류에서 나타난 것처럼 'ServerName'이 주석 처리 되어 있다. 따라서, 해당 줄의 주석처리를 해제하고, 일반적인 경우 아래와 같이 ServerName 우측에 localhost를 입력해주면 된다. $ vi /etc/http..

IT/IT WIKI 2017.10.20

[Wiki] Docker(도커) 컨테이너 내부의 로그 보기(log)

Docker(도커) 컨테이너 내부의 로그 보기Docker로 생성한 컨테이너에 attach하지 않고서도 내부의 로그를 살펴볼 수 있는 방법을 소개한다. 1234# 로그를 보고자하는 컨테이너의 ID를 CONT_ID라고 할 때,# shell에서 다음과 같이 입력한다. docker logs -t CONT_IDcs docker logs -t 명령어 다음에 넣어주는 CONT_ID는 보려고 하는 컨테이너의 ID 값을 넣어주면 된다.

IT/IT WIKI 2017.10.19