brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Feb 14. 2022

101. 네이버 쿠베네티스 개발 -가용Zone 1/10

인프라 셋업은 IP설계부터이다.

여러 서비스를 하려면 개발과 서비스의 ip블럭을 각각 할당해야 한다


<1>  네트워크  IP 설계하기

<2>  네트워크  VPC 구축

<3>  쿠버네티스 클러스터 NKS 생성

<4>  서비스 올리기

<5> 삭제

<6> 참고 자료



<1>  네트워크  IP 설계하기


이번에는 /24 단위로 좀 넉넉하게 서브넷 IP를 할당해 사용해보자

여러 서비스에 할당 한다고 가정하고 IP를 /21로 할당 한다.


1

네이버 클라우드  서울 리전에서 쿠버네티스 사용은 Private LB 서브넷 만 있으면 된다.

네이버 클라우드  싱가포르 리전에 쿠버네티스 사용을 위해서는 Private , Public LB 서브넷이 각각 따로 있어야 한다.  


2

싱가포르 리전

 Public LB 서브넷이 필요하다.



3

서울리전

Public LB 서브넷이 필요 없다.



4

싱가포르 리전의 경우 서브네팅


IP  관리 대장



5

개발 네트워크 하나 생성해 보자

Public1 Subnet

Private1 Subnet

lb-private1 Subnet

lb-public1 Subnet  (서울 리전은 생략가능)

natgw1



6

/21를 표준으로 한다.

C-class 8개이다.

부족하지 않다.



7

NACL은 디폴트 모두 허용이다.

생성하지 않으면 모두 허용이다.

필요시 만든다.


유입?

80, icmp   허용

ssh(22) 내 IP만  허용


유출?

icmp   허용

tcp 1-65535

udp 1-65535





<2>  네트워크  VPC 구축


1

/21를 표준으로 한다.

10.0.0.0/21

10.0.0.0/24~10.0.7.0/24까지   C-Class를 8개까지 사용할 수 있다.



2

VPC 생성?

a-dev-vpc

10.0.0.0/21

생성


3

Subnet 생성?


pub1-subnet

10.0.0.0/24


pri1-subnet

10.0.2.0/24

N (Private)


lb-pri1-subnet

10.0.6.0/25

N (Private)

LoadBalancer


4

(서울 리전의 경우 생략, 싱가포르 리전의 경우 필요)

lb-pub1-subnet

Y

LoadBalancer


5

NAT Gateway 생성

natgw1


6

Route Talbe ?

a-dev-default-private-table

Route Talbe  >  Route  설정  

0.0.0.0/0      NATGW    natgw1

생성 > 확인






<3> 쿠버네티스 클러스터 NKS 생성


프라이빗 서브넷에만 설치 가능하다.


다름은 싱가포르 리전에 클러스터 생성 하는 경우이다.

2022년 2월 현재 버전 1.20지원 한다.



1

a-k8s-dev


2

a-node-pool

2

추가


3

새로운 인증키

생성




<4>  서비스 올리기


1

Public Subnet 에  서버  1대 생성하고 해당 서버에서 명령을 보내자.

서버 1대 설치

Kubectl등 명령 유틸 설치


2

서버 사용할 ACG 생성?


Server  클릭  > ACG  > ACG 생성 >

command-server1-acg



인바운드 허용


외부에서 명령 서버에 ssh (22) 접근 허용

inbound  0.0.0.0/0   22


명령 서버에서 외부 파일을 다운로드하여야 하므로 ACG에 나가는 포트를 열어준다.

TCP 0.0.0.0  1-65535 허용

UDP 0.0.0.0  1-65535 허용

ICMP 0.0.0.0 허용



3

서버 생성


서버 접속해 명령 유틸 설치

passwd root

g102!



4


다운 로드

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"



실행 가능하도록 실행 권한 주기

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl


5

Kubernetes Service 에서 설정 파일 다운로드


6

리눅스 명령어 서버에 yaml 파일을  만든다.  다운로드 받은 설정파일 내용 입력

 vi kubeconfig-1.yaml


7

kubectl --kubeconfig="kubeconfig-1.yaml" get nodes


[root@s17efaea1ad2 ~]# kubectl --kubeconfig="kubeconfig-1.yaml" get nodes

NAME                   STATUS   ROLES    AGE   VERSION

nks-a-node-pool-w-y0   Ready    <none>   14h   v1.20.13

nks-a-node-pool-w-y1   Ready    <none>   14h   v1.20.13



8

bash  프로파일에 alias 주자

kubectl 로 사용하도록 ^^


vi  ~/.bash_profile


[root@command-server1 ~]# vi  ~/.bash_profile

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

        . ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

alias kubectl='kubectl --kubeconfig="/root/kubeconfig-1.yaml"'



9

 source ~/.bash_profile



10

 kubectl get nodes


[root@s17efaea1ad2 ~]#  kubectl get nodes

NAME                   STATUS   ROLES    AGE   VERSION

nks-a-node-pool-w-y0   Ready    <none>   14h   v1.20.13

nks-a-node-pool-w-y1   Ready    <none>   14h   v1.20.13

[root@s17efaea1ad2 ~]#



11

pod 하나 만들어 보기?


root@s17efaea1ad2 ~]# cat <<EOF | kubectl create -f -


cat <<EOF | kubectl create -f -

apiVersion: v1

kind: Pod

metadata:

  name: nginx-pod

  labels:

    app: nginx-app

spec:

  containers:

  - name: nginx-container

    image: nginx

    ports:

    - containerPort: 80

EOF


pod/nginx-pod created




12

nginx  이미지로 websrv  pod 4개로 만들어보기 ?


[root@s17efaea1ad2 ~]# kubectl create deployment websrv --image=nginx --port=80  --replicas=4

deployment.apps/websrv created



13

[root@s17efaea1ad2 ~]# kubectl get pods

NAME                      READY   STATUS    RESTARTS   AGE

nginx-pod                 1/1     Running   0          81s

websrv-684ff84f56-2tm9x   1/1     Running   0          71s

websrv-684ff84f56-fnk5n   1/1     Running   0          71s

websrv-684ff84f56-qwl4w   1/1     Running   0          71s

websrv-684ff84f56-t8tfb   1/1     Running   0          71s



14

로드밸런서 만들기

kubectl expose deployment websrv --port=80 --type=LoadBalancer




15

kubectl get deploy,rs,pod,svc,ep


[root@s17efaea1ad2 ~]# kubectl get deploy,rs,pod,svc,ep


NAME                     READY   UP-TO-DATE   AVAILABLE   AGE

deployment.apps/websrv   4/4     4            4           3m12s


NAME                                DESIRED   CURRENT   READY   AGE

replicaset.apps/websrv-684ff84f56   4         4         4       3m15s


NAME                          READY   STATUS    RESTARTS   AGE

pod/nginx-pod                 1/1     Running   0          3m25s

pod/websrv-684ff84f56-2tm9x   1/1     Running   0          3m15s

pod/websrv-684ff84f56-fnk5n   1/1     Running   0          3m15s

pod/websrv-684ff84f56-qwl4w   1/1     Running   0          3m15s

pod/websrv-684ff84f56-t8tfb   1/1     Running   0          3m15s


NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP                           PORT(S)        AGE

service/kubernetes   ClusterIP      198.19.128.1    <none>                         443/TCP        14h

service/websrv       LoadBalancer   198.19.253.21   default-websrv-6f08b-9451819-b05130887c45.sgn.lb.naverncp.com   80:32390/TCP   84s


NAME                   ENDPOINTS                                                     AGE

endpoints/kubernetes   10.0.2.6:6443,10.0.2.7:6443,10.0.2.8:6443                     14h

endpoints/websrv       198.18.0.121:80,198.18.0.149:80,198.18.0.184:80 + 1 more...   87s



16

lb로 접속 하여 확인


<5> 삭제


1

서버 삭제?


Server > Server  에서 서버 삭제

서버 중지 > 반납



2

로드밸런서 삭제?


Load Balancer > 로드밸런서 삭제



3

쿠버네티스 삭제 ?


Kubernetes Service >  Cluster

삭제

클러스터 이름 넣기

a-k8s-dev



4

NAT Gateway 삭제 ?


NAT Gateway 삭제를 위해 , 0.0.0.0  NATGW 삭제후 , NAT Gateway를 삭제 해야 한다.


1)

VPC >  Route Table

a-dev-vpc-default-private-table  선택

Route Table에서 0.0.0.0  NATGW 삭제 부터 한다.  

Route 설정 >  0.0.0.0  NATGW  삭제


2)

VPC > NAT Gateway 삭제



5

Subnet 삭제


6

VPC 삭제




<6> 참고 자료



46. NKS 클러스터 만들고 게임 올리기-1/5

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


99. 네이버 클라우드 쿠버 네티스  생성 -14/15

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


(몰아보기) 네이버 클라우드로 도커, 쿠버 네티스 시작하기

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


604. 스타트업에서 AWS로 글로벌 네트워크 구축하기

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


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


감사합니다.

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