[k8s] Container 정리와 Single / Multi Container Pod 생성

2024. 3. 25. 01:12·Development/k8s

유튜브 따배쿠 강의를 듣고 정리한 내용입니다.

💡 쿠버네티스 Pod Container 정리와 Single / Multi Container Pod 생성

 

Container 정리

app.js라는 어플리케이션을 기준으로 컨테이너를 빌드한다.

$ docker build -t smlinux/appjs
$ docker push smlinux/appjs
  • push라는 명령어를 통해 smlinux 계정 안에 appjs를 저장
  • 컨테이너 하나는, 하나의 어플리케이션이다.
    • 컨테이너는 애플리케이션을 환경에 구애 받지 않고 실행하는 기술

 

Pod란?

  • 컨테이너를 표현하는 K8S 최소 단위
  • 어플리케이션을 실행할 때 도커와 쿠버네티스의 차이:
    • 도커: appjs 컨테이너 실행해줘
    • 쿠버: appjs Pod 실행해줘
  • API를 통해서 컨테이너 동작은 불가능
  • API를 통해서 컨테이너를 동작하는 API는 파드 API가 있고, 이를 통해서 컨테이너를 실행하게 된다.
  • 컨테이너를 표현하는 k8s API의 최소 단위
  • Pod에는 하나 또는 여러 개의 컨테이너가 포함될 수 있음

 

Pod 생성하기

1. kubectl run 명령(CLI)으로 생성

kubectl run webserver --image=nginx:1.14

 

2. pod yaml을 이용해 생성

  • Pod 실행
kubectl create -f pod-nginx.yaml
  • 현재 동작중인 Pod 확인
$ kubectl get pods
$ kubectl get pods -o wide
$ kubectl get pods -o yaml
$ kubectl get pods -o json

$kubectl get pods webserver -o json | grep -i podip
# json 포멧으로 podip 정보를 가져옴
  • Pod에 접속해서 결과보기
$ curl <pod ' s IP address>

 

multi-container Pod 생성하기

  • name을 multipod로 생성
# 생성한 yaml 파일을 실행할 때는 kubectl create 명령어 사용
$ kubectl create -f pod-multi.yaml
$ kubectl get pods
$ kubectl get pods -o wide
$ kubectl exec multipod -it -c centos-container -- /bin/bash
/# curl http://loalhost:80
/# exit

$ kubectl logs multipod -c nginx-container
  • multipod의 내용을 자세히 확인하기
$ kubectl describe pod multipod
  • nginx 컨테이너로 접속하기
# multipod라는 이름의 Pod 내 nginx-container라는 컨테이너에서 
# bash 쉘을 인터랙티브 모드로 실행하여, 
# 사용자가 컨테이너 내부에서 명령어를 직접 입력하고 실행할 수 있도록 함.
$ kubectl exec multipod -c nginx-container -it -- /bin/bash 
  • 명령어 분석
    • kubectl exec : kubernetes 클러스터에서 실행 중인 컨테이너 내부에 명령을 실행할 때 사용됩니다.
    • multipod: 현재 명령을 실행하고자 하는 Pod의 이름입니다.
    • c nginx-container: c 플래그는 특정 컨테이너를 지정하는 데 사용. 만약 Pod가 여러 컨테이너를 가지고 있다면, c 옵션으로 명령어를 실행하고자 하는 특정 컨테이너를 지정해야 합니다. 여기서는 nginx-container라는 이름의 컨테이너에서 명령어를 실행하겠다는 것을 의미합니다.
    • it: 이 옵션은 두 부분으로 나뉩니다. i (또는 -stdin)는 컨테이너의 표준 입력에 연결합니다, 즉 입력을 컨테이너로 전달할 수 있게 해줍니다. t (또는 -tty)는 가상 터미널(TTY)을 할당합니다. 결합된 it 옵션은 인터랙티브 모드에서 명령을 실행하려 할 때 사용되며, 사용자가 컨테이너 내부에서 인터랙티브 쉘을 사용할 수 있게 해줍니다.
    • -: 이 기호는 kubectl exec 명령어에 대한 인수가 끝났음을 나타내고, 뒤따르는 것은 컨테이너 내에서 직접 실행될 명령임을 나타냅니다. 즉, - 이후에 나오는 것은 컨테이너 안에서 실행할 명령어입니다.
    • /bin/bash: 이 부분은 컨테이너 내에서 실행될 실제 명령어입니다. 여기서는 bash 쉘을 시작하는 명령어입니다. /bin/bash를 실행하면, 사용자는 컨테이너의 bash 쉘에 접근할 수 있게 되며, 컨테이너 내부에서 직접 명령어를 입력하고 실행할 수 있습니다.

 

  • 인터렉티브 모드: 사용자가 프로그램이나 명령어와 직접 상호 작용할 수 있는 모드이 모드에서는 사용자의 입력을 받아들이고, 그에 따라 실시간으로 응답하거나 작업을 수행한다.
    kubectl exec 명령어에서 -it옵션을 사용하는 경우 클러스터 내의 컨테이너에 대해 인터렉티브 쉘을 시작할 수 있습니다. 이를 통해 사용자가 컨테이너 내부에서 명령을 실행하고, 실행 결과를 바로 확인하며 추가 명령을 입력할 수 있습니다.
    ⇒ 사용자가 컨테이너 내부에서 로컬 시스템을 사용하듯이 작업할 수 있다.

 

kubectl logs [pod명] -c [container명]

: [pod명] 안의 [container명]의 로그를 출력

nginx가 80포트를 통해 웹서비스를 하고 있으면, 커넥션 시 연결에 성공하는 경우와 실패하는 경우가 있는데 이러한 로그를 확인하는 명령어이다.

  • 멀티 컨테이너
    • -c 옵션으로 container명을 입력해줘야한다.
# [멀티 컨테이너] nginx-container의 로그를 확인하는 명령어
kubectl logs multipod -c nginx-container
  • 싱글 컨테이너
    • 싱글이므로, 컨테이너명을 입력해줄 필요가 없기 때문에 파드명만 입력하면 된다.
# [싱글 컨테이너] web1 파드의 로그를 확인하는 명령어
kubectl logs web1

 

'Development > k8s' 카테고리의 다른 글

[따배쿠] 기본 명령어 학습하기  (0) 2024.02.13
[따배쿠] 쿠버네티스 개요  (0) 2024.02.13
'Development/k8s' 카테고리의 다른 글
  • [따배쿠] 기본 명령어 학습하기
  • [따배쿠] 쿠버네티스 개요
곽진돔
곽진돔
Developer
  • 곽진돔
    echo "곽박한 세상";
    곽진돔
  • 전체
    오늘
    어제
    • 분류 전체보기 (183)
      • Development (56)
        • Linux (13)
        • k8s (3)
        • Docker (5)
        • AWS (1)
        • PHP (35)
        • Python (21)
        • Java (1)
        • SpringBoot (4)
        • JavaScript (1)
        • React (8)
        • MySql (19)
        • MongoDB (1)
      • Daily (4)
      • Study (6)
        • TIL (1)
        • license (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 설정
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    docker
    springboot
    Java
    Shell
    nodejs
    UTF8
    CentOS7
    Selenium
    react
    CentOS
    ssh
    크롤링
    Python
    Linux
    스프링부트
    JavaScript
    윈도우
    리액트
    정규표현식
    리눅스
    HTML
    chromedriver
    date
    MySQL
    error
    SQL
    IP
    인코딩
    db
    php
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
곽진돔
[k8s] Container 정리와 Single / Multi Container Pod 생성
상단으로

티스토리툴바