본문 바로가기

CLOUD/CUBE

쿠버네티스(kubernetes) yaml file - namespace, pod, service

반응형

쿠버네티스가 정상적으로 설치 되었으면 이제 컨테이너를 올려야 합니다.

 

redhat에 있는 쿠버네티스 구성도 입니다. 

출처 : https://www.redhat.com/ko/topics/containers/what-is-kubernetes

 

쿠버네티스(Kubernetes)란? 개념, 성능, 사용방법 및 차이점

쿠버네티스(Kubernetes)는 리눅스 컨테이너 운영 자동화와 오케스트레이션을 위한 툴을 뜻합니다. 쿠버네티스 개념, 성능, 장점, 사용법과 도커(Docker)와의 차이점을 설명합니다.

www.redhat.com

 

 

 

기본(default) namespace를 사용해도 되지만 pod들의 양이 많아지면 편하게 관리하기 위해서라도 namespace로 구분하는게 좋습니다.

 

 

namespace

 

 

namespace 확인

kubectl get namespaces

 

namespace 만들기

kubectl create namespace firstns

 

생성한 namesapce를 현재 쉘에서 고정으로 사용

kubectl config set-context --current --namespace=firstns

 

namespace 확인

kubectl config view | grep name

 

 

pod yaml 파일 생성(줄을 잘 맞춰야 함)

cat apache.yaml

 

apiVersion: v1
kind: Pod
metadata:
 name: apache
 labels:
   app: myweb
spec:
   containers:
   - name: myweb-container
     image: httpd:2.4
     ports:
       - containerPort: 80

 

 

pod는 쿠버네티스에서 가장 작은 단위 입니다.

이론적으로 하나의 pod 안에 여러 컨테이너를 넣을수 있기도 하지만 실제로는 하나의 pod에 하나의 컨테이너만 씁니다.

(스케일링, 배포, 복제 등 관리에서 비효율 적이기 때문입니다)

 

pod

 

pod 생성

kubectl create -f apache.yaml

 

확인

kubectl get pods

 

pods의 namespace 확인하기

kubectl get pods --all-namespaces

 

 

 

service

 

 

pod를 생성 했다고 바로 접근 할 수 없습니다. 그래서 service를 생성합니다. 그냥 중계기라고 생각하셔도 무방합니다.

 

https://kubernetes.io/ko/docs/concepts/services-networking/service/

 

서비스

파드 집합에서 실행중인 애플리케이션을 네트워크 서비스로 노출하는 추상화 방법 쿠버네티스를 사용하면 익숙하지 않은 서비스 디스커버리 메커니즘을 사용하기 위해 애플리케이션을 수정할

kubernetes.io

 

service yaml 파일 생성합니다.

 

cat web-service.yaml


apiVersion: v1
kind: Service
metadata:
 name: web-service
spec:
 ports:
   - port: 8001
     targetPort: 80
 selector:
   app: myweb

 

 

 

service 생성 합니다.

kubectl create -f web-service.yaml

 

확인

kubectl get svc

 

접근해 봅니다.

curl 10.98.31.162:8001

 

 

 

 

 

반응형