반응형
1. 기본 명령어
kubectl 명령어 오타 방지를 위해 k로 사용하기
alias k=kubectl
Node 리스트 보기
kubectl get node
2. POD 만들어서 사용 해보기
Pod를 명령어로 만들기
#kubectl 명령어 [pod이름] —-image=[이미지이름]
kubectl run nginx-test --image=nginx
Pod의 리스트 확인
Pod를 선언형으로 만들기 (yaml)
vi nginx-test2.yaml 입력 후 아래 내용 붙여넣고 저장
apiVersion: v1
kind: Pod
metadata:
name: nginx-test2
labels:
app: nginx-test2
spec:
containers:
- image: nginx
name: nginx-test2
저장한 nginx-test2.yaml로 Pod 만들기
kubectl apply -f nginx-test2.yaml
Pod리스트를 확인하면 두개의 Pod가 나옴을 알 수 있다.
Pod의 리스트를 볼 때 레이블까지 모두 보기
kubectl get pod --show-labels
Pod의 리스트를 볼 때 어느 노드에 Pod가 배포 되었는지 확인하기
kubectl get pod -o wide
Pod의 정보 자세히 보기
#kubectl describe pod [pod이름]
kubectl describe pod nginx-test
Pod 지우는 명령어
#kubectl delete pod [pod이름]
kubectl delete pod nginx-test
2. Replicaset 만들어 보기
yaml로 replicaset 만들기 (replicaset.yaml 로 저장)
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-replicaset
spec:
replicas: 3
selector:
matchLabels:
app: nginx-replicaset
template:
metadata:
labels:
app: nginx-replicaset
spec:
containers:
- name: nginx-container
image: nginx
replicaset 배포하는 명령어
kubectl apply -f replicaset.yaml
replicaset, pod 배포 되었는지 확인
kubectl get replicaset,pod
pod를 지우고나면 replicaset이 pod를 잘 살려주는지 확인 해보기
kubectl delete pod [pod이름]
위 그림을 보면 gvpmj 이름을 가진 pod를 지우고 나면 replicaset가 다시 살리게되는데 이때 ppm2l로 살아나게 됨을 알 수 있다.
이때 pod이 지워지고 replicaset에 의해 새로 만들어지되 이름만 바뀐다.
3. Deployment 만들어보기
Yaml 로 Deployment 만들기 (deployment.yaml 로 저장)
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
spec:
replicas: 3
selector:
matchLabels:
app: nginx-deploy
template:
metadata:
labels:
app: nginx-deploy
spec:
containers:
- image: nginx
name: nginx-container
아래 명령어를 통해 deployment 배포하기
kubectl apply -f deployment.yaml
replicaset, pod, deployment 배포 확인하기
kubectl get replicaset,pod,deployment
pod를 지워서 deployment가 pod를 잘 살려주는지 확인하기 위해 pod를 삭제해보고 확인해보기
replicaset 변경 내용을 모니터링 해보기
(별도의 터미널에서 실행)
kubectl get replicaset -w
kubectl delete pod [pod이름]
이때 별도로 켜둔 터미널에서 아래와 같이 변화가 나타난다.
즉, replicaset로 만들어진 pod 이름을 delete하여 current와 ready가 2개가 되었다가 다시 3개가 됨을 알 수 있다.
4. 네임스페이스 관리하기
네임스페이스 리스트보기
kubectl get namespace
네임스페이스 만들기
#kubectl create namespace [namespace이름]
kubectl create namespace kube-test
특정 네임스페이스에 Pod 만들기
#kubectl run [만들pod이름] --image=nginx -n [특정네임스페이스이름]
kubectl run nginx --image=nginx -n kube-test
특정 네임스페이스의 Pod을 보기
#kubectl get pod -n [namepsace이름]
kubectl get pod -n kube-test
네임스페이스 지우기 (안에 pod도 지워짐)
#kubectl delete namespace [namespace이름]
kubectl delete namespace kube-test
5. 게임 배포해보기 (2048)
2048-game.yaml 파일로 저장
apiVersion: v1
kind: Namespace
metadata:
name: "2048-game"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: "2048-deployment"
namespace: "2048-game"
spec:
selector:
matchLabels:
app: "2048"
replicas: 5
template:
metadata:
labels:
app: "2048"
spec:
containers:
- image: public.ecr.aws/kishorj/docker-2048:latest
imagePullPolicy: Always
name: "2048"
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: "service-2048"
namespace: "2048-game"
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
type: LoadBalancer
selector:
app: "2048"
아래 명령을 통해 배포 후 External-IP 라는 부분의 주소를 브라우저에 붙이면 실행 가능
kubectl apply -f 2048-game.yaml
kubectl get all -n 2048-game
네임 스페이스 삭제
kubectl delete ns 2048-game
반응형
'Applied > AWS' 카테고리의 다른 글
[AWS] KMS(Key Management Service) 실습 (0) | 2022.11.30 |
---|---|
Yaml 파일이란? (0) | 2022.09.20 |
[AWS] Lambda란? (0) | 2022.09.18 |
AWS aurora database 개념 (0) | 2022.09.08 |
AWS DynamoDB 개념 (0) | 2022.09.07 |