Kubernetes/삽질 13

[k8s] metrics-server 설치 후 Metrics API not available 에러 발생 시

현상 Kubernetes 클러스터에서 top 명령어를 사용할 수 있도록 아래의 명령어로 metrics-server를 설치하였다. kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml 리소스 배포는 정상적으로 완료했으나 여전히 top 명령어를 사용할 수 없는 상태다. 원인 파악하고 문제를 해결해보자. 원인 파악 확인해 보니 metrics-server pod가 정상적인 Running 상태로 전환되지 않고 있었다. kubectl get pods -n kube-system metrics-server metrics-server pod의 이벤트를 확인해보니 readinessPr..

Kubernetes/삽질 2024.03.29

[k8s/Trino] Unrecognized VM option 'UseBiasedLocking' 현상

현상 AWS EKS환경에서 Apache Superset을 통해 AWS S3 데이터를 쿼리 하기 위해 Trino, Hive Metastore를 설치해 사용 중인데, 어느 날부터 Trino Worker Pod 1개에 아래와 같은 에러 로그와 함께 동작하지 않았다. 원인을 파악하고 해결한 방법을 적어둔다. 원인 에러 로그에서 확인되는 VM 옵션 UseBiasedLocking은 멀티스레딩 성능 관련 옵션으로 Java 5에 추가되고 Java 15에서 deprecated 된 후, 삭제되었다. 즉, 새로운 trino-worker pod가 동작하면서 사용하는 Java 버전에서 UseBiasedLocking 옵션이 지원되지 않아 서비스가 동작하지 않았다. trino 버전에 따라 Java 버전을 고정해두지는 않은 모양이다..

Kubernetes/삽질 2024.01.03

[k8s/helm] JupyterHub kubespawner 사용자 별 volume 설정

개요 최근 kubernetes 버전을 1.21에서 1.24로 업그레이드를 진행하게 되면서 쿠버네티스 환경에서 동작하고 있던 helm chart의 업그레이드가 필요해졌다. 관련해서 업그레이드가 필요한 helm chart 중 하나가 JupyterHub였는데, 작업 중 singleuser notebook server 스폰 시 volume 설정 방법을 변경하게 되어 적어둔다. 우선 jupyterhub는 다음과 같은 방식으로 사용 중이다. - kubernetes 환경에서 동작한다. - singleuser server를 spawn 하여 사용한다. - spawn 할 수 있는 여러 profile을 지원한다. - singleuser server는 사용자 별 홈 디렉터리와 nas mount가 필요하다. 기존 설정 기존 환..

Kubernetes/삽질 2023.05.12

[k8s/kube-prometheus-stack] node_exporter pending 현상

현상 쿠버네티스 클러스터 내 리소스를 모니터링하기 위해 kube-prometheus-stack helm chart로 Grafana와 Prometheus를 설치해서 사용하고 있다. 다만 설치한 helm-release의 설정 변경이 필요해, 운영 환경에 적용하기 전에 테스트를 하고자 별도의 네임스페이스에 kube-prometheus-stack chart를 다른 helm-release로 설치했다. helm-release는 정상적으로 설치되었으나 다음과 같이 node_export pod가 pending 상태로 머물러 있는 것을 확인했다. 원인 node-exporter를 describe 명령으로 살펴보면 Events 항목에 아래와 같은 메시지를 확인할 수 있다. node(s) didn't have free por..

Kubernetes/삽질 2023.03.12

[dcgm-exporter] Grafana/Prometheus no data 현상

현상 관리하던 쿠버네티스 클러스터에서 Grafana/Prometheus 서비스를 위한 kube-prometheus-stack helm chart를 설치하고 GPU 서버 모니터링을 위해 dcgm-exporter를 함께 설치해서 사용하고 있었다. 다만 최근 몇 가지 이슈가 있어 기존의 kube-prometheus-stack을 완전히 삭제하고 재설치했더니 dcgm-exporter 대시보드에 어떤 메트릭도 보이지 않았다. 프로메테우스에서 관련 메트릭을 수집하는지 확인해봤지만, 마찬가지로 dcgm-exporter가 내보내는 메트릭은 수집되지 않는 상태였다. 환경 환경은 아래와 같다. kubeadm으로 구성한 온프레미스 쿠버네티스 클러스터 kubernetes version 1.17.2 ~ 1.19.0 helm v3..

Kubernetes/삽질 2022.07.13

[k8s] Error: unable to build kubernetes objects from release manifest: 에러

현상 2022.07.11 - [k8s] Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict 에러 글에서, 설치했던 helm chart로 설치한 release를 완전히 삭제하고 재설치하려고 했더니 아래와 같은 에러 메시지가 발생하면서 설치에 실패했다. helm install prometheus-operator prometheus-community/kube-prometheus-stack --dry-run Error: unable to build kubernetes objects from release manifest: [unable to..

Kubernetes/삽질 2022.07.12

[k8s] Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict 에러

현상 관리하던 쿠버네티스 클러스터에는 리소스 모니터링을 위한 그라파나/프로메테우스가 kube-prometheus-stack helm chart로 설치되어 있다. 다만 persistence 설정 변경, ingress 설정 변경, 관리 용이성을 위한 helm-operator 적용 등을 위해 설치한 release를 삭제 후 재설치하고자 했다. 그러나 release 삭제 후 재설치하려고 했더니, 조금 더 정확히 따져서 다음과 같은 과정 후 helm delete kubectl apply -f helmRelease.yaml kubectl delete hr 재설치 시 아래와 같은 에러가 발생하면서 설치에 실패했다. Error: rendered manifests contain a resource that already..

Kubernetes/삽질 2022.07.11

[Jenkins] HelmRelease로 설치 시, curl: (60) SSL certificate problem: certificate has expired 에러

간단한 배경 지식(?) HelmRelease Helm에서 release란 chart를 이용해 애플리케이션을 설치된 결과를 말한다. 그리고 release를 보다 더 편리하게 관리하기 위해 쿠버네티스 리소스처럼 취급하기 위한 시도가 있었고, 그 결과로 HelmRelease라는 리소스로 release를 관리할 수 있게 되었다. 참고 : https://coffeewhale.com/kubernetes/gitops/helm/2020/05/13/helm-operator/ Init Container (초기화 컨테이너) Pod의 Runtime Container가 실행되기 전에 실행되는 컨테이너 이미지에 포함되지 않는 유틸리티, 설정 스크립트 등을 포함할 수 있다. Pod는 하나 이상의 Init Container를 가질 ..

Kubernetes/삽질 2022.03.07

[calico-node 0/1 running] calico/node is not ready: BIRD is not ready: BGP not established with 10.0.0.1

현상 쿠버네티스 클러스터 환경에서 동작하고 있는 서비스가 정상적으로 동작하고 있지 않아 확인하던 중, 포드 컨테이너에서 외부로 나가야 하는 트래픽이 막혀 있는 것이 원인이라는 것을 알게 되었다. 쿠버네티스 클러스터 환경은 온 프레미스에서 kubeadm을 이용해 구성되었으며, 네트워크 플러그인으로는 calico를 사용하고 있다. calico가 어떤 방식으로 쿠버네티스 환경에서 네트워크를 설정하는지, 관련해서는 어떤 조건이 필요한지는 잘 모르겠으나…… 일단은 kube-system namespace에서 각 노드에 배포된 calico-node pod가 정상적으로 동작해야 하는 것으로 보인다. 확인해보니, 최근 서버 재부팅 후 일부 calico-node pod가 정상적으로 동작하지 않고 있었다. 그리고 정상적이지..

Kubernetes/삽질 2022.03.06

0/1 nodes are available: 1 Insufficient nvidia.com/gpu

현상 아래 매니페스 파일과 같이 nvidia.com/gpu 리소스를 필요로 하는 pod 생성 시 에러 메세지와 함께 포드가 스케쥴링되지 않았다. apiVersion: v1 kind: Pod metadata: name: gpu-pod spec: containers: - name: nginx image: nginx resources: limits: nvidia.com/gpu: 1 # requesting 1 GPU 에러 메세지 확인 $ kubectl describe pod [.. 생략 ..] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 3s (x23 over 3m) default-schedu..

Kubernetes/삽질 2022.02.25
1 2