Helm Chart 를 통해 배포할 이미지를 구성했고, 편의를 위해 도커 이미지의 TAG 이름의 정책은 날짜를 사용했다.그런데, TAG 가 latest 일때는 문제가 안되었는데, 20240530 과 같이 날짜로 했을때만 배포가 실패했다.결과부터 말하면, 날짜와 같이 숫자로만 존재하는 값이 float64 타입으로 인지되어 잘못된 값이 바인딩되었던 문제였다. 원인찾기우선 배포를 해보니 아래와 같이 오류가 나고 있었다. 이미지를 찾을수 없다는 상태였고, describe pods 를 햇 더 상세한 메시지를 찾아보니 희안하게 엉뚱한 태그값이 보였다. helm chart 에서 아래와 같은 형식으로 이미지 태그를 values 에서 관리했고 해당 값을 확인했는데의도한 값과 다르게 지수형 표현으로 바인딩이 되었다.ima..
hive 에서는 기본적으로 제공되는 함수들이 많이 존재한다. 이것보다 더 다양한 기능을 만들고 싶다면 관련된 추상클래스를 확장해서 개발하고 빌드해서 add jar 를 해서 함수를 써야하는 번거로움이 존재한다. 근데, 단순히 기본으로 제공하는 함수의 조합을 함수와 유사하게 사용하는 방법이 존재한다. 그게 바로 macro 이다. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF LanguageManual UDF - Apache Hive - Apache Software FoundationHive Operators and User-Defined Functions (UDFs) Case-insensitive All Hive keywords a..
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 가 나올수 있다. 이때는 아래와 같이 시크릿에 도커..
도커 컨테이너로 빌드한 결과를 만들기위해서 jib 를 사용하는데 플러그인을 써서 사용하려는데 오류가 발생되었다. https://plugins.gradle.org/plugin/com.google.cloud.tools.jib/3.3.1 Execution failed for task ':compileKotlin'. > Could not resolve all files for configuration ':compileClasspath'. > Could not find com.google.cloud.tools:jib-gradle-plugin:3.3.1. Required by: project : Possible solution: - Declare repository providing the artifact, see..
도커 이미지로 만들기위해 jib 의존성도 존재하는데, jar 로 빌드하기위해 build 하는데 아래와 같은 오류가 발생된다. 재밌는건, 내 로컬 PC 나 다른 서버에서 빌드할땐 아무런 문제가 없는데 jenkins 서버쪽에서만 나타나는 문제였다. 둘다 jdk 1.8 이었고 다른점은 gradle 버전이 다르다는것이었다. jenkins 쪽은 gradle_6.9.2 이었고, 수동으로 빌드하던 gradle 버전은 7.5 라는것 정도가 달랐다. FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring root project '프로젝트명'. > Could not resolve all artifacts for co..