갬미의 성장일기

Day 43 - 쿠버네티스 기본 명령어 본문

Cloud/Cloud 공부일기

Day 43 - 쿠버네티스 기본 명령어

갬미 2022. 3. 11. 23:10

오늘 배운 내용

- eks, gke cluster local에서 접근하기

- 쿠버네티스 기본 명령어

 

eks, gke cluster local에서 접근하기

1. gke cluster 생성하기 (GCP - kubernetes engine 에서 만들기

    1-1. local에 연결하기

2. eks 클러스터 생성하기 (cli로 생성하기 때문에 자동으로 연결 됨)

eksctl create cluster --name cluster name --region region --with-oidc --ssh-public-key gymin-key --nodes 3 --node-type t3.medium --node-volume-size=20 --managed

 

 

GCP에서 vm을 만들고 나서도 동일한 절차를 따르면 cgke, eks 모두 이용이 가능하다 

단, 이때 aws cli, eks tool이 깔려있지 않기 때문에 이를 설치하고, aws 계정인증이 필요하다 

# aws cli설치하기
yum install -y unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

# eks 설치하기
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
eksctl version

# aws 인증
aws configure
AWS Access Key ID [None]: 
AWS Secret Access Key [None]:
Default region name [None]: 
Default output format [None]: 

# 설치 확인
aws s3 ls

aws 인증 예시화면

 

쿠버네티스 기본 명령어

다른 vm에서 만든 eks cluster를 현재 vm에 가져오고싶다면 (일단 계정인증이 되어있어야 한다)

aws eks update-kubeconfig --region us-west-1 --name gymin

현재 가진 context 보기

kubectl config get-contexts

두개의 cluster를 연결한 경우

클러스터 이름 바꾸기

kubectl config rename-context old-name new-name

클러스터 변경하기

kubectl config use-context name

pod label 달기

yaml 파일로 달기

 kubectl apply -f .\pod\podlabel.yaml

 label 확인하기

kubectl get pod --show-labels

특정 label 검색하기

kubectl get pod -L label

 

label 추가하기

kubectl label pod podname ver=1

 

label update 하기

kubectl label pod podname ver=2 --overwrite

 

서비스가 pod를 가져갈때 label로 구분하고 등록한다

ex [ nginx label이 붙어있는 pod만 등록하겠다 ]

 

namespace 만들기

kubectl create ns dev

or yml파일로 만들기

 

특정 네임스페이스에사 pod만들기 - yml에서 지정

or

kubectl create -f .\pod\pod-2.yml -n dev

네임스페이스 바꾸는 방법

kubectl config set-context --current --namespace=prod

 

 

네임스페이스는 구분되어 있기 때문에 서로 다른 네임스페이스에서는 이름이 중복되어도 상관없음 

1~2개 ns를 만들때는 명령어로 하는데 대량으로 만들때는 yml로 한번에 한다

작업 환경을 나눌때 ns를 나누기도하고 cluster를 나누기도 한다

보안상 확실히 나누어지는 것은 cluster이긴하지만 뭐가더 좋다는 절대적인 기준은 없다

 

네임스페이스가 다른데 서로 통신이 가능한가?

된다 -> 그럼 왜 나누냐?

ns 별로 정책을 나눌수 있기 때문!

 

하나의 yml에서 namespace와 pod 모두 선언하기

apiVersion: v1
kind: Namespace
metadata:
  name:  stage
---
apiVersion: v1
kind: Pod
metadata:
  name: web
  labels:
    app: nginx
  namespace: stage
spec:
  containers:
  - name: nginx
    image: gymin97/msa:v3
    ports:
      - containerPort: 80

여러개의 리소스를 한번에 만들어줄 수 있다 

리소스간 구분은 ---으로함

 

 

yml로 리소스 만들고 지우기

kubectl create -f .\pod\pod-svc.yml
kubectl delete -f .\pod\pod-svc.yml

namespace 지우면 그 안의 pod들도 다 지워짐

 

오늘의 회고

  • 어질어질~
  • eks와 gke는 거의 동일하다고 생각하고 gke만 제대로 공부해도 될 것 같다! 
  • 과제하고 자야지,,
Comments