2021년 자료
아래 내용은 주말 CloudNet EKS 스터디 하며 , 해당 내용을 참고하여 작성 되었습니다.
EKS 클러스터 구축은 명령서버 생성과 EKS 클러스터 생성으로 나누어 진다.
EKS클러스터는 컨트롤 플래인(마스터 노드) + 워커노드 로 구성 된다.
1
명령서버 생성 ?
EC2 키페어 만든다.
CloudFormation 돌려 EC2 만든다.
eks-work-host 라고 EC2가 만들어진다.
EC2에 seo-admin-role 부여한다.
여기서, 사용의 편의를 위해 VPC안에 생성 해보자.
2
EKS 클러스터 생성?
서비스를 하기 위한 EKS 클러스터 생성하는것이다.
클러스터가 만들어지면, Pod 생성해보자
서비스(로드밸런서)를 만들어 외부에서 접속해보자
1
쿠버네티스는 마스터 노드(컨트롤 플래인) + 워커노드로 구성된다.
Amazon EKS는 마스터 노드는 AWS에서 운영해 준다.
EKS는 워커 노드만 사용자가 관리하면 된다.
2
개발자 사용 흐름?
EC2에 kubectl 설치 상태
EC2에서 kubectl 명령어 날림 - API Server로 명령을 날림
API Server는 Work node의 Kubelet에게 명령을 날림 , Pod등 리소스가 생성됨
개발자 PC가 직접 Work node의 Pod IP로는 연결하지는 못한다.
3
서비스 사용하는 사용자의 트래픽 흐름?
서비스 사용자 -> Work node의 kube-proxy - > Container 접속해서 서비스(Pod안에 Container 생성)
4
EKS는 기존 쿠버네티스 플러그인과 툴 모두 사용 가능하다.
온프라미스의 기존 쿠버네티스와 호환이 된다.
5
2개 VPC가 사용된다.
1) EKS Managed VPC ?
AWS에 관리하는 Control Plane이 위치한다.
2) 사용자 VPC ?
Work node와 Pod(컨테이너)가 위치한다.
6
EKS네트워크는 VPC 통합 네트워크이다.
Pod도 VPC 내부 주소대역을 같이 사용한다.
VPC 자체로 통신이 가능하다.
7
EKS VPC와 Work node가 있는 사용자 VPC와는 ENI로 연결된다.
EKS 컨트롤 플래인에서 node 접속을 할때는 ENI를 통해 접속한다.
ENI는 work node 사용자 VPC안에 위치한다.
ENI 소유는 AWS이다.
EKS Contraol Plane에서 실행,Logs,Proxy는 ENI를 통해 node로 연결한다.
8
AWS EKS는 ELB, Route53 와 연동한다.
EBS ,EFS 등 저장 스토지리와 연동한다.
IAM등 AWS 보안서비스와 연동해서 사용한다.
1
EC2에서 워커 node를 생성하자.
node에서 서비스 하자.
방법 1
콘솔로 클릭클릭해 EKS 생성
방법 2
eksctl로 생성 ?
EC2에 쿠버네티스를 설치할 eksctl 툴을 설치한다.
아마존 리눅스에 설치하는 유틸입니다.
EC2 생성시 userdata에 넣거나, EC2 설치후 실행한다.
여기 실습에서는 Cloudformation으로 만들거라 참고만 하기 바란다.
bash
k get pods -A
방법 3
AWS CloudFormation과 CDK로 생성
방법 4
테라폼 으로 생성
2
Master 와 워커 노드 생성
3
디플로이먼트?
배포를 관리하는 오브젝트이다.
파드를 동작시킬때 디플로이먼트 단위로 관리한다.
디플로이먼트 - 리플리카셋 - 파드 로 구성된다.
리플리카세트를 관리하고 다루기 위한 리소스이다.
프론트 앤드 서비스 적합
4
리플리카셋 컨트롤러 ?
Pod를 복제하도록 관리하는 컨트롤러
리플리카 = 복제
Pod를 몇개 운영할지 관리하는 오브젝트이다.
리플리카세트를 증가시키면 그만큼 Pod수가 증가한다.
똑같은 Pod수를 관리 및 제어한다.
5
Pod ?
파드는 IP를 가지는 서버이다.
Pod내 컨테이너들은 서로 IP를 공유한다.
파드안에 컨테이너가 여러개 운영 될 수 있다.
파드에 어플리케이션이 올라가 서비스를 한다.
nginx 컨테이너를 올리면 웹서버가 된다.
6
스테이트풀셋(StatefulSet) 컨트롤러 ?
상태를 저장해야 하는 데이터 베이스에 적합한 컨트롤러
Redis,Zookeeper,Cassandra,MongoDB 등 Master-Slave 구조 시스템
백엔드 서비스 적합
Pod와 퍼시스턴트 볼륨 조합으로 데이터의 보관에 중점을 둔 컨트롤러.
Pod와 퍼시스턴트 볼륨에 번호를 매겨 관리.
7
잡(Job) 컨트롤러 ?
배치 서비스에 적합
배치 처리하는 컨테이너를 정상 처리되도록 반복하는 컨트롤러
8
크론잡(CronJob) 컨트롤러 ?
배치 서비스에 적합
지정한 시작에 정기작업 실행.
9
데몬셋(DaemonSet) 컨트롤러 ?
시스템 운영에 적합한 컨트롤러
모든 노드에 같은 파드를 실행하기 위해 존재함.
노드가 추가 되면 dns pod가 추가되거나 모니터링 pod가 추가되도록 한다.
10
서비스?
로드밸런서 L4 , L7이라고 생각하면 된다.
Pod를 외부에 노출 시키기 위한 서비스이다.
11
구성 ?
사용자------- [ 서비스(L4)------디플로이먼트-리플리카세트-Pod(컨테이너) ]
[ 쿠버네티스 클러스터 ]
Deployment = 배포 역할
ReplicaSet = 복제 역할
Pod = 컨테이너 실행 역할
12
디플로이먼트로 Pod생성 ?
디플로이먼트 dpy-nginx
k create deployment dpy-nginx --image=nginx
디플로이 먼트로 생성한 pod는 scale 가능
k scale deployment dpy-nginx --replicas=3
NAME READY STATUS RESTARTS AGE
pod/dpy-nginx-858d475df8-s8jfp 1/1 Running 0 10m
pod/dpy-nginx-858d475df8-w749m 1/1 Running 0 2m54s
pod/dpy-nginx-858d475df8-x7mhx 1/1 Running 0 2m54s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/dpy-nginx 3/3 3 3 10m
요약
명령 내릴 EC2만들기
EC2 키페어 만들고, CloudFormation 돌려 EC2 만든다.
EC2에 seo-admin-role 부여한다.
1
실습 구성
2
AWS 개인 계정에 로그온 한다.
서울 리전에서 한다
또는
도쿄 리전에서 한다.
3
EC2이므로 EC2 > Key-pair 미리 생성한다.
EC2에서 사용할 admin-role 을 미리 생성한다.
Stack name (필수)
// 아래 이름과 동일하게 필수 - Cloudformation이용 CLI로 클러스터 생성시 해당 Stack name사용함
eks-work-base
4
EC2에 admin role 을 주어 사용하거나, Access-key를 만들어 사용한다.
여기서는 EC2에 admin role 을 주어 사용하여, access-key는 생성하지 않는다.
admin role 만들어 ec2에 적용하여 사용한다.
iam > Roles > Create role > EC2 >
seo-admin-role
5
계정 생성 (선택)
access-key는 생성법 ?
IAM > user > eks-topasvga6-key
프로 그램 방식 Access-key 생성 > attach existing policies directly > admin 권한 부여
6
EC2 접속을 위한 키 페어 생성
EC2 > 키 페어 >
master-seo-seoul-personal
7
별도 VPC 로 명령 실행용 EC2 생성
서울 리전
AWS CloudFormation 실행
툴까지 설치된 EC2도 자동 생성된다.
Stack name (필수)
// 아래 이름과 동일하게 필수- CLI실행시 해당 Stack name사용함
eks-work-base
8
Cloudformation
도쿄 리전용 - EC2 생성 CloudFormation-mini
9
Cloudformation
서울 리전용 EC2 생성
싱가포르 리전용 EC2 생성
10
별도 VPC에 설치 된다. - eks-work-VPC 생성 됨
Public Subnet 안에 EC2가 생성된다.
11
Public 3개를 생성됨
eks-work-WorkerSubnet1 (eks-work-host 생성)
eks-work-WorkerSubnet2
eks-work-WorkerSubnet3
12
vpc와 ec2 1개 배포 된다.
keypair는 기본적으로 만들어져 있어야 한다.
웹 콘솔로 만들어도 되고, 아래처럼 cli로 만들어도 된다.
13
cli로 SSH 키페어 생성
aws ec2 create-key-pair --key-name eks-ssh --query 'KeyMaterial' --output text > eks-ssh.pem
14
SSH 키페어 확인
aws ec2 describe-key-pairs
aws ec2 describe-key-pairs --query 'KeyPairs[*].KeyName' --output text
MySSHKeypair=<자신의 SSH 키페어 이름>
export MySSHKeypair=$(aws ec2 describe-key-pairs --query 'KeyPairs[*].KeyName' --output text)
echo $MySSHKeypair
15
내 공인 IP 확인 (선택)
curl ifconfig.me
curl ipinfo.io
curl ipinfo.io/ip
16
배포 ?
eks-work-base (필수)
aws cloudformation deploy --template-file k8s-aws-book/eks-env/01_base_resources_cfn.yaml --stack-name eks-work-base --parameter-overrides KeyName=seo-key SgIngressCidr=1.2.3.4/32
// SgIngressCidr=1.2.3.4/32 는 내 PC의 IP의 공인 IP 입력(선택)
// 작업용 EC2의 보안그룹에 내 IP를 허용하는 것이다.
17
AWS CloudFormation 실행시 ?
Stack name
eks-work-base (필수)
(중요) eks-work-base으로 스택 이름을 한다 // 이 부분 아래 내용에 나오니 동일하게 하자.
KeyName
만들어진 키페어 선택
SgIngressCidr에 집 ip로 사용 (선택)- EC2 접속 소스 IP 지정
아니면 그냥 0.0.0.0/0 나눠도 된다.
CloudFormation 완료되면
18
만들어진 로그 확인
more /var/log/cloud-init-output.log
19
기타
일반 EC2 만들고 Tool 설치하기
https://brunch.co.kr/@topasvga/1898
1
만들어진 ec2 eks-work-host 에 admin-role을 부여한다.
EC2 > instance > eks-work-host > 오른 마우스 > 보안 > IAM 역할 수정 > seo-admin 연결한다.
2
EC2 접속
자격 권한이 잘 들어갔는지 확인
aws ec2 describe-vpcs
3
내 ip 확인 ?
aws cloudformation describe-stacks --stack-name eks-work-base --query 'Stacks[*].Outputs[3].OutputValue' --output text
// eks-work-base 이 cloudformation 이름이다.
or
curl ipconfig.io
4
라우팅 테이블, vpc , workersubnet , eksctl host 확인?
aws cloudformation describe-stacks --stack-name eks-work-base --query 'Stacks[*].Outputs' --output table
[root@eksctl-host ~]# aws cloudformation describe-stacks --stack-name eks-work-base --query 'Stacks[*].Outputs' --output table
CloudFormation 기반으로 변수 저장 등 추가 작업한다.
Public Subnet을 변수에 넣는다. (필수)
VpcBlock:
Default: 192.168.0.0/16
WorkerSubnet1Block: (public Subnet)
Default: 192.168.0.0/24
Default: 192.168.1.0/24
Default: 192.168.2.0/24
1
서브넷을 변수에 넣기
eks-work-base (stack name이다)
WKSubnets=`aws cloudformation describe-stacks --stack-name eks-work-base --query 'Stacks[*].Outputs[2].OutputValue' --output text`
echo $WKSubnets
[root@eksctl-host ~]# echo $WKSubnets
subnet-70c8c8271b1,subnet-c64f7777b,subnet-0b3a183eff
2
클러스터 이름을 변수 저장 ?
export CLUSTER_NAME=first-eks
echo 'export CLUSTER_NAME=first-eks' >> ~/.bashrc
echo $CLUSTER_NAME
first-eks
3
리전을 변수 저장 ?
aws configure
[root@eksctl-host ~]# aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]: ap-northeast-1
Default output format [None]:
export AWS_REGION=$(aws configure get default.region)
echo "export AWS_REGION=$AWS_REGION" >> ~/.bashrc
echo $AWS_REGION
ap-northeast-1
4
키 페어 변수 저장 (필수) ?
SSH 키페어 확인
aws ec2 describe-key-pairs
aws ec2 describe-key-pairs --query 'KeyPairs[*].KeyName' --output text
MySSHKeypair=master-seo-seoul-personal
echo $MySSHKeypair
MySSHKeypair=`aws ec2 describe-key-pairs --query 'KeyPairs[*].KeyName' --output text`
echo $MySSHKeypair
5
vpc 변수 지정 ?
WKVPC=`aws cloudformation describe-stacks --stack-name eks-work-base --query 'Stacks[*].Outputs[1].OutputValue' --output text`
echo $WKVPC
6
stack에서 정보 보기
aws cloudformation describe-stacks --stack-name eks-work-base
aws cloudformation describe-stacks --stack-name eks-work-base --query 'Stacks[*]'
aws cloudformation describe-stacks --stack-name eks-work-base --query 'Stacks[*].Outputs'
aws cloudformation describe-stacks --stack-name eks-work-base --query 'Stacks[*].Outputs' --output table
aws cloudformation describe-stacks --stack-name eks-work-base --query 'Stacks[*].Outputs' --output text
aws cloudformation describe-stacks --stack-name eks-work-base --query 'Stacks[*].Outputs[2]'
aws cloudformation describe-stacks --stack-name eks-work-base --query 'Stacks[*].Outputs[2].OutputValue'
aws cloudformation describe-stacks --stack-name eks-work-base --query 'Stacks[*].Outputs[2].OutputValue' --output text
7
aws 임시 자격증명 확인 ?
aws sts get-caller-identity
0
변수 지정 확인
echo $CLUSTER_NAME
echo $WKSubnets
echo $AWS_REGION
echo $MySSHKeypair
// 값이 다 나와야 한다.
1
생성 사전 테스트
# 생성은 하지 않고 설정 정보 출력
node를 2개로 만든다.
eksctl create cluster --vpc-public-subnets $WKSubnets --name $CLUSTER_NAME --region $AWS_REGION --version 1.21 --nodegroup-name $CLUSTER_NAME-nodegroup --node-type t3.medium --nodes 2 --nodes-min 2 --nodes-max 6 --with-oidc --node-volume-size=20 --ssh-access --ssh-public-key $MySSHKeypair --dry-run
2
생성
eksctl create cluster --vpc-public-subnets $WKSubnets --name $CLUSTER_NAME --region $AWS_REGION --version 1.21 --nodegroup-name $CLUSTER_NAME-nodegroup --node-type t3.medium --nodes 2 --nodes-min 2 --nodes-max 6 --with-oidc --node-volume-size=20 --ssh-access --ssh-public-key $MySSHKeypair
(25분 걸림)
주의) 공란이나 변수가 지정되지 않았을때 아래와 오류 메시지가 뜬다.
2021-08-22 21:54:23 [✖] only one argument is allowed to be used as a name
3
생성 옵션들 확인 (참고)
eksctl create
4
JSON파일로도 만들수 있다.(참고)
https://aws-eks-web-application.workshop.aws/ko/50-eks-cluster/100-launch-cluster.html
5
EKS 생성 완료 메시지를 확인한다.
참고
eksctl로 EKS 클러스터 생성시 yaml 파일로 생성도 가능하다.
https://aws-eks-web-application.workshop.aws/ko/50-eks-cluster/100-launch-cluster.html
6
# 확인
k get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system aws-node-grhz5 1/1 Running 0 4m34s
kube-system aws-node-vbw9k 1/1 Running 0 4m23s
kube-system coredns-76f4967988-hl22p 1/1 Running 0 16m
kube-system coredns-76f4967988-z644n 1/1 Running 0 16m
kube-system kube-proxy-7jlbx 1/1 Running 0 4m23s
kube-system kube-proxy-gfkbw 1/1 Running 0 4m34s
// node 2개 , coredns 2개 , proxy 2개가 생성 된다.
7
# 프롬프트 변경하기
kube-ps1 설치
# Install kube-ps1
git clone https://github.com/jonmosco/kube-ps1.git /root/kube-ps1
cat <<"EOT" >> ~/.bash_profile
source /root/kube-ps1/kube-ps1.sh
KUBE_PS1_SYMBOL_ENABLE=false
function get_cluster_short() {
echo "$1" | cut -d . -f1
}
KUBE_PS1_CLUSTER_FUNCTION=get_cluster_short
KUBE_PS1_SUFFIX=') '
PS1='$(kube_ps1)'$PS1
EOT
source ~/.bash_profile
1
node 와 pod 를 잘 볼수 있다.
2
설정
https://brunch.co.kr/@topasvga/1867
3
https://www.eksworkshop.com/beginner/080_scaling/install_kube_ops_view/
1
실습은 AWS 계정의 IAM 계정으로 사용하도록 한다. ROOT 계정으로 하지 않는다.
ROOT로 사용하지 않는 이유는 ?
IAM 사용자의 권한을 가지고, 클러스터를 생성하는데
쿠버네티스 컨트롤 플래인에서 클러스터 RBAC 의 sysyem:masters 권한을 자동으로 받게 된다.
2
VPC와 명령을 실행시킬수 있는 EC2를 만드는 Cloudformation 실행한다.
(도쿄리전 Cloud Formation 제공)
Public Subnet 3개 - Public Subnet에 EC2 1개를 만든다.
EC2에 접속한다.
여기서는 EC2에 admin role 을 주어 사용하여, access-key는 생성하지 않는다.
3
EC2에 로그온해서 서브넷 등을 변수로 지정하고, eksctl로 EKS클러스터 생성한다.
4
클라우드포메이션으로 DB생성한다.
EKS와 관련 없고, DB실습을 위해 필요 (선택)
5
시범 서비스 구성도
6
프론트?
외부 사용자가 S3 정적 홈페이지 접속하는 구성
사용자는 Cloudfront에 접속 > S3 버킷
S3는 ELB 통해 백엔드 API로 간다.
백엔드는 뒷단의 RDS에서 정보를 가져 온다.
7
백엔드?
EKS worker node의 Pod에서비스 - ecr 사용
rds 사용
사용자 > ELB > worker node > rds로 동작하는 구조
8
배치?
S3에 데이터 추가하면 프론트에 갱신 하는것이다.
S3에 정보를 올린다.
ELK 배치 파드가 Cron job으로 S3에서 정보를 받아와 RDS 에 저장한다.
RDS데이터를 프론트 컨테이너가 업데이트 받아 보여준다.
1
DB 구축하는데 시간이 걸리므로 미리 cloudformation을 실행한다.
stack-name
eks-work-rds
2
Private subnet 3개가 생긴다.
Private subnet에 db가 구축된다.
3
확인
rds > eks-work-db 확인
PostgreSQL 설치됨
1
노드 IP 정보 확인
aws ec2 describe-instances --query "Reservations[*].Instances[*].{PublicIPAdd:PublicIpAddress,PrivateIPAdd:PrivateIpAddress,InstanceName:Tags[?Key=='Name']|[0].Value,Status:State.Name}" --filters Name=instance-state-name,Values=running --output table
-------------------------------------------------------------------------------------
| DescribeInstances |
+-------------------------------------+----------------+-----------------+-----------+
| InstanceName | PrivateIPAdd | PublicIPAdd | Status |
+-------------------------------------+----------------+-----------------+-----------+
| eks-work-host | 192.168.0.100 | 3.36.85.65 | running |
| first-eks-first-eks-nodegroup-Node | 192.168.1.191 | 3.35.7.233 | running |
| first-eks-first-eks-nodegroup-Node | 192.168.2.158 | 13.125.246.247 | running |
+-------------------------------------+----------------+-----------------+-----------+
2
터미널 하나 더 띠우기
모니터링하기
watch -d kubectl get pods,deploy,svc,ep,rs
or
watch -d 'kubectl get deploy,pods,svc,ep -o wide'
watch -d 'kubectl get all -o wide'
서비스 / 쿠버네티스 1개
엔드포인트 / 쿠버네티스 1개 보임
3
// ec2에서 node에 접속 되도록 rule 추가
# 노드 보안그룹 ID 확인
NGSGID=`aws ec2 describe-security-groups --filters Name=group-name,Values=*nodegroup* --query "SecurityGroups[*].[GroupId]" --output text`
echo $NGSGID
# 노드 보안그룹에 작업용 EC2인 eksctl-host 에서 노드(파드)에 접속 가능하게 룰(Rule) 추가 설정
작업용 EC2인 eksctl-host ip 가 192.168.0.100/32 이다.
모든 트래픽을 허용하는 룰이다.
aws ec2 authorize-security-group-ingress --group-id $NGSGID --protocol '-1' --cidr 192.168.0.100/32
# eksctl-host 에서 파드나 노드로 ping, curl 테스트 해보자. 잘 된다.
ping <pod IP>
1
테스트
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
2
서비스 / 쿠버네티스 - 1개
엔드포인트 / 쿠버네티스 - 1개
생성된 Pod/nginx-pod - 1개 보임
watch -d 'kubectl get deploy,rs,pod,svc,ep'
3
# 포트 포워딩 설정 - 터미널 1
kubectl port-forward nginx-pod 8080:80
[root@eksctl-host ~]# kubectl port-forward nginx-pod 8080:80
Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80
// 실행시킨 상태에서 다른 터미널에서 curl 테스트
// 호스트 8080포트를 내부 80 포트와 매칭시킴
4
터미널 2
# cul 접속
curl localhost:8080
혹은
lynx -dump localhost:8080
[root@eksctl-host ~]# curl localhost:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
5
kubectl get pods
[root@eksctl-host ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 3m55s
6
# 파드 삭제
kubectl delete pod nginx-pod
외부에서 접속 하려면 서비스가 있어야 한다.
서비스는 로드밸런서 L4라고 생각하면 된다.
1
디플로이먼트와 컨테이너 구성 확인
2
터미널2에서 모니터링
watch -d 'kubectl get deploy,pods,svc,ep,rs -o wide'
3
디플로이먼트 생성?
nginx 이미지로 websrv pod를 만들어보자~
kubectl create deployment websrv --image=nginx --port=80 --replicas=4
// 디플로이먼트 1개와 replicaset 1개, pos 4개가 생성된다.
디플로이먼트 1개
replicaset 1개
Pod 4개 보임
서비스 / 쿠버네티스 1개 - 기존에 있던것
엔드포인트 / 쿠버네티스 - 기존에 있던것
4
서비스 생성 ?
Pod를 외부에 노출하기 위한 부분.
L4라고 생각하면 된다.
kubectl expose deployment websrv --port=80 --type=LoadBalancer
service/websrv exposed
(10분 걸림)
service/websrv LoadBalancer 1개 생긴다. CLB
endpoints/websrv 1개가 생긴다.
5
서비스 도메인에 대해 DNS 질의해 본다.
[root@eksctl-host ~]# dig ac2858703ca324ce08f7148e9b9d3199-1519822352.ap-southeast-1.elb.amazonaws.com +short
18.136.113.95
52.220.131.89
18.138.120.46
6
웹 접속 - 웹 브라우저에서 External-IP 로 접속
7
서비스 확인
kubectl get svc
8
서비스 정보 확인
kubectl describe svc websrv
Name: websrv
Namespace: default
Labels: app=websrv
Annotations: <none>
Selector: app=websrv
Type: LoadBalancer
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.100.51.215
IPs: 10.100.51.215
LoadBalancer Ingress: a89ea0383fe-331818142.ap-southeast-1.elb.amazonaws.com
Port: <unset> 80/TCP
TargetPort: 80/TCP
NodePort: <unset> 32179/TCP
Endpoints: 192.168.1.15:80,192.168.2.127:80
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
9
서버수(pod수) 조절
kubectl scale deployment websrv --replicas=2
10
접속자 IP 확인 ?
아래 명령서 실행시키로 웹브라우저로 서비스 접속해본다.
아래처럼 로그가 나온다.
kubectl logs -l app=websrv -f --max-log-requests 8
참고로 , 접속자 ip 는 192.168.x.x 로 EKS 네트워크 IP로 보인다~
11
실습 - 게임 만들기
https://brunch.co.kr/@topasvga/1868
12
삭제
kubectl delete deploy,svc websrv
deployment.apps "websrv" deleted
service "websrv" deleted
13
kubeconfig ?
eksctl은 클러스터 구축중에 kubeconfig 파일을 자동 업데이트 한다.
eksctl이 이용할 설정 파일이다.
접속 정보를 저장 한다.
컨트롤 플레인 URL , 인증정보 , 네임스페이스등 저장한다.
k config get-contexts
1
EC2 > Auto Scaling Groups 삭제
2
Cloud formation 에서 삭제
3
EKS 가서 리소스 있으면 삭제
4
EC2 가서 리소스 있으면 삭제
https://brunch.co.kr/@topasvga/1818
참고
https://brunch.co.kr/@topasvga/1679
감사합니다.