k8s 134

[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

[k8s] drain

drain kubectl drain 영어로 배수구, 물 빠짐 등의 의미로, 노드에 존재하는 모든 Pod를 제거하고, Pod를 다른 노드에 스케쥴링하도록 한다. drain 한 node는 cordon을 실행한 것과 동일하게 SchedulingDisabled 상태가 되기 때문에 신규 Pod를 스케쥴링하지 않는다. drain은 커널 업그레이드, 하드웨어 유지 보수 등의 노드 관리를 위해 노드에서 포드를 안전하게 제거할 때 사용한다. 동작 순서 1. 새 포드가 노드에 스케쥴링되지 않도록 한다. (cordon) 2. 노드에서 실행 중이던 포드를 삭제한다. 이 때 Daemonset으로 실행된 포드가 존재하면 drain에 실패한다. 3. ReplicationController, ReplicaSet, Job, Daemo..

Kubernetes 2022.06.23

[Prometheus] 데이터 보관 기간 설정

Prometheus의 데이터 보관기간을 수정하려고 한다. 방법을 정리해둔다. Prometheus 저장소 구성 설정 Prometheus의 데이터 저장소를 구성하는 설정 중 중요한 것은 아래와 같다. --storage.tsdb.path : Prometheus의 데이터베이스 경로. 기본값은 /data이다. --storage.tsdb.retention.time : 데이터 보관기간. 기본값은 15일이다. --storage.tsdb.retention.size : 유지할 스토리지 블록의 최대 바이트 수. 오래된 데이터부터 제거하며 기본값은 0 또는 disable이다. --storage.tsdb.retention : storage.tsdb.retention.time에 의해 Deprecated 되었다. --storage..

Kubernetes 2022.06.05

[helm] Chart 생성/배포

kubernetes 클러스터 환경에서 나만의 Helm Chart를 이용해 서비스를 배포하고자 한다. Helm Chart를 직접 작성 후 패키징하여 배포해보자. Helm Chart 생성 배포할 Helm Chart를 생성한다. helm create # 예시 helm create passwd_test Chart는 현재 위치한 디렉터리에 Chart 이름과 같은 경로로 생성된다. 디렉터리 구조는 아래와 같다. chart_name/ Chart.yaml # 차트에 대한 정보를 가진 YAML 파일 LICENSE # 옵션: 차트의 라이센스 정보를 가진 텍스트 파일 README.md # 옵션: README 파일 values.yaml # 차트에 대한 기본 환경설정 값들 values.schema.json # 옵션: value..

Kubernetes 2022.06.02

[Helm] kube-prometheus-stack / Grafana Persistence 활성화

쿠버네티스 클러스터 리소스의 모니터링 목적으로 Grafana와 Prometheus를 설치해서 사용하고 있다. 다만, 서버 장애 또는 업그레이드 시 데이터가 휘발되고 있어 확인해보니 persistence 설정이 되어 있지 않았다. 이 글에서는 kube-prometheus-stack helm chart를 이용해 Grafana Persistence 활성화하는 방법을 정리한다. kube-prometheus-stack 클러스터에 Grafana와 Prometheus를 한 번에 설치할 수 있는 helm chart 기존에는 prometheus-operator라는 이름으로 사용했다. Github : kube-prometheus-stack 설치 방법 설치 방법을 간단히 정리한다. 1. helm chart 저장소 추가 he..

Grafana 2022.05.31

[helm] 업그레이드, 롤백

Helm Chart/Release로 설치한 애플리케이션의 변경하려고 한다. 업그레이드 과정에 필요한 명령어를 정리해둔다. 업그레이드 업그레이드할 release의 이름, 사용할 chart, 필요하다면 values.yaml을 지정한다. helm upgrade [flags] # -f : yaml 파일 또는 url로 values 지정. 복수 설정 가능 # -n : helm release를 생성한 네임스페이스 # --dry-run : 업그레이드 시뮬레이션. 실제 반영하지 않음 # 예시 helm upgrade -f values.yaml -n notebook docs /path/chart 업그레이드 성공 시 이름과 네임스페이스, 버전, template/NOTES.txt의 내용이 출력된다. 업그레이드 시뮬레이션 실제로..

Kubernetes 2022.05.29

[kubeadm] 쿠버네티스 인증서 수동 갱신

개요 kubernetes 인증서는 1년의 유효기간을 갖고 있으므로 매년 갱신이 필요하다. 이 글에서는 kubeadm으로 구성된 쿠버네티스 클러스터 인증서 갱신 방법을 정리해둔다. 인증서 갱신 방법 1. 인증서 유효기한 확인 kubeadm alpha certs check-expiration # 또는 kubeadm certs check-expiration 2022년 4월 10일에 대부분의 인증서가 만료되는 것을 확인할 수 있다. 2. 인증서 등 설정 백업 인증서 갱신이 원활하지 않을 경우를 대비하여 원하는 경로에 설정 파일 등을 백업해둔다. 실제 인증서 관련 디렉터리는 /etc/kubernetes/pki이다. # kubernetes 설정 백업 cp -rp /etc/kubernetes /etc/kubernet..

Kubernetes 2022.04.16

[cordon] 스케쥴링 불가 노드로 설정

쿠버네티스 클러스터 노드 중 하나가 물리적으로 고장나면서, 클러스터 내에서는 NotReady 상태로 표시되고 있는 것을 확인했다. Node 정보를 상세히 확인하니, node.kubernetes.io/unreachable:NoSchedule Taint가 설정되면서 스케쥴링 가능 노드에서 제외되는 것으로 보였다. 하지만 좀 더 명확하게 고장난 노드(node01)가 스케쥴링이 불가능한 노드로 설정해두고자 한다. cordon 노드를 unschedulable로 표시한다. kubectl cordon # 예시 kubectl cordon node01 Node 상세 정보 Unschedulable 필드가 true로 변경되고, Taint 설정도 추가된 것을 확인할 수 있다. Uncordon unschedulable 상태인 ..

Kubernetes 2022.04.15

[k8s] org.jenkinsci.remoting.protocol.impl.ConnectionRefusalException: Unknown client name 에러

2022.03.07 - [Jenkins] HelmRelease로 설치 시, curl: (60) SSL certificate problem: certificate has expired 에러 이 글에 이어서 Jenkins 관련 문제를 하나 더 정리한다. 현상 쿠버네티스 클러스터 환경에서 동작하는 Jenkins에서 Pipeline을 구성하여 빌드했는데, 아래와 같은 출력과 함께 빌드가 완료되지 않았다. Jenkins 웹에서 확인할 수 있는 pipeline build console output 내용이다. Started by user passwd [Pipeline] Start of Pipeline [Pipeline] podTemplate [Pipeline] { [Pipeline] node Created Pod: ..

Jenkins 2022.03.16
1 2 3 4 5 6 7 8 ··· 14