[kubernetes] Storageclass Longhorn vs Kadalu
2024. 10. 12. 21:04
엔지니어링/Kubernetes
올해 1년간 on-prem 쿠버네티스를 운영 프로젝트를 진행하고 있다. 특별히 RKE(Rancher Kubernetes Engine)에서는 Longhorn 이라는 스토리지클래스를 사용하도록 가이드 하고 있어 Rancher Cluster 들은 모두 Longhorn을 사용하고 있다. 그리고 kubespray로 구축된 클러스터는 Kadalu 라는 스토리지클래스를 사용하고 있는데 두 스토리지클래스의 사용 후기를 짧게 나마 적어놓으려 한다.LonghornKadalu분산 블록 스토리지분산 파일 스토리지Longhorn롱혼은 분산 블록 스토리지 솔루션으로, Blob Storage를 제공한다.이로 인해 볼륨 기반의 고가용성과 복제 기능에 중점을 둘 수 있다.주요기능볼륨 복제 : 데이터를 여러 노드에 복제하여, 하나의 노..
Elastic APM으로 VUE Application 모니터링
2024. 10. 9. 00:12
엔지니어링/Kubernetes
지난번 Go Application 모니터링을 Elastic APM으로 적용하였고, 그 애플리케이션과 연결된 VUE(frontend) 프로젝트도 간단히 개발해놨었다. 그래서 이번엔 VUE에 RUM Agent를 적용해보려한다. 먼저 적용된 화면이다. 리소스 다운로드 시간에 대한 것들이 벌써부터 내 눈을 즐겁게 해준다.ㅋㅋ작업 순서npm installrum agent js 파일을 다운 받아 public/js/ 안에 복사.환경변수 설정.main.js 에 javascript load 및 init 설정 NPM installnpm install @elastic/apm-rum --saveRum Agent JS 파일 다운아래 공식 github 에 들어가 Release 버전 확인 후 다운로드하자. GitHub - elas..
Elastic APM으로 Go Application 모니터링
2024. 10. 9. 00:00
엔지니어링/Kubernetes
진행하고 있는 프로젝트의 개발팀에서 Golang 기반 Backend API를 개발하는게 있어서 연초에 VUE, GO Application 샘플을 개발해놓았다. (매우 간단하게...) 이후 Application Performance Monitoring을 어떻게 할 것인가?에 대한 질문들로 Elastic APM을 사용해보기로 했다. 지금까지 java APM만을 셋업했었는데 golang은 어떻게 다른지 파악해보자.Java와의 차이java application은 javaagent 로 올리면 바이트코드를 읽어 자동으로 수집하지만 go application은 아니다. 그래도 http route, gorm 을 통해 어느정도 요청에 대한 그래프를 볼 수 있다.필자는 라우터 라이브러리로 고릴라, 데이터베이스는 gorm으..
Kubernetes Korea Community Day 2024 후기
2024. 9. 24. 23:31
엔지니어링/Kubernetes
24년 9월 24일 서울 백범김구기념관에서 Kubernetes Korea Community Day 2024를 개최하여 다녀왔다.각 세션 제목을 보고 너무 듣고 싶어서 기대가 많았고, 도전의 깊이를 넓혀 온 후기를 써본다.어떻게 알게되었나?직장동료가 페이스북 kubernetes korea group 에 수시로 들어가며 확인하던 중 발견하여 Join.참가방법?9월6일에 입장료 80,000원을 결제했고, 9월23일(행사 1일전) QR 코드가 문자로 날아왔다.오전 세션행사는 09시20분부터 QR을 찍어 네임카드를 발급받고, 10시부터 시작되었다.약 800명 정도가 참여하였고, 오전은 전체가 한 자리에서 Akamai, F5, CNAI 세션을 들었다. Kubernetes 10년, 그 너머의 항해: 살아남은 자의 인..
[CKA] Certified Kubernetes Administrator 자격 취득 후기
2023. 7. 8. 15:16
엔지니어링/Kubernetes
서론 쿠버네티스를 처음 접했던 것은 대학교 3학년(2019) 졸업작품 때이다. 당시에는 app, db, svc, ing 서비스를 올리고 프로메테우스/그라파나를 통해 클라우드 모니터링부분을 다뤘었다. 이 후 취업을 하고 본격적으로 쿠버네티스 프로젝트를 진행하게 된건 2021년3월부터인데 벌써 2년4개월의 시간이 흘렀고 CKA 자격증이라는 것을 알게 되었다.(회사에서도 클라우드 사업을 위해 어느정도 CKA자격을 가진 인력이 필요로 했음) 무튼, 시험을 본 자로써 어디에 초점을 두고 공부해야하는지 글을 남기려한다. 준비기간 실제 자격증 준비 시간은 약 2.5일 필자는 그동안 프로젝트에서 쿠버네티스를 경험해왔기에 짧은 시간 준비를 하고 시험을 쳤다. (실제 시험 수준은 너무 쉬웠다는거...+영어질문 해석에 오류..
[Kubernetes] docker Desktop Kubernetes PV 붙이기
2022. 10. 26. 16:04
엔지니어링/Kubernetes
도커데스크톱으로 쿠버네티스를 올리고 pv를 붙이려면 hostpath로 하면 된다. 참고로 hostpath는 node의 storeage를 사용하는 것으로, 도커데스크톱은 pc 위에 1개의 노드풀로 올라가 있기 때문에 사용할 수 있다. 필자는 C:/kubernetes/storage/ 경로를 스토리지로 사용하고 샘플 pod에 toolbox 폴더라는 pv를 붙였다. 먼저 deployment.yaml 에 volume을 작성하자. 경로는 /run/desktop/mnt/host/c/ 뒤에 작성하면 된다. apiVersion: apps/v1 kind: Deployment metadata: name: toolbox-deployment spec: selector: matchLabels: app: toolbox replic..
[Kubernetes] nginx-ingress로 들어온 path를 삭제하고 백엔드에 전달하기
2022. 10. 26. 15:41
엔지니어링/Kubernetes
쿠버네티스 ingress 설정 중 path에 따라 서비스를 연결시켜주는 방법 metadata>annotaions 안에 rewrite 를 넣어주고 nginx.ingress.kubernetes.io/rewrite-target: /$2 spec>rules>http>paths 안에 아래와 같이 적용하면 된다. path: /외부접근패스(/|$)(.*) 이렇게하면 사용자가 도메인/외부접근패스 로 들어올 경우 nginx 에 / 로 설정된다. "GET / HTTP/1.1" 200 도메인/외부접근패스/패스1/패스2 로 들어온다면 nginx 에 /패스1/패스2 로 전달된다. "GET /패스1/패스2 HTTP/1.1" 200
[DockerDesktop] access permissions 에러
2022. 10. 20. 10:29
엔지니어링/Kubernetes
어제까지 잘 쓰고 있던 컨테이너 하나가 갑자기 안올라간다. Error: (HTTP code 500) server error - Ports are not available: listen tcp 0.0.0.0:2181: bind: An attempt was made to access a socket in a way forbidden by its access permissions. 필자는 kafka zookeeper 를 도커컴포즈로 올려두고 사용하고 있었는데 위와 같은 에러가 계속 나고있었다.. 로컬에 구축한 쿠버네티스에서 포트를 잡는건가? 하고 > netstat -an | findstr 2181 으로 찾아보았지만, 포트를 점유하고 있는 프로세스는 없었다............... 이리저리 검색하다보니 그냥 ..
[DockerDesktop] kubernetes 설치 후 kubectl 안될 때
2022. 10. 19. 15:42
엔지니어링/Kubernetes
이번에 로컬에 kubernetes를 올리고 테스트할 일이 생겨 docker desktop에서 클릭한번으로 구축되는 kubernetes를 해보았다. 근데 필자는 kubectl 명령어로 기존에 사용하던 cluster들 정보가 수두룩 하기때문에 신규 생성된 로컬 클러스터가 자동으로 바뀌지 않았다. 쿠버네티스 동작 확인 설치는 정상적으로 되어 running 상태이고, 실행 중인 docker Desktop icon 우클릭>kubernetes 항목을 통해 생성된 자격증명을 확인할 수 있었다. kubectl config 적용 이제 저이름을 찾아서 kubectl의 context를 지정해주면 된다. $ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPAC..
[Kubernetes] cron job 실패 시 중단하기
2022. 9. 1. 11:31
엔지니어링/Kubernetes
아래 포스팅인 3scale 백업 고도화 4편에서 cronjob 까지 완료하였는데, 해당 설정은 job 실패시 컨테이너를 restart 하는 설정이 되어있다. OCP 3scale 백업 자동화 고도화하기 - 4편(마지막) 지난 3편에 이어 다음!! OCP 3scale 백업 자동화 고도화하기 - 3편(이미지생성, 권한부여) 백업 자동화 고도화 작업 3탄이다. OCP 3scale 백업 자동화 고도화하기 - 2편(dockerfile, 쉘스크립트) 아래 1편에서 flowlog.tistory.com 바로 restartPolicy: OnFailure 설정때문인데, cronjob에서는 OnFailure / Never 두 가지 옵션이 존재한다. 앞서 말했듯이 OnFailure 는 job 이 실패하였을 때, 컨테이너를 재시..
[Kubernetes] 외부접근 ingress 적용
2022. 8. 3. 12:56
엔지니어링/Kubernetes
지난 포스팅에 이어 rancher로 구성한 쿠버네티스에 외부접근을 위한 ingress를 추가하는 작업을 해야한다 nginx pod는 namespace : auth, deployment : nginx, service : nginx 이러한 naming으로 올려두었다 이제 아래 ingress.yaml 을 작성하고 내용은 / 로 접근한 모든 트래픽을 nginx service 80 port 로 라우팅하라는 내용. apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-ingress namespace: auth annotations: kubernetes.io/ingress.class: nginx #ingress.kubernetes.io/rewrit..
[Rancher] 쿠버네티스 쉽게 구성하기
2022. 8. 3. 11:52
엔지니어링/Kubernetes
쿠버네티스 환경 구축을 위해 rancher 를 사용해 보았다. 앞 포스팅에서 생성했던 azure gallery 이미지를 활용하여 Azure에 rancher용 1대, kube용 3대를 생성할 것이다. VM 정보 용도 VM이름 base Image 정보 username password ZONE RANCHER rancher ubuntu Server 20.04 LTS - Gen2 rancher ************* 1 VM1 kube-vm1 ubuntu Server 20.04 LTS - Gen2 master ************* 1 VM2 kube-vm2 ubuntu Server 20.04 LTS - Gen2 master ************* 2 VM3 kube-vm3 ubuntu Server 20.0..
[AKS] AzureFile을 스토리지 클래스로 사용할 때 권한문제
2022. 8. 2. 13:58
엔지니어링/Kubernetes
쿠버네티스에서 pv 마운트를 하고 있는데 문제가 생겼다. 상황은.. jenkins 컨테이너에 pv를 붙여 올리고 있는데 pv mount를 한 jenkins_home 이 root 소유자로 되어 퍼미션 에러가 떨어지는 것이였다. 일단 제일먼저 컨테이너에 들어가 id 를 쳐서 uid, gid를 체크하고, Deployment에 securityContext 를 설정해 주었다. 근데 여전히 변하지 않았다.. 무슨일인고.. azureFile에 대한 구글링을 해보니.. 이런 내용이 있더라... 애저파일을 스토리지 클래스로 사용한다면 gid 가 기본적으로 0 이라고.. 그래서 그냥 스토리지 클래스 마운트 옵션에 1000을 줘버렸다 ^^. kind: StorageClass apiVersion: storage.k8s.io/..
[AKS] POD 볼륨 마운트
2022. 8. 1. 17:48
엔지니어링/Kubernetes
오늘은 간단히 nginx pod 에 볼륨을 장착하는 테스트를 할 것이다. 이전에 포스팅한 동적 스토리지클래스를 통해 자동으로 PV 프로비저닝이 되있는 상태이며, 테스트 환경은 AKS에 AzureFile 로 스토리지를 붙여놓았다. pvc.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc001 spec: accessModes: - ReadWriteMany storageClassName: joon-azurefile resources: requests: storage: 1Gi nginx deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replic..
[AKS] 동적 스토리지 할당하기
2022. 8. 1. 17:34
엔지니어링/Kubernetes
Azure에서 AzureFile 스토리지클래스를 통해 PV를 자동으로 프로비저닝 할 수 있다. Storage Class Yaml 작성하기 kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: joon-azurefile provisioner: file.csi.azure.com # replace with "kubernetes.io/azure-file" if aks version is less than 1.21 allowVolumeExpansion: true mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict - actimeo=30 par..