목록DevOps & Infra/K8S(Kubernetes) (35)
오늘도 한 뼘 더
# 배경 aws eks를 통해 만들어진 nodegroup을 삭제하는 과정에서 다음과 같은 에러 메시지가 뜨면서 삭제가 되지 않는 문제가 발생했다. # 문제 pod가 삭제되는 중에 pending 문제가 발생하여 해당 에러가 발생할 수 있다는 걸 알았고 명령어로 검색한 결과 다음과 같이 pod들이 pending이 되고 있었다. 이중 해당 문제를 발생시키는 pod는 ebs-csi-controller pod이다. # 해결 방법 ebs-csi-controller pod를 삭제한 후 nodegroup을 삭제하도록 한다.$ kubectl delete deployment ebs-csi-controller$ eksctl delete nodegroup --cluster [CLUSTER] --name [NODE..
# 배경 eksctl 명령어를 통해서 AWS EKS 서비스에 클러스터를 생성하는 작업을 진행했다. 클러스터의 버전을 config 파일에 명시해서 진행을 하는 중에 다음과 같은 에러가 발생하였다. apiVersion: eksctl.io/v1alpha5kind: ClusterConfigmetadata: name: test region: ap-northeast-2 version: "1.29" # 문제 eksctl 명령어를 사용하여 클러스터를 생성하는 중 다음과 같은 에러가 발생하였다. Error: invalid version, supported values: 1.21, 1.22, 1.23, 1.24 eksctl 버전에 따라 지원하는 쿠버네티스 버전이 다른데 구 버전의 eksctl을 사용..
# 배경 helm update를 통해서 백엔드 서비스 업데이트를 진행할 때 따로 설명에 대한 명령어를 넘기지 않으면 `helm history`를 통해서 내용을 확인할 때 Description에 Upgrade complete로 나온다. # Helm update에 설명 추가하기 --description 옵션을 사용한다. $ helm upgrade [name] Chart.yaml -f file.yaml --description "deploy test" 위에 description이 제대로 적용됐는지는 history를 통해 가능하다 $ helm history [name]
# 배경 처음 cluster를 서버에서 cli를 통해 생성하거나 기존의 cluster를 config에 업데이트할 때 context의 이름이 해당 클러스터의 arn으로 적히게 된다. context를 명시해서 kubectl 명령어를 작성할 때 다 작성할 수 없기때문에 원하는 이름으로 변경해서 사용하도록 한다. # kubeconfig context 이름 변경하기 ## context 조회하기 $ kubectl config get-contexts ## context 이름 변경하기 $ kubectl config rename-context [old_name] [new_name] ex) $ kubectl config rename-context arn:... test
# 배경 헬름 차트를 사용하여 올린 리소스들에 대해서 autoscaling 관련 값들을 수정하기 위해서 values.yaml 파일을 수정하고 helm upgrade 명령어를 사용하였는데 값이 적용되지 않는 것을 확인하였다. 처음에는 kubectl의 client와 server 버전이 맞지 않아 발생한 문제라고 생각을 하였으나 명령어 입력 과정에서 나온 실수로 인한 문제였다. # 문제 및 해결 방안 helm upgrade 명령어 작성 시 values.yaml도 같이 작성을 해줘야 하는데 Chart.yaml 경로만 명시를 하고 values.yaml을 따로 작성하지 않았다. 문제의 명령어 $ helm upgrade jihyun ../helm-chart/ --kube-context=test -n test 올바른 ..
# 배경 jenkins에서 helm 명령어를 실행해야 해서 'apt-get install kubernetes-helm' 명령어로 helm을 설치했는데 다음과 같은 에러가 발생했다. Error: Kubernetes cluster unreachable: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1" # 문제 현재 사용하고 있는 EKS의 버전과 helm의 버전의 호환성에 문제가 있어서 해당 에러가 발생하는 것으로 확인했다. # 해결방법 helm의 버전을 낮추면 해결이 된다. 처음에 사용하고 있는 helm의 버전이 v3.13.2라서 로컬에서 사용하고 있는 v3.11.0으로 설치를 했는데 같은 오류가 발생했다. 검색을 통해서 같은 ..
# Helm uninstall helm chart를 사용하여 설치한 리소스에 대하여 제거할 때 사용한다. helm uninstall RELEASE_NAME [...] [flags] 예시 helm uninstall prometheus prometheus-community/prometheus -n monitoring # Helm upgrade helm chart를 사용해서 설치한 리소스에 대한 값을 변경할 때 사용한다. 값을 업그레이드할 때 두 가지 방법으로 진행할 수 있다. helm upgrade [RELEASE] [CHART] [flags] 1. yaml 파일을 새로 작성해서 값을 업그레이드하기 helm upgrade prometheus -f new-values.yaml -n monitoring 2. '..
# helm 차트 받아오기 helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update # 프로메테우스 관련 git clone git clone https://github.com/prometheus-community/helm-charts.git # values.yaml 변경 helm-charts/charts/prometheus 경로에 있는 values.yaml 파일에 대해서 사용하고자 하는 방식으로 변경한다. nodeSelector nodePort server: name: server nodeSelector: monitor: ok ... service: servicePort: 909..
# Helm 설치하기 Helm 다운로드 및 설치 $ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 $ chmod 700 get_helm.sh $ ./get_helm.sh Helm 버전 확인하기 $ helm version
# helm 이란? Helm은 Kubernetes 애플리케이션을 관리하기 위한 오픈 소스 패키지 관리 도구이다. Helm을 사용하면 복잡한 애플리케이션 배포를 더 쉽게 관리할 수 있다. Helm은 "차트"라고 불리는 패키지 형식을 사용하여 Kubernetes 리소스를 구성하는 방법을 정의한다. # helm chart 란? Helm 차트는 Kubernetes 애플리케이션을 설치, 업그레이드 및 관리하는 데 사용되는 파일과 설정의 집합이다. 각 차트는 템플릿 및 값을 포함하며, 이를 사용하여 Kubernetes 리소스를 정의하고 구성할 수 있다. 차트 내부에는 애플리케이션의 구성 설정, 서비스, 디플로이먼트, 서비스 어카운트 등과 같은 Kubernetes 리소스 정의를 포함한다. # helm 장점 Helm을..