
โ๏ธ 0. ECS - ์์
์ ์ (task)

โ๏ธ 1. ์์ ์ ํ ํธํ์ฑ - EC2 ์ ํ
โ๏ธ 2. ํ
์คํฌ ์ ์ ์ด๋ฆ : MY-TD

โ๏ธ 3. ์์
ํฌ๊ธฐ ๊ณต๋.
โ๏ธ 4. ์ปจํ
์ด๋ ์ ์ - ์ปจํ
์ด๋ ์ถ๊ฐ
ํ์ค ; docker run -d -p 80:80 --name containername img
โ๏ธ 4-1. ์ปจํ
์ด๋ ์ด๋ฆ : webserver
โ๏ธ 4-2. ์ด๋ฏธ์ง : nginx
โ๏ธ 4-3. ๋ฉ๋ชจ๋ฆฌ์ ํ : 128
โ๏ธ 4-4. ํฌํธ๋งคํ : 80 : 80
โ๏ธ 4-5. ์ถ๊ฐ
โ๏ธ 4-6. ๋งจ ํ๋จ ์์ฑ๋ฒํผ ํด๋ฆญ
โ๏ธ 1. ํด๋ฌ์คํฐ - ํด๋ฌ์คํฐ ์์ฑ
ํ
ํ๋ฆฟ : EC2 Linux + ๋คํธ์ํน
ํด๋ฌ์คํฐ ๊ตฌ์ฑ ;
ํด๋ฌ์คํฐ ์ด๋ฆ : MY-CLUSTER
์ธ์คํด์ค ๊ตฌ์ฑ ;
ํ๋ก๋น์ ๋ ๋ชจ๋ธ - ์จ๋๋งจ๋ ์ธ์คํด์ค
์คํ์ธ์คํด์ค ;๋ณ๋ ฌ, ์์๊ฐ์ ๋ง์ ๊ณต๊ฐ์ด ํ์ํ  ๋. ํด๋ฌ์คํฐ์์ ๋ง์ด ์ด๋ค. ์ ๋ ดํด์.
EC2 ์ธ์คํด์ค ์ ํ : ์ํ๋ ์ธ์คํด์ค ์ ํ ์ง์  ์
๋ ฅ, t2.micro
์ธ์คํด์ค ๊ฐ์ : 2
๋ฃจํธ๋ณผ๋ฅจํฌ๊ธฐ : 30
ํค ํ์ด : ๋ง๋ค์ด๋ ๊ฒ ์ ํ
โ๏ธ ๋คํธ์ํน VPC: MY-VPC
์๋ธ๋ท : PUBLIC SUBNET 2A,C
ํผ๋ธ๋ฆญ IP ์๋ํ ๋น : ํ์ฑํ ๋จ
๋ณด์๊ทธ๋ฃน : MY-SG-WEB
์ปจํ
์ด๋ ์ธ์คํด์ค IAM์ญํ  : ๊ทธ๋๋ก ๋๊ธฐ ์ ํํ  ๊ฑฐ ์์ ์ ํํ๊ณ .
-์์ฑ๋ฒํผ ํด๋ฆญ
โ๏ธ ์๋น์ค - ์์ฑ ํด๋ฆญ

์์ ์ ํ : EC2
์์
 ๊ฐ์ :2
์ต์ ์ํ ๋ฐฑ๋ถ์จ : 50 ; ํ๋ ์ง์ฐ๊ณ  ํ๋ ๋จ๊ธฐ๊ณ 
์ต๋ ๋ฐฑ๋ถ์จ : 100; 2๊ฐ๋ฅผ 100์ผ๋ก ๋ณด๊ธฐ
->๋ง์ฝ 100,200์ด๋ฉด 2๊ฐ๊ฐ ๊ธฐ๋ณธ 4๊ฐ๊น์ง ๋์ด๋  ์ ์์. ๊ตฌํ ์ง์ฐ์ง ์๊ณ  4๊ฐ ๋ง๋  ๋ค์ ์๋ ๊ฑฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์ง์ฐ๋ ๋๋.

๋ฐฐํฌ์ ํ : ๋กค๋ง ์
๋ฐ์ดํธ ;๋ฐฑ๋ถ์จ
-๋ค์๋จ๊ณ
๋ก๋๋ฐธ๋ฐ์ ์ ํ : ALB
์ํ๊ฒ์ฌ ์ ์๊ธฐ๊ฐ : 150
EC2์ฝ์์์ ๋ก๋๋ฐธ๋ฐ์ ๋ง๋ค๊ณ  ์ค๊ธฐ(ALB์์ฑ)
์ด๋ฆ : ECS-ALB
VPC: MY-VPC
์๋ธ๋ท: ํผ๋ธ๋ฆญ 2a,2c
๋ณด์๊ทธ๋ฃน : default ์ง์ฐ๊ณ  MY-SG-WEB์ ํ
๋์๊ทธ๋ฃน ์์ฑ ํ๊ณ  ์ค๊ธฐ
์ด๋ฆ : TG-ECS
ํ๋กํ ์ฝ : 80
๋ค์ ๋ก๋๋ฐธ๋ฐ์ ์ฝ์์์ ๋์๊ทธ๋ฃน TG-ECS ์ ํํ๊ณ  ๋ก๋๋ฐธ๋ฐ์ ์์ฑ ํด๋ฆญ
(๋ช
์ ์ํด๋ ๊ฒ์ default)
๋ค์ ์๋น์ค ์์ฑ์ผ๋ก ์์, ๋ก๋๋ฐธ๋ฐ์ ์ด๋ฆ ECS-ALB์ ํ
๋ฐธ๋ฐ์ฑํ  ์ปจํ
์ด๋ : ๋ก๋๋ฐธ๋ฐ์์ ์ถ๊ฐ๋ฒํผ ํด๋ฆญ
ํ๋ก๋์
 ๋ฆฌ์ค๋ ํฌํธ : 80:HTTP
๋์๊ทธ๋ฃน ์ด๋ฆ : TG-ECS

-๋ค์๋จ๊ณ 
auto scaling



-๋ค์ - ์๋น์ค ์์ฑ๋ฒํผ ํด๋ฆญ

-> ๋ก๋๋ฐธ๋ฐ์ DNS ์ฃผ์๋ก ์ ๊ทผ ๊ฐ๋ฅ.

๋ ์ฝ๋ ์์ฑํด์ ๊ฐ์ํ๋ ๋๋ฉ์ธ ์ด์ฉํ๊ธฐ.
โ๏ธ ์์ ์ ์ -MY-TD ํด๋ฆญ - ์ ๊ฐ์ ์์ฑ ํด๋ฆญ
โ๏ธ ํ๋จ์ผ๋ก ๋ด๋ ค์ ์ปจํ ์ด๋ ์ ์ -์ปจํ ์ด๋ ์ด๋ฆ ํด๋ฆญ - ์ด๋ฏธ์ง nginx๋ฅผ mj030kk/web-site:v1.0๋ก ๋ฐ๊พธ๊ธฐ. - ์ ๋ฐ์ดํธ ํด๋ฆญ

โ๏ธ ๋งจ ํ๋จ ์์ฑ๋ฒํผ ํด๋ฆญ
ํด๋ฌ์คํฐ - MY-CLUSTER ํด๋ฆญ - ์๋น์ค์์ MY-WEBํด๋ฆญ- ์
๋ฐ์ดํธ ํด๋ฆญ

๊ฐ์  2, ์ ๋ฐฐํฌ์ ์ฉ ์ฒดํฌ.

๋ค๋ฅธ ๊ฒ ๋ค ๊ทธ๋๋ก ๋๊ณ  ๋ค์๋จ๊ณ ์งํ.



โ๏ธ centos7 ova๊ฐ์ ธ์ค๊ธฐ CPU2, RAM 4GB(์ต์์ฉ๋)
โ๏ธ ์ค์  ; ์ด๋ฆ : Minikube ๋คํธ์ํฌ - ๋งฅ ์ด๋๋ ์ค ์๋ก๊ณ ์นจ - ์์
IP : 192.168.1.166
(single Node : Master Node + Worker Node), (Multi Node: Master Node, Worker Node)
์ฟ ๋ฒ๋คํฐ์ค ์ปจํ
์ด๋ ๋ฐํ์์ ์ํด ๋์ปค ์ค์น
# curl -fsSL https://get.docker.com/ | sudo sh
# systemctl enable --now docker
# yum install -y conntrack git
# curl -Lo minikube https://storage.googleapis.com/minikube/releases/v1.23.2/minikube-linux-amd64 && chmod +x minikube
# mkdir -p /usr/local/bin/
# install minikube /usr/local/bin/
# minikube version
# minikube start --driver=none ##๊ฐํธ์ค์น ์ํด์ ๋๋ผ์ด๋ฒ ์ค์  X. ๋๋ผ์ด๋ฒ ์ค์ ํ๋ฉด ๋ ๊ทธ ๋๋ผ์ด๋ฒ ์ํด์ ์ค์นํ  ๊ฒ๋คใ
 ใ
ฃ์๊น.
# minikube status
api์๋ฒ์ ์ฐ๊ฒฐํ๋ ๋๊ตฌ
# curl -LO https://dl.k8s.io/release/v1.22.2/bin/linux/amd64/kubectl
# install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# source <(kubectl completion bash)
# echo "source <(kubectl completion bash)" >> ~/.bashrc
# exit
# kubectl version
# mkdir workspace && cd $_
# kubectl run nginx-pod --image=nginx
# kubectl get node
# kubectl get pod
# kubectl expose pod nginx-pod --name clusterip --type=ClusterIP --port 80
[root@localhost workspace]# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
clusterip    ClusterIP   10.98.216.228   <none>        80/TCP    2m2s
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   110m
[root@localhost workspace]# curl 10.98.216.228
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
->ClusterIP๋ ์ธ๋ถ ๋ธ๋ผ์ฐ์ ์์๋ ์ ์ ์๋จ ๋ด๋ถ์์ curl๋ก ํ์ธ ํด์ผํจ
# kubectl expose pod nginx-pod --name nodeport --type=NodePort --port 80



# kubectl expose pod nginx-pod --name loadbalancer --type=LoadBalancer --external-ip 192.168.1.166 --port 80
[root@localhost workspace]# kubectl get svc
NAME           TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)        AGE
clusterip      ClusterIP      10.98.216.228    <none>          80/TCP         55m
kubernetes     ClusterIP      10.96.0.1        <none>          443/TCP        163m
loadbalancer   LoadBalancer   10.101.230.101   192.168.1.166   80:30228/TCP   83s
nodeport       NodePort       10.109.64.156    <none>          80:31999/TCP   24m


ํ๋ ; ์ฟ ๋ฒ๋คํฐ์ค์์ ๋ฐฐํฌํ  ์ ์๋ ๊ฐ์ฅ ์์ ๋จ์
์๋น์ค ; ๋คํธ์ํฌ์ ๊ด๋ จ๋ ๋ฆฌ์์ค pod๋ฅผ ์ธ๋ถ ๋คํธ์ํฌ์ ์ฐ๊ฒฐํด์ฃผ๊ณ  ์ฌ๋ฌ๊ฐ์ pod๋ฅผ ๋ฐ๋ผ๋ณด๋ ๋ด๋ถ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์์ฑํ  ๋ ์ฌ์ฉ.
clusterIP


ํธ์คํธํฌํธ๊ฐ ๊ณง ๋
ธ๋ํฌํธ๋ค.
๋ด๋ถ์์ clusterIP๋ก curl ํ๋ฉด ๋ด๋ถ์์ ์น์๋ฒ ํ์ธ ๊ฐ๋ฅ.
nodeport์ด์ฉํ๋ฉด ๋ด๋ถ์์๋ ๋ฌผ๋ก  ๋ฐ๊นฅ์์๋ ํ์ธ ๊ฐ๋ฅ.
์ฌ๊ธฐ์ ํ์ฉํด์ผ ํ  ๊ฒ์ ํฌํธ๋ฒํธ์.
ํธ์คํธ IP:nodeport๋ฒํธ

pod ์ง์
[root@localhost workspace]# kubectl exec -it nginx-pod -- bash
root@nginx-pod:/#
root@nginx-pod:/# cd /usr/share/nginx/html/
root@nginx-pod:/usr/share/nginx/html# echo "minikube" > index.html

# kubectl get all
# kubectl delete svc clusterip
# kubectl delete svc --all
# kubectl delete pod nginx-pod
 Service
# vi nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    app: nginx-pod //service์์ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ
spec:
  containers:
  - name: nginx-pod-container
    image: nginx
    
# kubectl apply -f nginx-pod.yaml
# kubectl get pod
# docker images
# kubectl get pod -o wide
# kubectl describe pod nginx-pod
# vi clusterip-pod.yaml
apiVersion: v1
kind: Service
metadata:
  name: clusterip-service-pod
spec:
  type: ClusterIP
  selector:
    app: nginx-pod
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
# kubectl apply -f clusterip-pod.yaml
# kubectl get svc -o wide
# kubectl describe svc clusterip-service-pod
------------ ์๋น์ค์ ์ฐ๊ฒฐ๋๋ nginx-pod ๋ฐ๊ฟ๋ณด๊ธฐ--
[root@localhost workspace]# kubectl delete svc clusterip-service-pod
[root@localhost workspace]# vi clusterip-pod.yaml
    app: nginx-pod1
  
[root@localhost workspace]# kubectl apply -f clusterip-pod.yaml
service/clusterip-service-pod created
[root@localhost workspace]# kubectl get svc
NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
clusterip-service-pod   ClusterIP   10.96.217.148   <none>        80/TCP    38s
kubernetes              ClusterIP   10.96.0.1       <none>        443/TCP   67m
[root@localhost workspace]# curl 10.96.217.148
curl: (7) Failed connect to 10.96.217.148:80; Connection refused
[root@localhost workspace]#
 
 [root@localhost workspace]# vi clusterip-pod.yaml
 ->ํฌํธ๋ฒํธ๋ฅผ 8080์ผ๋ก
[root@localhost workspace]# kubectl apply -f clusterip-pod.yaml
service/clusterip-service-pod created
[root@localhost workspace]# kubectl get svc
NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
clusterip-service-pod   ClusterIP   10.97.198.129   <none>        8080/TCP   22s
kubernetes              ClusterIP   10.96.0.1       <none>        443/TCP    69m
[root@localhost workspace]# curl 10.97.198.129
^C
[root@localhost workspace]# curl 10.97.198.129:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
[root@localhost workspace]# kubectl edit svc clusterip-service-pod
service/clusterip-service-pod edited
-> edit์ด์ฉํด์ ํฌํธ๋ฒํธ ๋ค์ 80์ผ๋ก
[root@localhost workspace]# curl 10.97.198.129
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
-> ๋ฐ๋ก ๋จ.
-----------------------------------
 
 
# vi nodeport-pod.yaml
apiVersion: v1
kind: Service
metadata:
  name: nodeport-service-pod
spec:
  type: NodePort
  selector:
    app: nginx-pod
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80 ##๋ฐ๊พธ๋ฉด ์๋จ! ์ปจํ
์ด๋ ํฌํธ์.
    nodePort: 30080 ( 30000~32767 ๊ฐ๋ฅ)
# kubectl apply -f nodeport-pod.yaml
# kubectl get svc -o wide
# kubectl describe svc nodeport-service-pod
# vi loadbalancer-pod.yaml
apiVersion: v1
kind: Service
metadata:
  name: loadbalancer-service-pod
spec:
  type: LoadBalancer
  externalIPs:
  - 192.168.1.166
  selector:
    app: nginx-pod
  ports:
  - protocol: TCP
    port: 80
 
 ->ํ๊ฒํฌํธ ๋ฃ์ง ์์๋ ์ ์ ์ ๋จ. (curl)
# kubectl apply -f loadbalancer-pod.yaml
# kubectl get svc -o wide
# kubectl describe svc loadbalancer-service-pod
โ๏ธ์ด๋ฏธ์ง ๋ฐ๊ฟ๋ณด๊ธฐ
[root@localhost workspace]# kubectl get pod
NAME        READY   STATUS    RESTARTS   AGE
nginx-pod   1/1     Running   0          71m
[root@localhost workspace]# kubectl edit pod nginx-pod


๐โ๏ธโ๏ธ๐ขโญ๏ธ๐
ํ
๋ผํผ ํ๋ก๋น์ 
์ค์๋ธ ๊ตฌ์ฑ๊ด๋ฆฌ
๋์ปค ์๋ฒํ
ํ๋ฆฟ
์ฟ ๋ฒ๋คํฐ์ค ์ค์ผ์คํธ๋ ์ด์
 ๋๊ตฌ