[Kubernetes] Pod 생성 및 실행

2023. 6. 26. 14:33기술 창고/Kubernetes

728x90
SMALL

쿠버네티스로 서비스들을 관리하기 위한 Pod를 생성해보도록 하겠습니다.

 

 

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#pod-v1-core

 

Kubernetes API Reference Docs

 

kubernetes.io

 

Pod Reference 주소에 들어가서 Pod에 관한 내용을 확인해봅시다.
Pod에 대한 내용들이 나오는데 무슨 내용을 넣어야 될지 모르겠다면 위의 Example 버튼을 누르면 넣을 내용의 양식이 나오게 됩니다.
이 내용들을 yml파일에 넣어서 생성해주게 될 것입니다.

 

 

이제 git bash 에서 nano first-pod.yml 을 입력하여 Pod 설정 파일을 만들어주겠습니다.
저는 nano가 설치되어있어서 nano를 사용하였으나 다른 편집기를 사용하여도 좋습니다. (예 : vim)

 

 

아까 Pod Reference 에서 확인한 내용처럼 yml 파일에 설정값들을 넣어주면 작성 및 생성 완료입니다.
작성한 내용을 확인해보면,
- apiVersion: v1 = Pod 를 생성하기 위한 지원 api 를 넣어주어야 하는데 그 api 버전을 v1으로 잡겠습니다.
- kind: Pod = 이 yml 의 용도를 뜻합니다. 당연히 Pod 입니다.
- metadata:
    name: webapp = 메타 데이터 설정을 합니다. 이름을 webapp 이라고 지어줍니다.
- spec:
    containers:
    - name: webapp
      image: {사용할 image:버전} = Pod 를 설정할 때 넣을 container를 설정해줍니다. image에 container 화 시킬 image를 넣습니다. 이름은 webapp 입니다.

 

 

Pod yml 파일을 만든 경로에서 다음 작업을 수행해야 합니다.
이제 쿠버네티스 클러스터에 적용하겠습니다.
그러기 전에 쿠버네티스를 사용하게 될 때 가장 많이 사용하게 될 명령어 중 하나인 kubectl get all 명령어를 입력해주겠습니다.
kubectl get all 명령어는 정의한 모든 요소들을 보여줍니다.
kubectl 명령어를 실행할 때마다 자동으로 api endpoint 에 명령을 전달합니다.

 

 

kubectl apply -f {만든 Pod yml 파일명} 명령어를 입력하여 쿠버네티스에게 Pod를 클러스터에 배치하라고 명령합니다.
그럼 Pod yml 파일을 기준으로 Pod를 만들게 될 것입니다.

 

 

이제 다시 kubectl get all 명령어를 입력하게 되면 방금 쿠버네티스 클러스터에 배치한 Pod가 설정한 webapp이라는 이름을 가지고 생성되어 실행중인 상태인 것을 확인할 수 있습니다.

 

 

지금까지 Pod를 생성하여 쿠버네티스 클러스터에 배치하게 된 과정 모두가 minikube 가상 머신 환경에서 수행된 과정들입니다.
이제 minikube의 ip를 확인하고 브라우저에 요청했을 때 페이지가 연결되야 한다고 생각되지만 요청해보면 연결이 되지 않습니다.
왜냐하면 지금 쿠버네티스 클러스터가 있고 그 안에 방금 컨테이너 하나를 넣은 포드 1개가 있습니다.
Pod는 기본적으로 외부에서 확인할 수 없는 특징을 가지고 있습니다.
따라서 Pod를 가지고 있는 쿠버네티스 클러스터 내부에서만 접근 가능하게 되어있습니다.
그래서 애초에 웹 브라우저를 통해 해당 Pod에 접속할 수 없습니다.

 

 

잠깐 유용한 쿠버네티스 명령어를 살펴보자면, kubectl describe pod {만든 포드명} 이 있습니다.
해당 명령어를 사용하면 만든 Pod 에 대한 내용들을 확인할 수 있는 데 그 중에서 자주 확인하는 내용이 Events 부분입니다.
이 곳에는 자신이 만든 Pod에 대한 동작 과정을 디버깅을 사용한 것처럼 확인할 수 있습니다.
에러가 발생하거나 동작들을 단계별로 확인하고 싶을 때 사용하면 좋습니다.

 

 

kubectl exec {만든 pod 명} -- {추가 명령어} 명령어를 입력하여 Pod yml 안에 있는 Container를 실행하게 됩니다.

이제 pod에 연결되게 됩니다.
kubectl exec {만든 pod 명} 명령어 뒤에 추가적인 명령어를 입력하면 그에 따른 동작이 수행됩니다.
이전 옛날 버전에는 추가 명령어를 사용하지 않아도 정상적으로 실행되었지만 지금은 반드시 적어도 하나 이상의 추가 명령어를 포함해야 한다고 합니다.
저는 ls 명령어를 추가하여 현재 디렉토리에 존재하는 파일 목록들을 출력했습니다.

 

이렇게 해서 

 

728x90
반응형
LIST