반응형

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