도커 로고

1. 쿠버네티스 환경의 종류

  • 로컬 쿠버네티스
    • 물리 머신 한 대에 구축
      • 미니큐브 (Minikube)
      • Docker Desktop for Mac / Windows
      • kind (Kubernetes in Docker)
      • and more..
  • 쿠버네티스 구축 도구
    • 온프레미스/클라우드에 클러스터 구축
      • 큐브어드민 (kubeadm)
      • 랜처 (Rancher)
  • 관리형 쿠버네티스 서비스
    • 퍼블릭 클라우드의 관리형 서비스로 제공하는 클러스터 사용
      • Google Kubernetes Engine (GKE)
      • Azure Kubernetes Service (AKS)
      • Elastic Kubernetes Service (EKS)

쿠버네티스는 환경에 따라 일부 사용할 수 없는 기능이 있지만, 기본 적으로 CNCF 가 제공하는 인증 프로그램인 쿠버네티스 적합성 인증 프로그램을 준수하게 되어있기 때문에, 동일하게 동작한다.

 

2. 로컬 쿠버네티스

Docker Desktop for Mac 환경에서 Preference 를 설정하는 것 만으로도 간단하게 Kubernetes 환경을 만들 수 있지만

책에서 소개하는 kind (Kubernetes in Docker) 를 선택하도록 하겠다.

(minikube 도 나중에 한번 해볼 생각임)

 

# homebrew 로 설치
$ brew install kind

# kind 버전 확인
$ kind version
kind v0.11.1 go1.17.2 darwin/arm64

 

이후 kind.yaml 을 실행해본다.

 

# kind create cluster --config kind.yaml --name kindcluster

apiVersion: kind.x-k8s.io/v1alpha4
kind: Cluster
nodes:
- role: control-plane
- role: control-plane
- role: worker
- role: worker
- role: worker

 

책과 매뉴얼의 예시대로 control-plane 을 여러개 두고 해봤으나, 2개 까지 일 때만 정상적으로 동작했었다.

네트워크 문제가 있는 것 같은데 자세한 이유는 모르겠다.. 3개부터는 왜 안되는걸까?

 

그러던 중 문제를 해결했다.

더보기

 

여러개의 쿠버네티스 클러스터(minikube, docker-desktop, kind) 를 설치했더라도 컨텍스트 전환으로 변경 가능하다

 

kubectl config use-context kind-kindcluster

 

현재 생성된 node 를 확인한다.

 

$ kubectl get nodes

NAME                               STATUS   ROLES                  AGE     VERSION
kind-alpha-cluster-control-plane   Ready    control-plane,master   6m33s   v1.21.1
kind-alpha-cluster-worker          Ready    <none>                 6m2s    v1.21.1
kind-alpha-cluster-worker2         Ready    <none>                 6m2s    v1.21.1

 

kubectl 명령어를 통해 현재 context 가 무엇인지 알 수 있다.

 

$ kubectl config current-context

kind-kindcluster

 

이후 생성한 kind 클러스터를 삭제한다.

 

$ kind delete cluster --name kindcluster

Deleting cluster "kindcluster" ...

 

이 밖에도 쿠버네티스를 사용하는 다양한 방법들이 있지만 추후 정리해보기로 한다.

Google Kubernetes Engine (GKE) 환경에서 진행해볼 듯 하다.