호딩클라우드

kubernetes란? 그리고 deployment,pod 생성해보기 본문

k8s

kubernetes란? 그리고 deployment,pod 생성해보기

hoding-cloud 2024. 5. 7. 14:46

 

https://kubernetes.io/ko/docs/concepts/overview/

 

쿠버네티스란 무엇인가?

쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하

kubernetes.io

 

쿠버네티스란 무엇인가?

컨테이너화된 서비스를 관리하기위한 오픈소스 플랫폼입니다.

쿠버네티스 유용한이유

물리서버를 이용하던 시대에는 배포되는 애플리케이션에 대해 최적화된 물리서버의 리소스를 제공할 수 없었습니다.

이로인해 가상화가 등장하고, 하나의 물리서버에서 애플리케이션을 격리하여 여러 가상시스템을 실행할 수 있게 되었습니다.

이후 더나은 가상화를 제공하기위해 컨테이너개념이 등장했으며 개발과 운영의 관심사 불리가 이루어졌습니다.

쿠버네티스 구성요소

 

 

파드 자세히

하나이상의 컨테이너 그룹입니다.

내부 IP address, 공유스토리지 등이 포함되어 있습니다. 쿠버네티스 최소 단위입니다.

 

노드 자세히

쿠버니티스 작업장비(워커머신)이며 클러스터에 따라 vm 또는 물리머신이 될 수 있습니다.

여러개의 파드는 하나의 노드위에서 동작합니다.

Deployment

Deployment는 쿠버네티스가 애플리케이션의 인스턴스를 어떻게 생성하고 업데이트 해야 하는지를 지시한다. Deployment가 생성되면 Control Plane이 Deployment에 포함된 애플리케이션 인스턴스가 클러스터의 개별 노드에서 실행되도록 스케줄링합니다.

 

 

namespace

쿠버네티스 리소스들이 묶여 있는 하나의 가상 공간 또는 그룹입니다.

 

 

[실습] yaml로 deployment 생성 해보기 

[목표]

namespace: hoding-1

pod이름 : nginx-pod

Replicas : 4

컨테이너 이름: nginx-container

컨테이너 이미지: nginx:1.14 생성

 

#namespace 확인

kubectl get ns 

 

#namepsace 생성

kubectl create ns hoding-1

- namespace/hoding-1 created

 

#default nampspace 설정

kubectl config set-context --current --namespace=hoding-1 

 

#default namespace 확인, confgin 파일의 context로도 확인 가능 "cat $HOME/.kube/config"

kubectl config view --minify | grep namespace

 

[practice-1.yml]

#요구사항에 맞게 yml파일 작성

apiVersion: apps/v1

kind: Deployment

metadata:

  name: nginx-pod

spec:

  replicas: 4

  selector:

    matchLabels:

      app: nginx-pod

  template:

    metadata:

      labels:

        app: nginx-pod

    spec:

      containers:

      - name: nginx-container

        image: nginx:1.14

 

https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#writing-a-deployment-spec

 

#yml파일을 이용해서 deployment 생성

kubectl create -f practice-1.yml

- deployment.apps/nginx-pod created

 

#생성된 pod 확인

kubectl get pods 

NAME        READY   STATUS    RESTARTS   AGE

nginx-pod-b46989c4d-bbnns   1/1     Running   0          5s

nginx-pod-b46989c4d-t965r   1/1     Running   0          5s

nginx-pod-b46989c4d-w5dkt   1/1     Running   0          5s

nginx-pod-b46989c4d-zstwp   1/1     Running   0          5s

 

#생성된 deployment 확인

kubectl get deployment

NAME        READY   UP-TO-DATE   AVAILABLE   AGE

nginx-pod   4/4     4            4           102s

 

#요구사항에 맞는 pod가 생성되었는지 자세히 확인

kubectl describe deployment nginx-pod

Name:             nginx-pod

Namespace:        hoding-1 

...

Replicas:               4 desired | 4 updated | 4 total | 4 available | 0 unavailable

...

Pod Template:

  Labels:  app=nginx-pod

  Containers:

   nginx-container:

    Image:         nginx:1.14

 

# deployment 삭제

kubectl delete deployment nginx-pod 


[실습] 커맨드 명령으로 pod생성, 테스트 그리고 로그확인하기

 

[목표]

nginx파드를 생성하고 로그확인하기

pod name: nginx-pod

image: nginx

 

#pod 생성

kubectl run nginx-pod --image=nginx --port=80

 

#pod 자세히 확인

kubectl describe pod nginx-pod

 

# http://localhost/  에 요청보내기

kubectl exec nginx-pod -- curl http://localhost/ 

#http://localhost/fail  에 요청보내기

kubectl exec nginx-pod -- curl http://localhost/fail

 

#로그확인 

kubectl logs -f nginx-pod

 

#모든 pod 삭제

kubectl delete pod --all

 

#hoding-1 namespace 삭제

kubectl delete namespace hoding-1