본문 바로가기

Cloud/Kubernetes

NaverCloud NKS와 Object Storage 연동하기 Object Storage는 File Storage나 Block Storage가 아니기 때문에 일반적인 방식으로 Kubernetes Service에 사용할 수 없다. 그렇지만 부득이한 사정때문에...사용해야 할 경우를 대비하여 미리 정리한다. 1. Object Storage란? NaverCloud에서 제공하는 스토리지 상품 중 한 가지이다. 2. 연동 방법 (1) Object Storage -> s3fs 혹은 goofys를 통해 워커 노드에 file system으로 마운트 -> hostpath로 사용 (2) Object Storage -> 파드 마운트 시 s3fs 혹은 goofys 이미지를 통해 파드 내에 file system으로 마운트 두 가지 정도가 존재할 듯 하다. (1)의 경우 사용이 편리하다는 ..
15단계로 배우는 도커와 쿠버네티스 (서터디) 책이 안좋은건 아닌데 구성이 좀 이상함;; 마지막에 몰아넣는 느낌?? 14. 오토스케일 1) 개념 오토스케일? CPU와 메모리 사용률에 따라 파드나 노드의 수를 자동으로 늘리고 줄임 퍼블릭 클라우드의 경우 노드의 개수, 이용 시간에 따라 비용이 달라지기 때문에 비용 최적화와도 연결 온프레미스의 경우 제한된 서버의 자원을 최대한 활용 쿠버네티스 오토스케일 수평 파드 오토스케일러 (Horizontal Pod Autoscaler, HPA) : 파드의 메트릭을 감시하여 파드의 레플리카 수를 늘리거나 줄임 클러스터 오토스케일러 (Cluster Autoscaler, CA) : 클라우드의 API와 연동하여 노드를 늘리거나 줄인다. https://jonnung.dev/kubernetes/2021/02/28/cluste..
15단계로 배우는 도커와 쿠버네티스 (서터디) 저는 백수이기 때문에 공부합니다. 08. 디플로이먼트 - 디플로이먼트의 주된 역할은 파드의 개수를 관리 - 기존의 수평 분산 시스템은 로드밸런서 + 같은 스펙의 여러 서버로 구성되어 로드밸런서가 요청을 서버에 전송 - 이를 통해 처리 능력을 높일 수 있으며 장애가 발생하여도 서비스가 지속 가능 - K8S 에서는 파드가 서버의 역할을 담당함 - 디플로이먼트는 요청한 개수만큼 파드를 기동하고, 장애 등의 이유로 파드의 개수가 줄어들면 새롭게 파드를 만들어 기동함. - 애플리케이션의 버전을 업그레이드 할 때 새로운 버전의 파드로 바꿔줌 - 로드밸런서 기능은 디플로이먼트가 아닌 K8S의 서비스가 담당 - 혼자 동작하지 않고 레플리카셋과 함께 동작함. 1. 기능 - 스케일 기능 - 롤아웃 기능 : 컨테이너의 업데..
Kubernetes krew 한 달만의 포스팅이다. 이직 준비때문에 바빴는데 현 직장도 어느 정도 정리가 됐고, 또 언제 kube를 사용할 수 있을지 몰라 남은 시간은 하고 싶었던 공부를 하려고 한다. 1. Krew Krew는 MacOS의 brew와 같은 kubectl plugin의 패키지를 관리해준다. kubectl v1.12 이상에서만 호환되며 krew를 통해서 다양한 플러그인을 설치할 수 있다. 2. 설치 ( set -x; cd "$(mktemp -d)" && OS="$(uname | tr '[:upper:]' '[:lower:]')" && ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && cu..
Kubernetes Cluster ip range 확인 내가 구축하지 않은 클러스터에서는 대역 확인이 필요하기 때문에 검색해보았다. [root@master ~]# kubectl cluster-info dump | grep -m 1 service-cluster-ip-range "--service-cluster-ip-range=10.96.0.0/16", [root@master ~]# kubectl cluster-info dump | grep -m 1 cluster-cidr "--cluster-cidr=10.244.0.0/16", 출처 : stackoverflow.com/questions/44190607/how-do-you-find-the-cluster-service-cidr-of-a-kubernetes-cluster
Selector가 없는 Service 1. Service는 Endpoints를 갖는다. [root@master ~]# kubectl get endpoints -n monitoring NAME ENDPOINTS AGE prometheus-k8s 10.244.104.226:9090,10.244.87.210:9090 119d [root@ymaster ~]# kubectl get svc -n monitoring prometheus-k8s NodePort 10.96.240.250 9090:31425/TCP 119d [root@ymaster ~]# kubectl get pods -n monitoring -o wide NAME READY STATUS RESTARTS AGE IP prometheus-k8s-0 3/3 Running 0 10h 10.244...
Kubernetes Service Option - 2 의욕도 안생기고 힘들지만 할 건 해야지... SessionAffinity (None, ClusterIP) SessionAffinity는 Kubernetes에서 제공하는 Sticky Session 기능이다. Sticky Session은 한 클라이언트의 요청을 같은 인스턴스로 접속할 수 있도록 세션을 유지해주는 기능인데, 해당 기능을 사용하지 않으면 세션을 유지해야하는 옵션이 생겼을 때 접속시마다 다른 인스턴스로 요청하여 문제가 될 수 있다. 그럴 때 서비스 SessionAffinity 옵션을 ClusterIP로 바꾸면 특정 클라이언트의 연결을 동일한 파드로 전달할 수 있다. 사용 예는 아래와 같이 SessionAffinity 옵션을 걸어주고, 걸맞는 상세값을 제공하면 된다. 얘는 iptables을 활용하여..