AWS EC2 k8s

Cheoly·2024년 2월 5일

1. EC2 인스턴스 생성 및 접속

# 인스턴스 생성 (t2.small, 20GB 스토리지)
# 인스턴스에 접속

2. AWS CLI 설치 및 구성

sudo apt-get install -y unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version

# AWS 구성
aws configure
# Access Key, Secret Access Key, region 입력
aws sts get-caller-identity

3. eksctl 및 kubectl 설치

# eksctl 설치
ARCH=amd64
PLATFORM=$(uname -s)_$ARCH
curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz"
tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz
sudo mv /tmp/eksctl /usr/local/bin

# kubectl 설치
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.7/2023-11-14/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH
echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
kubectl version --short --client

4. EKS 클러스터 생성

eksctl create cluster \
    --name k8s-scw \
    --region ap-northeast-2 \
    --with-oidc \
    --ssh-access \
    --ssh-public-key encore_17_key \
    --nodes 3 \
    --node-type t3.medium \
    --node-volume-size=20 \
    --managed

5. kubectl 자동완성 설정

# kubectl 자동완성 사용하기
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

6. k9s 설치

wget https://github.com/derailed/k9s/releases/download/v0.13.7/k9s_0.13.7_Linux_i386.tar.gz
tar xvzf k9s_0.13.7_Linux_i386.tar.gz
sudo mv k9s /usr/local/bin

7. Kubernetes 용어 및 명령어

# Kubernetes 용어 및 명령어
kubectl get pods --all-namespaces
kubectl create deployment webtest --image=nginx:1.14 --port=80 --replicas=1
kubectl get pods -o wide

8. 애플리케이션 배포 및 관리

# 애플리케이션 배포 및 관리
kubectl create deployment dpy-nginx --image=nginx
kubectl get pods --all-namespace
kubectl exec -it pod-name -- /bin/bash
kubectl delete deployment dpy-nginx

9. 애플리케이션 롤아웃

# 애플리케이션 롤아웃
kubectl apply -f echo-hname.yaml
kubectl scale deployment echo-hname --replicas=3
kubectl rollout history deployment echo-hname
kubectl set image deployment echo-hname nginx=nginx:1.17.23 --record
kubectl rollout status deployment echo-hname
kubectl rollout undo deployment echo-hname

10. 노드 조작

# 노드 조작
kubectl cordon node-name
kubectl uncordon node-name
kubectl drain node-name --ignore-daemonsets --delete-emptydir-data
profile
데이터 엔지니어

0개의 댓글