brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Oct 09. 2021

1-2. kubernetes 구축

쿠버네티스를 설치해보자~

여기서는 AWS에 쿠버네티스를 설치해 사용해보자 (아마존 EKS가 아니다)

Master와 node 모두 사용자가 관리한다.


<1>  AWS에 kubernetes 구축 - 학습용

<2> 게임 외부 노출 하기

<3>  테스트해보기

<4> 삭제

<10> 기타- 노트북에 kubernetes 설치법 (연습용)

<30> 전체 프로젝트 보기

<40> 쿠버네티스 배워보기 

<100> 다음 과정 보기 




<1>  AWS에 kubernetes 구축 - 학습용


실습 1-3. KOPS로 AWS에 쿠버네티스 설치

https://brunch.co.kr/@topasvga/1649





<2> 게임 외부 노출 하기


1

터미널 2에서 모니터링 걸어 놓기

watch -d kubectl get deploy,svc,ep,pod,svc,rs



2

Deployment 생성

kubectl create -f -  는 바로 실행하라는 명령어


cat <<EOF | kubectl create -f -

apiVersion: apps/v1

kind: Deployment

metadata:

  labels:

    app.kubernetes.io/name: load-balancer-example

  name: deployment-2048

spec:

  replicas: 2

  selector:

    matchLabels:

      app.kubernetes.io/name: app-2048

  template:

    metadata:

      labels:

        app.kubernetes.io/name: app-2048

    spec:

      containers:

      - image: alexwhen/docker-2048

        name:  app-2048

        ports:

        - containerPort: 80

EOF


3

디플로이먼트 이름은 deploy 이름 확인 = deployment-2048 


k get deploy

NAME              READY   UP-TO-DATE   AVAILABLE   AGE

deployment-2048   5/5     5            5           18m



4

lb 생성

lb 이름을 my-service로 함 

kubectl expose deployment deployment-2048 --type=LoadBalancer --name=my-service

(3분 소요)



5

kubectl get services my-service



6

브라우저로 접속 확인


참고 자료

https://kubernetes.io/ko/docs/tutorials/stateless-application/expose-external-ip-address/





<3>  테스트 해보기


1

ops-view 설치해 현황 모니터링 (실행후 5분 소요)


curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

helm version --short

helm repo add stable https://charts.helm.sh/stable


helm install kube-ops-view stable/kube-ops-view --set service.type=LoadBalancer --set rbac.create=True


2

모니터링

 watch -d kubectl get deploy,svc,ep,pod,svc,rs


3

확인

웹브라우저에서 

service/kube-ops-view 의  EXTERNAL-IP 로 접속



kube-ops-view 상세 설정법

https://brunch.co.kr/@topasvga/1867



4

route53에서 cname 설정해 접속하기


5

Pod를 늘려보자~


kubectl scale deployment deployment-2048  --replicas=10

kubectl scale deployment deployment-2048  --replicas=20


6

쿠버네티스는 master node 와 work node 2개가 있다.

따라서, 오토스케일링 그룹  2개 이다.  

콘솔에서 2개가 보인다.  

EC2 > Auto Scaling 그룹


7

Master node 수는  따로 변경작업을 하지 않기 바란다.  

Master에 접속이 안된다 - -

It is also possible that a host key has just been changed.

The fingerprint for the ECDSA key sent by the remote host is

SHA256:VzpGJMmquGGkimlo2oHYirPJ9J3FNA2+etIu2l8jKq0.

Please contact your system administrator.

Add correct host key in /root/.ssh/known_hosts to get rid of this message.

Offending ECDSA key in /root/.ssh/known_hosts:1

ECDSA host key for api.seo31.cndk.k8s has changed and you have requested strict checking.

Host key verification failed.



8

work node 수  늘리기


오토스케일링 그룹 이름을 알아야 한다

콘솔에서 woker node 이름 확인 

nodes-ap-xxxxxxxxxxxxxxxxx


9

aws cli 설치하기

sudo apt  install awscli


10

리전 설정 - 여기서는 도쿄로 설정한다. ap-northeast-1

aws configure

엔터

엔터

ap-northeast-1

엔터


11

AWS 웹 콘솔에서 Auto Scaling group name 확인  ?

다음은 Auto Scaling group 2개, 1개는 master , 하나는 node 그룹

master-ap-northeast-1a.masters.seo32.cndk.k8s

nodes-ap-northeast-1a.seo32.cndk.k8s


12

work node name 확인 ?

ASG ( Auto Scaling Group)이름 ?


ASG_NAME=nodes-ap-northeast-1a.seo32.cndk.k8s

echo ${ASG_NAME}


13

node가 4개가 되도록 변경 한다.

aws autoscaling update-auto-scaling-group --auto-scaling-group-name ${ASG_NAME} --min-size 2 --desired-capacity 4 --max-size 6




14

 2분 후  node 증가  확인 




<4> 삭제


kubectl delete deployment deployment-2048


아니면 디프롤이먼트 전체 삭제 , 서비스 전체 삭제

kubectl delete deployment --all

k delete service --all

// ops-view도 모두 삭제 되니 참고




<10> 기타- 노트북에 kubernetes 설치법 (연습용)


https://brunch.co.kr/@topasvga/1682 




<30> 전체 프로젝트 보기


https://brunch.co.kr/@topasvga/1927




<40> 쿠버네티스 배워보기 


https://brunch.co.kr/@topasvga/1656



<100> 다음 과정 보기 


https://brunch.co.kr/@topasvga/1929




감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari