티스토리 뷰

1탄!! 쿠버네티스 구성준비/Master & Node

2탄!! 쿠버네티스와 컨테이너를 쉽게 이해하기

3탄!! Kubernetes 구성도 알아보자!

4탄!! NFS 설정입니다.

5탄!! helm install 방법

6탄 !! 도커 컴포즈 VS 쿠버네티스 컴포즈

7탄!! 쿠버네티스에 pod 올리자! pod? 뭐에요?

8탄!! K8S 대시보드 설치

9탄!! 쿠버네티스 오토스케일링(kubernetes autoscaling)

10탄!! K8S Namespace 생성방법

11탄!! 쿠버네티스 용어 정리

12탄!! 도커 깔끔히 삭제하기

# 부록!! 쿠버네티스 장애 처리5탄부록!! 쿠버네티스 장애 처리

#기타 참고하기  

마이크로 쿠버네티스 설치 해보기

쿠버네티스(컨테이너) 환경 구축의 어려운점~!

쿠버네티스(튜토리얼 실습)

쿠버네티스 초기설치및  볼트 디비 올리기[샘플]

헬름챠트로 올리기[샘플]11) 쿠버네티스 가상스토리지(Ceph) 설치

 

 

참조 url : 호롤리님 블로그 바로가기

  • The Tiller Server: 쿠버네티스 API와 상호 작용하는 Helm 서버
  • The Helm Client : 커맨드 라인 Helm 클라이언트

Helm설치

클릭해보세요!

Helm 3 설치 & 기본 사용방법

1. 개요

     Helm의 사용법에 대해서 알아보겠습니다. 

2. 헬름 조건 

  • 쿠버네티스 설치및  클러스터는 위에 1탄부터 천천히 따라해보세요
    - helm을 설치할 위치에서 kubectl 명령어를 사용할 수 있어야 합니다. 

3. Helm이란?

Helm은 쿠버네티스의 package managing tool입니다.

크게 세가지 컨셉을 가지고 있는데 :

  1. Chart : Helm package입니다. app을 실행시키기위한 모든 리소스가 정의되어있습니다.
    Homebrew formula, Apt dpkg, Yum RPM파일과 비슷하다고 생각하시면 됩니다.
  2. Repository : chart들이 공유되는 공간입니다. docker hub를 생각하시면 될 것 같습니다.
  3. Release : 쿠버네티스 클러스터에서 돌아가는 app들은(chart instance) 모두 고유의 release 버전을 가지고 있습니다.

다시 정리하면,
helm은 chart를 쿠버네티스에 설치하고, 설치할때마다 release버전이 생성되며, 새로운 chart를 찾을때에는 Helm chart repository에서 찾을 수 있습니다.

주의!
이 문서는 helm v3.0.0 이상을 다루고 있습니다.
2.x버전과 많은것이 변경되었기 때문에 참고해주시기 바랍니다.

4. Installation

kubectl을 사용할 수 있는 노드로 이동하여 설치합니다.

November 13, 2020. The new locations are hosted using GitHub pages.

NameOld LocationNew Location

2020년 11월 13일 부터 변경되었나 보네요 위치 확인 잘하세용

https://charts.helm.sh/stable

https://charts.helm.sh/incubator

 

Helm Incubator

⚠️(OBSOLETE) Curated applications for Kubernetes

charts.helm.sh

 

 

$ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh 

$ chmod 700 get_helm.sh 

$ ./get_helm.sh버전 확인 :

$ helm version

helm chart repository를 추가해줍니다.

$ helm repo add stable https://charts.helm.sh/incubator
$ helm repo add stable https://charts.helm.sh/stable

chart list 출력 :

$ helm search repo stable

chart update :

$ helm repo update


Happy Helming!

5. 실습 (Prometheus)

설치가 끝났으니 한번 차트를 클러스터에 배포해봅시다.

모니터링 툴 중 하나인 Prometheus를 배포해보겠습니다.

$ helm install monitor stable/prometheus

그런데 pod의 상태를 확인해보면 :

$ kubectl get pod


몇 개의 pod이 Pending상태입니다.

이유는 k8s클러스터에 StorageClass가 정의되어있지 않기 때문입니다.
(pvc의 요청을 받아줄 provisioner가 없기 때문)

그래서 일단 pv옵션을 false로 변경해주어 EmptyDir을 사용하게 해야 합니다.

Helm chart의 설정을 변경하는 방법은 크게 두가지 방법이 있습니다.

using yaml

문제가 되는 chart를 먼저 확인해봅시다.

$ helm inspect values stable/prometheus

persistentVolume.enabled가 True입니다. 이렇게 표기되어있는 부분이 총 세군데가 있습니다.

수정할 부분만 따로 파일을 만들어주면 됩니다.

 

$ vim volumeF.yaml
alertmanager:
    persistentVolume:
        enabled: false
server:  
    persistentVolume:
        enabled: false
pushgateway: 
    persistentVolume:
        enabled: false
        
딱 이렇게 volumeF.yaml 파일에 입력해서 저장해둡니다.
그리고 업그레이드해줍시다.
$ helm upgrade -f volumeF.yaml monitor stable/prometheus

업그레이드 하게되면 Pending이었던 pod들이 Running상태로 변하는 것을 확인할 수 있습니다.

using Command

다른 방법으로는 커맨드라인으로 설정을 추가해주는 방법이 있습니다.

outer: inner: value

위와 같은 표현식을 다음과 같이 표현할 수 있습니다.

$ --set outer.inner=value

그럼 위 문제와 같은 경우는 다음과 같이 표현될 수 있습니다.

$ helm install monitor stable/prometheus --set alertmanager.persistentVolume.enabled=false --set
  server.persistentVolume.enabled=false --set pushgateway.persistentVolume.enabled=false

pod들이 정상적으로 Running되었으니 웹으로 접속해봅시다.
$ kubectl get svc

 

prometheus-server를 clusterIP에서 NodePort로 변경해줍니다.(spec.type)

$ kubectl edit svc monitor-prometheus-server

 

NodePort로 변경 방법

 

# kubectl edit svc monitor-prometheus-server 

아래와 같이 쭉..~ 입력해줘도 상관 없습니다. 

$ helm install monitor stable/prometheus --set alertmanager.persistentVolume.enabled=false --set server.persistentVolume.enabled=false --set pushgateway.persistentVolume.enabled=false

다시 확인해보면 포트포워딩된 포트가 보입니다.

 

웹사이트 확인!! 192.168.56.150:31557 (ip:port)로 접속해봅시다.

버추얼 박스 아이피 입력 하셔야 합니다.

 

삭제

삭제할때는 간단하게 설치할때 사용했던 이름만 사용하면 됩니다.

$ helm uninstall {이름}

 

 

 

 

댓글