7탄 = 1/5
서울리전에 쿠버네티스를 설치해보자.
VPC > Your VPC > Default VPC만든다.
AWS 기본 5개까지 VPC생성 가능.
쿠버네티스 클러스터를 만들 베스천 서버 1대를 만들자.
dev-cluster
dev-nodes
1
베스천 서버 생성을 위해 퍼블릭 네트워크에 서버 1대를 만든다.
aws에서 제공하는 디폴트 네트워크가 퍼블릭이므로 그곳에 서버 1대를 만들면 된다.
아마존 리눅스2로 만든다.
aws cli등 설치되어 있다.
admin role 부여한다.
쿠버네티스 클러스터를 만드는 명령을 날리려면 vpc생성, 서버 생성등 권한이 필요하다.
2
iam > roles > create roles > admin 추가
eks-admin
3
hostnamectl --static set-hostname aws-com7
sudo su -
1
# EC2 서버에 로그인 , 쿠버네티스를 설치하는 툴이 eksctl 설치해보자.
eksctl 다운로드
curl --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv -v /tmp/eksctl /usr/local/bin
eksctl version
2
# 쿠버네티스에 명령을 내리는 kubectl 을 설치해 보자.
# kubectl 설치 = 쿠버네티스에 명령을 내리는 툴
# 쿠버네티스 마스터에 명령을 내릴때 사용한다. 리소스 만들때 사용하는 툴.
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version
# 다운로드 사이트
https://kubernetes.io/ko/docs/tasks/tools/install-kubectl-linux/
1
리전을 변수로 지정
export AWS_REGION=ap-northeast-2
2
# eksctl create로 쿠버네티스 클러스터를 생성 - dev-cluster , node dev-nodes 2개 , 1.31
eksctl create cluster --name dev-cluster --nodegroup-name dev-nodes --node-type t3.small --nodes 2 --nodes-min 1 --nodes-max 4 --managed --version 1.31 --region ${AWS_REGION}
eksctl create cluster \
--name dev-cluster \
--nodegroup-name dev-nodes \
--node-type t3.small \
--nodes 2 \
--nodes-min 1 \
--nodes-max 4 \
--managed \
--version 1.31 \
--region ${AWS_REGION}
(15분)
https://vclock.kr/timer/#countdown=00:10:00&enabled=0&seconds=0&sound=xylophone&loop=1
3
클라우드 포메이션에서 가서 생성되는 내용 확인이 가능하다.
4
생성 완료후 node 보기.
kubectl get nodes
6
현재 자격증명 확인
aws sts get-caller-identity --query Arn
"arn:aws:iam::476286675138:user/12-24-user"
7
echo 'alias k=kubectl' >> /etc/profile
echo 'complete -F __start_kubectl k' >> /etc/profile
8
# Install kubens kubectx
yum install git -y
git clone https://github.com/ahmetb/kubectx /opt/kubectx
ln -s /opt/kubectx/kubens /usr/local/bin/kubens
ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
# 모니터링 하기 , 터미널 2 실행
watch -d kubectl get pods,svc,deploy,rs
pod 1개 만들기
k get deploy,rs,po
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/mario 1/1 1 1 5m34s
deployment.apps/websrv 4/4 4 4 34s
NAME DESIRED CURRENT READY AGE
replicaset.apps/mario-7f7ddc97f4 1 1 1 5m34s
replicaset.apps/websrv-7bf7d5d9ff 4 4 4 34s
NAME READY STATUS RESTARTS AGE
pod/mario-7f7ddc97f4-mwnf9 1/1 Running 0 5m34s
pod/nginx-pod 1/1 Running 0 60s
pod/websrv-7bf7d5d9ff-5hkfc 1/1 Running 0 34s
pod/websrv-7bf7d5d9ff-9jcvz 1/1 Running 0 34s
pod/websrv-7bf7d5d9ff-bx5k5 1/1 Running 0 34s
pod/websrv-7bf7d5d9ff-km5qm 1/1 Running 0 34s
(2분 걸림)
3
a126d1fdc5218411bac03dd88d67b423-1418180016.ap-northeast-2.elb.amazonaws.com
5분 걸림.
확장
kubectl scale 명령어~~~~~~
www 를 CNAME 으로 로드밸런서를 연결하자
a126d1fdc5218411bac03dd88d67b423-1418180016.ap-northeast-2.elb.amazonaws.com
네임스페이스를 디폴트로 해서 파드를 확인한다.
0
# 파드를 하나 만들자.
pod 1개 만들기
1
kubectl get pods -n default
kubectl get pods
파드안에 컨테이너수 이다.
2
변수로 저장.
첫번째 pod 이름을 환경 변수에 저장
export MY_POD_NAME=$(kubectl get pods -n default -o jsonpath='{.items[0].metadata.name}')
kubectl -n default describe pod $MY_POD_NAME
3
pod 에서 bash shell에 연결한다.
kubectl exec -it ${MY_POD_NAME} -n default -- /bin/bash
ls
4
apt-get update
apt-get install vim
cd /usr/share/nginx/html
root@nginx-pod:/usr/share/nginx/html# ls
50x.html index.html index.html-backup
root@nginx-pod:/usr/share/nginx/html# vi index.html
5
게임 설치
apk add micro-tetris
tetris
exit
https://brunch.co.kr/@topasvga/2468
https://brunch.co.kr/@topasvga/1679
https://brunch.co.kr/@topasvga/2469