Kubernetes 7

[Kubernetes] GKE 클러스터에 GCE-PersistentDisk 생성하고 Pod에 Mount 하기.

Kubernetes 클러스터에서 다수의 Micro Service가 사용할 Disk(Volume)이 필요 한 상황이 생겼다. GCP에서 제공하는 관리형 NAS 서비스인 Cloud Filestore를 사용 하려 했으나 300GB 정도의 용량만 필요 한 상황에서 Filestore는 HDD 기본 시작용량이 1TB, SSD는 2.5TB에 비용도 꽤나 비싸서 사용을 보류 하였고, 200GB 표준 영구 디스크 기준으로 한달에 $8.00 만 청구된다고 하는 GCE-PD 서비스를 사용 해 보기로 했다. Cloud SDK가 설치되어 있는 클라이언트에서 아래 명령어를 실행 시킨다. $ gcloud compute disks create --size=300GB --type=pd-standard --zone={ZONE} {DIS..

IT/Kubernetes 2022.07.13

[Kubernetes] ControlPlane 구성 요소에 대하여 새로 알게 된 사실

컨트롤 플레인의 구성 요소는 여러 노드에 분산해서 구축이 가능하다. 쿠버네티스 컨트롤 플레인의 구성 요소 4가지 - API Server - Scheduler - Controller Manager - etcd 쿠버네티스 클러스터의 모든 구성 요소들은 오직 API 서버를 통해서만 통신한다. 라는게 중요한 개념이다. 또한 위 4가지 구성 요소들은 단일 서버가 아닌 여러 서버에 분산되어서 구축 될 수 있다. 따라서 여러 노드에 컨트롤 플레인의 구성 요소를 분산시켜 HA를 확보할 수 있다. 다만 이때 API server와 etcd는 동시에 병렬로 실행 가능 하고, Scheduler와 Controller Manager는 1개만 Active, 나머진 Stand by 형태로 유지된다는 점을 주의 한다.

IT/Kubernetes 2022.06.28

[Istio] Istio Service Mesh의 Inbound 트래픽 흐름에 대하여.

Istio Service Mesh(ISM)를 처음 접했을 때, 트래픽의 흐름이 어떤식으로 흘러가는지 파악하기 어려웠는데 지금까지 알게 된 내용들을 나름대로 정리 해보려 한다. 여기저기서 주워들은 지식들을 모아서 만든 자료이므로 틀린 부분이 있을 수 있어 이 글을 읽는 독자분들도 그 점을 인지하고 그저 참고용으로 사용하셨으면 합니다. 아래 내용은 GCP 기반 환경에서 해본 경험을 토대로 작성 되었습니다. - Istio를 도입할 경우 기능상의 여러 장점을 얻을 수 있지만, 그만큼 복잡한 구조와 지연시간이 늘어나게 됩니다. Inbound Traffic 1. istio-ingressgateway - Kubernetes 클러스터에서 외부와 통신하기 위해 내부적으로 지원하는 "Ingress" 라는 오브젝트는 ISM..

IT/Istio 2022.06.28

[Kubernetes] Kubernetes DNS를 이해 해 보자.

- 쿠버네티스 클러스터에 kube-system이라는 Namespace에는 kube-dns라는 Service 타입의 오브젝트가 떠있음. - 새로운 Service를 생성하게되면(svc-web이라는 서비스를 생성하였고 그 서비스의 IP는 10.96.100.100 이라 가정) 그 서비스의 정보인 [svc-web : 10.96.100.100] 이라는 정보가 kube-dns에 등록 되어짐. - 즉 svc-web.default.svc.cluster.local에 연결 해달라는것은 10.96.100.100에 연결해 달라는 것과 같다. - kube-dns 그 자체도 하나의 Service 타입 오브젝트이기 때문에 자체적인 Cluster IP를 가지고 있는데 그 IP는 보통 10.96.0.10 인 경우가 많다. - 모든 Po..

IT/Kubernetes 2022.05.24

[Kubernetes] 쿠버네티스 컨텍스트 명령어 정리.

GCP GKE에서 여러 클러스터를 운영하다 보니 자주 쓰게되는 context 관련 명령어를 정리 한다. $ kubectl config current-context # 현재 컨텍스트 확인 $ kubectl config use-context var@one-dev-**** # var 계정으로 one-dev-cluster1에 연결 $ kubectl config use-context gke_one-dev-******_asia-northeast1-a_one-prod-**** $ kubectl config view # config 파일 출력 $ kubectl config get-contexts # context들 조회

IT/Kubernetes 2022.05.04

[GCP] Googlc Cloud CLI 를 설치하고 CI/CD 파이프라인 구축하기.

1. Google Cloud SDK 설치하기. 참조 : https://cloud.google.com/sdk/docs/downloads-interactive?hl=ko Google Cloud CLI 설치 프로그램 사용 | Google Cloud CLI 문서 의견 보내기 Google Cloud CLI 설치 프로그램 사용 Google Cloud CLI는 지원되는 플랫폼별로 설치 프로그램을 제공하며 대화형 또는 비대화형으로 배포할 수 있습니다. 대화형 설치 설치 프로그램을 사용 cloud.google.com # Windows에 내장된 Power Shell을 이용하여 진행 해도 되지만, 이 글에서는 VS Code에 Power Shell 터미널을 띄워서 진행 합니다. 1) VS Code를 관리자 권한으로 실행 합니..

IT/GCP 2022.04.20

[Kubernetes] Ubuntu에 Kubernetes 싱글노드로 구축하기.

회사에서 쿠버네티스를 다루다보니 집에서 테스트 환경을 만들어서 이것 저것 테스트해보고 싶은 생각이 들었습니다. 개인적으로 쓰고있는 서버는 1대인데 이걸 물리적으로 3대를 놓는건 현실적으로 불가능하고, 클라우드로 구축하자니 매달 비용이 발생하니 이것도 만만치 않습니다. 그렇다고 우분투에 KVM을 사용하여 가상환경으로 구축하자니 안그래도 리소스가 넉넉치 않은 개인서버에 하이퍼바이저라는 부담을 안겨주는거 같아 꺼려졌는데, 방법을 찾아보다 보니 싱글 노드로 쿠버네티스를 구축하는 방법이 있어서 이를 공유하고자 합니다. 전체적으로 kubeadm으로 일반적인 쿠버네티스 클러스터를 구성하는 방법과 다른 점은 없습니다. 다만 worker node를 join 하는 과정이 생략되고, control plane에 taint를 ..

IT/Kubernetes 2022.02.22