kubernetes 환경에서 최초 pod 를 구성할때 동작여부나 로그를 확인하기위해서 exec 명령을 이용해 POD 안에 들어가서 확인해야 하는 경우가 많다. 나 같은 경우는 airflow 의 pod_template 을 구성하고 그 안에서 하둡 연동을 하는데 잘 되는지 확인하기위한 용도로 1시간 정도 sleep 을 걸어두고 안에 들어가서 확인하는걸 종종했는데... 무한루프로 걸면 리소스를 점유하고 있을거라 1시간 정도로 짧게 잡았더니 Completed 되어있는데... 이걸 다시 실행시키고 다시 exe 명령으로 접근하고 싶은 상황이었다. POD 재실행 방법기본적으로 kubectl 명령에서 pod 를 재실행하는 명령어는 없다고 한다.다만, 아래와 같이 pod 의 yaml 을 출력해서 이걸 기반으로 다시 띄우..
kinit 을 통해서 커버로스 인증을 했고, hadoop 의 ls 명령으로 hdfs 파일 목록도 조회가 가능했는데...특이하게 kubernetes pod 안에서 beeline 을 통해 호출하면 다음과 같은 오류가 발생했다. 동일한 방법으로 물리서버에서 테스트하면 잘 되는데, kubernetes 환경에서 뜬 pod 안에서만 문제가 되는 상황이었다.$ beeline -u "jdbc:hive2://my-hadoop-002.com:10000/default;principal=hive/_HOST@MYHOME.COM" -e 'show databases'...24/04/30 10:52:52 [main]: ERROR transport.TSaslTransport: SASL negotiation failurejavax.se..
docker 에서 테스트할때는 이미지를 pull 하거나 실행될때 바로 화면에 상황이 출력되다보니 에러가 났을때 상대적으로 추적이 쉬웠던거 같다. 하지만 kubernetes 환경에서는 케이스별로 확인 방법이 다르다. ContainerCreating 일때 확인방법kubectl get pods 명령어로 ContainerCreateing 에서 Running 으로 넘어가지 않았을때는 log 확인이 안되다보니 좀 답답할때가 있다. 참고로 이 메시지에서 실패가 난다면 보통은 docker image 를 가져오는 로그인 정보가 잘못되었을 확률이 크다.$ kubectl get podsNAME READY STATUS RESTARTS ..
private docker registry 를 사용할 경우 로그인 정보를 넣어줘야한다. docker 라면 docker login 명령으로 해결이 가능하다. 그런데 쿠버네티스 환경에서는 어떻게 로그인 정보를 넣어야 하는지 기억이 안날때가 있다. $ docker login Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. Username: 아이디 Password: 암호 Login Succeeded! 해결방법 쿠버네티스에서는 시크릿에 로그인 정보를 등록해서 관리가 가능하다. pod 혹은 deployment 를 생성하고 로그인 정보가 없으면 ImagePullBackOff 가 나올수 있다. 이때는 아래와 같이 시크릿에 도커..
이미지를 입맛에 맞게 사용할때, 이미지를 새로 빌드하지 않고 실행시점에 ENTRYPOINT 를 엎어써서 사용하는게 유용하다. 이때, ENTRYPOINT 와 CMD 의 특징을 이해하고 작업하면 도움이 되므로 차이를 모른다면 아래글을 읽고 테스트해보자 2022.09.21 - [docker & kube] - [Docker] RUN, ENTRYPOINT, CMD 차이 이해하기 로컬에서 인사말 출력하기 이해를 돕기위해 아래와 같은 동작을 하는 쉘스크립트를 도커에서 어떻게 구성할지에 대해 접근해보자. 아래와 같은 쉘스크립트 동작을 도커에서 동작하게 한다고 가정한다. % cat /home1/user/hello.sh #!/bin/bash for name in $@ do echo "안녕하세요! 님 반갑습니다." done..
도커를 사용하다보면 사용하는 용량이 점점 커지면서 100% 채우면서 서버 로그인도 안되는 상황이 발생되기도 한다. 이럴때 할수 있는 조치는 크게 2가지가 있다. 1. 미사용 리소스 삭제하기 centos 기준 docker 의 기본 경로는 "/var/lib/docker" 인데, 이 하위 폴더에 다양한 임시파일이나 이미지 컨테이너 관련 파일들이 누적되면서 용량이 커지는 문제가 있다. 해당 폴더의 용량을 찾아보면 overlay2 폴더의 용량이 거대해지는 특징이 있는데 이런 경우 아래와 같이 명령어를 입력하면 미사용 리소스를 삭제하면서 용량이 확보된다. overay2 관련 내용이 궁금하면 아래 링크를 좀더 읽어보자. https://tech.kakaoenterprise.com/171 [컨테이너 인터널 #2] 컨테이..
windows 용 도커데스크탑을 설치하고, 명령어 프롬포트로 간단히 docker 프로세스 상태 확인 명령어를 날려보면 아래와 같은 오류가 발생한다. 이 상태는 docker 를 사용하기위한 세팅이 마무리 안되었기 때문이다. C:\Users\gildong>docker ps error during connect: This error may indicate that the docker daemon is not running.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json": open //./pipe/docker_engine: The system cannot find the file specified. 상황파악하기 작업표시줄에 도커아이콘이 보..
Docker 기반으로 실행되는 기능을 사용할때 꼭 알아야할 간단한 명령어를 알아야 활용하기 좋다. 가장 기초적인 명령어를 알아보자 1. 이미지 목록확인 로컬에 받아진 도커 이미지를 확인하는 명령어이다. 처음 설치했다면 아래와 같이 아무것도 조회가 안된다. $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE 2. 이미지 가져오기 (pull) docker-registry 에 올려진 도커 컨테이너 이미지를 로컬로 가져오는 명령어이다. 기본적으로는 docker hub 의 이미지를 사용하기 때문에, 여기서 가져올땐 "이미지:버전" 만 기입하지만, 별도의 private docker reigistry 를 사용할때는 도메인이나 아이피를 지정해야하는 차이가 다르다. $ dock..