반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

/var/log/messages

yaml 파일로 컨테이너 배포하기 본문

Rancher

yaml 파일로 컨테이너 배포하기

로만로만 2023. 10. 8. 21:57
반응형

YAML의 기본 구조:
간단하고 읽기 쉬움: YAML은 "YAML Ain't Markup Language"의 약자로, JSON과 유사한 구조를 가지면서도 더 간단하고 읽기 쉬운 형식을 제공합니다.
키-값 쌍: YAML 파일은 키-값 쌍으로 구성되며, 이러한 키-값 쌍은 데이터의 구조와 관계를 나타냅니다.
들여쓰기: YAML에서는 데이터의 계층 구조를 표현하기 위해 들여쓰기를 사용합니다.

쿠버네티스와 컨테이너 설정:
리소스 정의: 쿠버네티스에서는 Pod, Service, Deployment와 같은 리소스를 정의하기 위해 YAML 파일을 사용합니다.
컨테이너 설정: YAML 파일 내의 spec.containers 섹션은 컨테이너의 이름, 사용할 이미지, 포트, 환경 변수 등 컨테이너와 관련된 설정을 포함합니다.

apiVersion: v1
kind: Pod
metadata:
  name: mypod
  labels:
    app: myapp
spec:
  containers:
  - name: mycontainer
    image: myimage:latest
    ports:
    - containerPort: 80

 

이 예제에서는 간단한 Pod를 정의하고 있으며, 이 Pod에는 하나의 컨테이너가 포함되어 있습니다.

apiVersion: 쿠버네티스 API의 버전을 나타냅니다.
kind: 생성하려는 쿠버네티스 객체의 종류를 나타냅니다. 여기서는 Pod입니다.
metadata: 객체에 대한 메타데이터를 제공합니다. 여기서는 이름과 레이블을 지정합니다.
spec: 객체의 원하는 상태를 정의합니다. 여기서는 컨테이너의 이름, 이미지, 그리고 포트를 지정합니다.

컨테이너 정의:
name: 컨테이너의 이름을 지정합니다.
image: 사용할 컨테이너 이미지를 지정합니다.
ports: 컨테이너에서 열려 있는 네트워크 포트를 지정합니다.

 

YAML 파일로 컨테이너 배포:
kubectl apply -f [yaml-file].yaml 명령어를 사용하여 쿠버네티스 클러스터에 YAML 파일을 적용하고, 해당 설정에 따라 컨테이너를 배포할 수 있습니다.

 

nginx를 기반으로 동작하는 컨테이너를 정의해보겠습니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest

이 파일을 kubectl apply -f <파일-이름>.yaml 을 사용하면 배포가 됩니다.

 

pod의 상태 확인은 get과 describe로 할 수 있는데, get은 간단하게 확인하고 describe는 자세하게 확인할 수 있습니다.

 

get으로 확인하기:

NAME                               READY   STATUS    RESTARTS   AGE
nginx-deployment-6799fc88d8-2lfbv   1/1     Running   0          1m
nginx-deployment-6799fc88d8-vgz7d   1/1     Running   0          1m

describe로 확인하기(축약):

Name:         nginx-deployment-6799fc88d8-2lfbv
Namespace:    default
Priority:     0
Node:         k8s-node/10.128.0.4
Start Time:   Mon, 04 Oct 2021 11:00:00 +0000
Labels:       app=nginx
              pod-template-hash=6799fc88d8
...
Containers:
  nginx:
    Container ID:   docker://d3f07b8d716e
    Image:          nginx:latest
...