k8s - 2-b. k8s 실습

roon-replica·2022년 6월 20일
0

kubernetes

목록 보기
1/3

k8s cluster 설치

 brew install kubectl
 kubectl version --client

Minikube로 단일 k8s 클러스터 실행

  1. Minikube 설치

    brew install minikube
  2. Minikube 실행

     # 도커 테스크탑 실행한 상태에서 명령어 입력해야함
     minikube start

  3. 클러스터 정상 동작 확인

    kubectl cluster-info

k8s에서 1번째 애플리케이션 실행하기

# 실행하니 --generator가 unknown flag라고 에러남.. --generator없이 실행하면 pod 만들어짐
kubectl run kubia --image=thinkroon/kubia --port=8080 --generator=run/v1

# <kubectl run 명령어>
# Create and run a particular image in a pod.

Pod

  • k8s는 개별 컨테이너를 직접 다루지 않는다고 함
    대신 함께 배치?된 다수의 컨테이너라는 개념을 쓴다고 함..
    이 컨테이너 그룹을 Pod라고 부름
  • 같은 워커 노드에서 같은 리눅스 네임스페이스로 함께 실행된다고 함
    각 Pod는 자체 ip, host name, process 등이 있는 논리적으로 분리된 머신이라고 함...
  • pod 조회

kubectl run 동작 과정

  1. docker push {docker id}/{image}
  2. kubectl run {image} 명령어 입력
  3. kubectl이 k8s API 서버로 HTTP 요청 (뭘 요청함?)
  4. 클러스터에 replication controller 생성한다고 함
    replication controller가 pod 생성
  5. scheduler가 워커 노드 중 하나에 파드를 스케줄링. (파드를 스케줄링하는거 맞나?)
  6. 해당 워크 노드의 kubelet이 파드가 스케줄된 것을 확인
    파드 안의(노드 안이라고 해야 하나..??) 도커에게 이미지 pull하도록 함
  7. 이미지를 pull받고 도커는 컨테이너를 생성하고 실행

웹 어플리케이션 접근 (Pod 접근)

  • 실행 중인 파드에 접근하는 방법
  • Pod마다 IP 주소가 있지만, 외부에서 접근 불가능하다고 함..
    서비스 오브젝트라는 걸 통해 외부로 노출할 수 있다고 함...
    그 중에서도 LoadBalancer 유형의 서비스를 생성해야 로드밸런서의 public IP를 통해 Pod에 접근 가능하다고 함..
# 이 명령어로 실행하면 에러 발생함
# Error from server (NotFound): replicationcontrollers "kubia" not found
# kubectl run 할 때 --generator 옵션이 deprecated 되서 replication controller를 생성하지 않고 
# Pod를 생성했는데 replication controller를 이용하는 명령을 썼기 때문임
kubectl expose rc kubia --type=LoadBalancer --name kubia-http

# 이 명령을 쓰면 로드밸런서 타입의 서비스 오브젝트가 만들어짐!
kubectl expose pod kubia --type=LoadBalancer --name kubia-http
  • minikube는 로드밸런서를 지원하지 않는다고 함...
minikube service kubia-http를 실행하면 서비스에 접근가능한 ip,port 얻을 수 있다고 하는데..
아래 오류 메세지 표시됨..
Because you are using a Docker driver on darwin, the terminal needs to be open to run it.
  • 서비스 조회

  • external IP를 이용해 서비스 접근

GKE로 다중 노드 k8s 클러스터 실습

  • 환경변수 등록
     gcloud --version
     gcloud components install kubectl
     
     #클러스터 만드는 명령 안 됨...
     gcloud container clusters create hello-cluster --num-nodes=3 --zone=asia-northeast1-a

생각들

  • replication controller가 뭔지 모름
  • pod는 '논리적'으로 분리된 머신인데, '논리적'이라는걸 쉽게 까먹을거 같음
  • Pod IP로는 왜 외부에서 접근 불가능함?
    -> private network라서 그런듯. 192.168.xx.xx 이런거처럼 내부에서만 쓰이는 ip겠지
  • GKE(Google Kubernetes Engine) 이용해서 다중 노드 k8s 클러스터 만들어봐야 함..
profile
집중 ➝ 프로세서↑ 시간 투자 ➝ 디스크↑

0개의 댓글