본문 바로가기

쿠버네티스

쿠버네티스 시작하기

https://bo20cy.tistory.com/15
쿠버네티스 실행 환경 vmware + minikube

 

쿠버네티스란?

쿠버네티스는 레지스트리에서 이미지를 받아 컨테이너를 실행한다.

```mermaid
graph LR
A[Dockerfile] -- build --> B((images)) -- push --> F[레지스트리]
F -- pull --> D{클러스터}
C(매니페스트) -- kubectl apply -f --> D

쿠버네티스 구조

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

 

쿠버네티스 컴포넌트

쿠버네티스 클러스터는 컴퓨터 집합인 노드 컴포넌트와 컨트롤 플레인 컴포넌트로 구성된다.

kubernetes.io

주요 오프젝트: 파드, 서비스. 컨트롤러
k8s 조작:api로 실행

파드

파드는 컨테이너를 실행하는 최소 단위로 한 개 그 이상의 컨테이너를 포함한다.

https://kubernetes.io/ko/docs/concepts/workloads/pods/

서비스

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

컨트롤러

deployment, statefulset, job, cronjob, deamonset, replicaset, replication controller
https://kubernetes.io/ko/docs/concepts/workloads/controllers/

쿠버네티스 시작

 

minikube start

 

 

 

 

kubectl get node

노드 오브젝트를 가져온다.

 

 

kubectl get po,svc

#명령어에 띄어쓰기가 이상하지만 띄면 안된다.

 

kubectl get ep,ing,deploy,rs,sts,ds,pv,pvc,no,cm,ns 

#종류가 엄청 많다

po=pods

svc=service

ep=endpoint

ing=ingress

deploy=deployment

rs=replicaset

sts=statefulset

ds=deamonset

pv=persistentvoulume

pvc=persistentvoulumeclaim

no=node

cm=configmap

ns=namespace

등등 더 많다. 

 

 

 

사진추가

파드 생성

디플로이먼트가 파드를 생성해준다.

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

 

kubectl create deploy nginx-deployment --image=nginx:latest --replicas=1 --port=80

이렇게 해도 똑같이 생성된다.


kubectl apply -f nginx.yml

이렇게 쳐서 만들어 주자

 

실질적으로
docker -run -dit nginx와 유사하다.

 

 

  • YAML ?
---
YAML: YAML Ain't Markup Language™

What It Is:
  YAML is a human-friendly data serialization
  language for all programming languages.

 

https://yaml.org/

보기에 불편하다

 

YAML은 들여쓰기를 사용, 계층 구조, 키-값 쌍 데이터를 표현, 여러 가지 데이터 유형을 지원하며, 리스트, 문자열, 숫자, 불리언 등을 포함

 

 

파드 접근

외부에서 파드에 접근하려면 외부에 노출된 서비스 또는 내부에서 접근 할 수도 있다.


하기전에 ip부터 확인한다.
kubectl get po -o wide

 

 

내부에 접속하기 위해 작은 컨테이너를 가동시킨다.


kubectl run -it busybox --restart=Never --rm --image=busybox sh


--rm은 끝나면 지운다는 명령어
--restart=Never 재시작은 안한다는 명령어

즉, 컨테이너에서 빠져나오면 이 명령어 컨테이너는 삭제된다.

wget -qO - http://자신ip

 

 

들어가면 잘 나온다.

tomcat

거의 동일한 방법으로 톰캣도 만들어 본다.

역시 디플로이먼트다

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-deployment
  labels:
    app: tomcat
spec:
  replicas: 1 
  selector:
    matchLabels:
      app: tomcat
  template:
    metadata:
      labels:
        app: tomcat
    spec:
      containers:
      - name: tomcat
        image: tomcat:latest
        ports:
        - containerPort: 8080 

 

kubectl apply -f tomcat.yml

 

이 파드에 접근하려면 내부에서 접근 전에 ip부터 확인한다.


kubectl get po -o wide

 

내부에 들어가 본다.

kubectl run -it busybox --restart=Never --rm --image=busybox sh

 

 

wget -qO - http://자신ip

 


docker 때와 유사하다

https://bo20cy.tistory.com/16

 

 

 

 

 

 

 

 

다음 글에 계속 적겠습니다.

 

 

 

출처:k-paas교육, 15단계로 배우는 도커와 쿠버네티스

'쿠버네티스' 카테고리의 다른 글

쿠버네티스 Tomcat - MySQL 연동  (2) 2024.04.26
쿠버네티스 tomcat 작동  (1) 2024.04.19