갬미의 성장일기
Day 43 - 쿠버네티스 기본 명령어 본문
오늘 배운 내용
- 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
클러스터 이름 바꾸기
kubectl config rename-context old-name new-name
클러스터 변경하기
kubectl config use-context name
pod label 달기
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만 제대로 공부해도 될 것 같다!
- 과제하고 자야지,,
'Cloud > Cloud 공부일기' 카테고리의 다른 글
Day 45 - 쿠버네티스 서비스 (0) | 2022.03.15 |
---|---|
Day 44 - 도커/쿠버네티스 포트포워딩, Replica Set (0) | 2022.03.14 |
Day 42 - GKE, EKS | awscli, ekctl 설치 (0) | 2022.03.10 |
Day 41 - 쿠버네티스 기초 (0) | 2022.03.08 |
Day 40 - Google Cloud CLI, Docker DeskTop 설치 (0) | 2022.03.07 |