가상환경 플랫폼 실행 단위

가상머신: Instance

도커: Container

쿠버네티스: Pod

 

Containers in Pod

기본적으로 하나의 Pod 당 1개의 컨테이너를 갖게 하는 걸 권장한다. 사이드카로 보조 컨테이너를 넣어 2개의 컨테이너를 돌아가게 하는 경우도 있지만, 3개부터는 권장하지 않는다.

 

쿠버네티스에서는 NAT 통신 없이도 Pod 고유의 IP + 컨테이너 별 Port 주소를 통해 각 컨테이너에 접근할 수 있다. 같은 Pod 내의 컨테이너들은 사실 상 모두 같은 IP 주소를 가진 상태이기에 서로 localhost와 개별 포트넘버를 통해 네트워크 접근을 한다.

 

같은 Pod 내의 컨테이너들은 반드시 동일 노드에 할당되며 동일한 생명 주기를 가진다. Pod 삭제 시, 그 Pod 내의 모든 컨테이너가 전부 같이 삭제된다. 또한 모두 같은 볼륨에 연결되어 있어 파일 시스템을 기반으로 서로 파일을 주고 받을 수 있다.


[labels] in [metadata]

 

# 원래 상태

kubectl get pod mynginx -o yaml

 

# 라벨 추가

kubectl label pod mynginx hello=world

 

# 변경점 확인

kubectl get pod mynginx -o yaml

 

# 라벨 확인

kubectl get pod mynginx --show-labels

 

# run label이 다른 또 하나의 Pod 생성

kubectl run yournginx --image nginx

 

# key가 run인 Pod 출력

kubectl get pod mynginx -l run

-l = label

 

# key가 run, value가 mynginx인 Pod 출력

kubectl get pod mynginx -l run=mynginx


# 워커 노드1에 라벨 부여

kubectl label node k8s-w1 disktype=ssd

 

# 워커 노드2에 라벨 부여

kubectl label node k8s-w2 disktype=hdd

 

# 워커 노드3에 라벨 부여

kubectl label node k8s-w3 disktype=hdd

 

# disktype에 대해 노드들의 라벨 확인

kubectl get node --show-labels | grep disktype

 

# 새로 만들 Pod(node-selector)의 yaml 파일 생성

nano node-selector.yaml

# node-selector.yaml
apiVersion: v1
kind: Pod
metadata:
  name: node-selector
spec:
  containers: 
  - name: nginx
    image: nginx
  # 특정 노드 라벨 선택
  nodeSelector:
    disktype: ssd

# nodeSelector 프로퍼티로 인해 이 Pod는 disktype이 ssd인 노드에서 실행될 것이다.

 

# node-selector Pod 생성

kubectl apply -f node-selector.yaml

 

# Pod가 어느 노드에서 실행되고 있는지 확인 : disktype을 ssd로 지정해뒀던 k8s-w1에서 실행되고 있을 것이다.

kubectl get pod node-selector -o wide

 

# node-selector.yaml 수정

nano node-selector.yaml

# node-selector.yaml
apiVersion: v1
kind: Pod
metadata:
  name: node-selector
spec:
  containers: 
  - name: nginx
    image: nginx
  # 특정 노드 라벨 선택
  nodeSelector:
    disktype: hdd

# disktype이 hdd인 노드는 2개이기 때문에 쿠버네티스 마스터가 알아서 판단해서 할당한다.

 

# yaml 파일 재적용

kubectl apply -f node-selector.yaml

 

# Pod가 어느 노드에서 실행되고 있는지 확인 : k8s-w2, k8s-w3 중 하나일 것이다.

kubectl get pod node-selector -o wide


[command], [args] in [spec]

 

# vi editor 사용해보기 - i로 편집 모드 진입 → 수정 후 esc키 → :wq 입력으로 저장 & 나가기

vi cmd.yaml

# cmd.yaml
apiVersion: v1
kind: Pod
metadata:
  name: cmd
spec:
  restartPolicy: OnFailure
  containers: 
  - name: nginx
    image: nginx
    # 실행명령
    command: ["/bin/echo"]
    # 파라미터
    args: ["hello"]

# 여기서 눈여겨 봐야 하는 부분은 restartPolicy인데, Always, Never, OnFailure 3가지 값을 줄 수 있다.

# Always: Pod 종료 시 항상 재시작(default), Never: 재시작을 시도하지 않음, OnFailure: 실패 시 재시작

# 그런데 여기서 echo 명령은 웹 서버와 다르게 실행 후 종료되기 때문에 OnFailure로 주어야 하는 것.

 

# Pod 생성

kubectl apply -f cmd.yaml

-f = file

 

# 로그 확인 : 만약 restartPolicy를 Always로 했다면 무수히 많은 hello가 찍힐 것이다.

kubectl logs -f cmd

-f = flow


Volume Mounting

 

# volume.yaml 파일 생성

vi volume.yaml

# volume.yaml
apiVersion: v1
kind: Pod
metadata:
  name: volume
spec:
  containers: 
  - name: nginx
    image: nginx

    # 컨테이너 내부의 연결 위치 지정
    volumeMounts:
    - mountPath: /container-volume
      name: my-volume
  
  # host 서버의 연결 위치 지정
  volumes:
  - name: my-volume
    hostPath:
      path: /home

# [spec]-[containers]-[volumeMounts] 부분에 컨테이너 내부의 경로와 이름을 잡고,

# [spec]-[volumes] 부분에 노드(호스트 서버) 쪽의 경로와 이름을 잡는다.

 

# Pod 생성

kubectl apply -f volume.yaml

 

# volume Pod 안으로 접속해 연결시켜준 위치를 ls 명령어를 통해 확인한다.

kubectl exec volume -- ls /container-volume

 

# 호스트 서버의 디렉토리에서 목록 출력

ls /home


[resources]-[limits]-[cpu], [memory] in [spec] for Resource Management

 

# limits.yaml 파일 생성

vi limits.yaml

# limits.yaml
apiVersion: v1
kind: Pod
metadata:
  name: limits
spec:
  restartPolicy: OnFailure
  containers: 
  - name: mynginx
    image: python:3.7
    command: [ "python" ]
    args: [ "-c", "arr = []\nwhile True: arr.append(range(1000))" ]
    resources:
      limits:
        cpu: "500m"
        memory: "1Gi"

# 파이썬 이미지를 사용해 파이썬 코드를 작성하고 수행하는 컨테이너를 만들 수 있다.

 

# limits Pod 생성

kubectl apply -f limits.yaml

 

# watch 명령어의 지속적인 체크로 STATUS 변화 확인 : Running → OOMKilled

watch -d 'kubectl get pod limits'


[livenessProbe] in [spec] for Health Check

 

# yaml 파일 생성

vi liveness.yaml

# liveness.yaml
apiVersion: v1
kind: Pod
metadata:
  name: liveness
spec:
  containers: 
  - name: nginx
    image: nginx
    livenessProbe:
      httpGet:
        path: /live
        port: 80

# 상태 확인 및 자가치유 부분은 확인 과정이 복잡하기 때문에 단순히 위의 속성을 주게 되면

#정상적으로 작동하는지 실시간으로 체크하고 자가치유를 수행한다는 것만 알면 될 것 같다.


2개의 컨테이너 실행 (Sidecar)

 

# yaml 파일 생성

vi second.yaml

# second.yaml
apiVersion: v1
kind: Pod
metadata:
  name: second
spec:
  containers: 
  - name: nginx
    image: nginx
  - name: curl
    image: curlimages/curl
    command: ["/bin/sh"]
    args: ["-c", "while true; do sleep 5; curl -s localhost; done"]

# containers 아래에 name이 두 개가 있는 모습. 하나의 Pod 안에 두 개의 Container를 생성하는 것이다.

# 아래의 명령어는 5초마다 로컬호스트로 시그널을 보내며, 응답을 받지 못하면 에러가 뜨게 되는 코드이다.

 

# Pod 생성

kubectl apply -f second.yaml

 

# 생성 확인. 그리고 다른 Pod들과는 다르게 second는 READY 컬럼에 2개가 있는 것을 볼 수 있다.

kubectl get pod

 

# second 컨테이너의 (nginx 컨테이너에 대한) 로그를 출력

kubectl logs second -f -c nginx

-f = flow

-c = container

 

# Pods 확인 명령어

kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' |\sort


Init Container

 

# yaml 파일 생성

vi init-container.yaml

# init-container.yaml
apiVersion: v1
kind: Pod
metadata:
  name: init-container
spec:
  restartPolicy: OnFailure
  containers: 
  - name: busybox
    image: k8s.gcr.io/busybox
    command: [ "ls" ]
    args: [ "/tmp/moby" ]
    volumeMounts:
    - name: workdir
      mountPath: /tmp
  initContainers:
  - name: git
    image: alpine/git
    command: ["sh"]
    args:
    - "-c"
    - "git clone https://github.com/moby/moby.git /tmp/moby"
    volumeMounts:
    - name: workdir
      mountPath: "/tmp"
  volumes:
  - name: workdir
    emptyDir: {}

# 메인 컨테이너가 실행되기 전에 초기화 컨테이너에서 미리 git pull을 받아서

# 컨테이너끼리의 공유 공간인 emptyDir volume(/tmp)를 통해 git 레파지토리를 전달한다.

 

# Pod 생성

kubectl apply -f init-container.yaml

 

# initContainer 로그 확인

kubectl logs init-container -f -c git

 

# 메인 컨테이너(busybox) 로그 확인

kubectl logs init-container


Delete all Pods

kubectl delete pod --all

'IT > Kubernetes' 카테고리의 다른 글

Kubernetes Components & Operation  (0) 2021.10.29
[Lab] Kubernetes Pod YAML file / Namespace  (0) 2021.10.28
Configure of Kubernetes on VMware (Windows10)  (0) 2021.10.28
Kubernetes 기능과 용어  (0) 2021.10.27

 


 

아래 사진은 쿠버네티스의 전체적인 프로세스 구조이다.


Control Plane Components

 

API Server

API 서버는 쿠버네티스 API를 노출하는 쿠버네티스 컨트롤 플레인 컴포넌트이다. API 서버는 쿠버네티스 컨트롤 플레인의 프론트 엔드이다.

쿠버네티스 API 서버의 주요 구현은 kube-apiserver 이다. kube-apiserver는 수평으로 확장되도록 디자인되었다. 즉, 더 많은 인스턴스를 배포해서 확장할 수 있다. 여러 kube-apiserver 인스턴스를 실행하고, 인스턴스간의 트래픽을 균형있게 조절할 수 있다.

 

etcd

모든 클러스터 데이터를 담는 쿠버네티스 뒷단의 저장소로 사용되는 일관성·고가용성 키-값 저장소.

쿠버네티스 클러스터에서 etcd를 뒷단의 저장소로 사용한다면, 이 데이터를 백업하는 계획은 필수이다.

etcd에 대한 자세한 정보는, 공식 문서를 참고한다.

 

Scheduler

노드가 배정되지 않은 새로 생성된 파드 를 감지하고, 실행할 노드를 선택하는 컨트롤 플레인 컴포넌트.

스케줄링 결정을 위해서 고려되는 요소는 리소스에 대한 개별 및 총체적 요구 사항, 하드웨어/소프트웨어/정책적 제약, 어피니티(affinity) 및 안티-어피니티(anti-affinity) 명세, 데이터 지역성, 워크로드-간 간섭, 데드라인을 포함한다

 

Controller Manager

컨트롤러 프로세스를 실행하는 컨트롤 플레인 컴포넌트.

논리적으로, 각 컨트롤러는 분리된 프로세스이지만, 복잡성을 낮추기 위해 모두 단일 바이너리로 컴파일되고 단일 프로세스 내에서 실행된다.

이들 컨트롤러는 다음을 포함한다.

  • 노드 컨트롤러: 노드가 다운되었을 때 통지와 대응에 관한 책임을 가진다.
  • 레플리케이션 컨트롤러: 시스템의 모든 레플리케이션 컨트롤러 오브젝트에 대해 알맞은 수의 파드들을 유지시켜 주는 책임을 가진다.
  • 엔드포인트 컨트롤러: 엔드포인트 오브젝트를 채운다(즉, 서비스와 파드를 연결시킨다.)
  • 서비스 어카운트 & 토큰 컨트롤러: 새로운 네임스페이스에 대한 기본 계정과 API 접근 토큰을 생성한다.

Node Components

 

kubelet

클러스터의 각 노드에서 실행되는 에이전트. Kubelet은 파드에서 컨테이너가 확실하게 동작하도록 관리한다.

Kubelet은 다양한 메커니즘을 통해 제공된 파드 스펙(PodSpec)의 집합을 받아서 컨테이너가 해당 파드 스펙에 따라 건강하게 동작하는 것을 확실히 한다. Kubelet은 쿠버네티스를 통해 생성되지 않는 컨테이너는 관리하지 않는다.

 

kube-proxy

kube-proxy는 클러스터의 각 노드에서 실행되는 네트워크 프록시로, 쿠버네티스의 서비스 개념의 구현부이다.

kube-proxy는 노드의 네트워크 규칙을 유지 관리한다. 이 네트워크 규칙이 내부 네트워크 세션이나 클러스터 바깥에서 파드로 네트워크 통신을 할 수 있도록 해준다.

kube-proxy는 운영 체제에 가용한 패킷 필터링 계층이 있는 경우, 이를 사용한다. 그렇지 않으면, kube-proxy는 트래픽 자체를 포워드(forward)한다.

 

Cloud controller manager

클라우드별 컨트롤 로직을 포함하는 쿠버네티스 컨트롤 플레인 컴포넌트이다. 클라우드 컨트롤러 매니저를 통해 클러스터를 클라우드 공급자의 API에 연결하고, 해당 클라우드 플랫폼과 상호 작용하는 컴포넌트와 클러스터와만 상호 작용하는 컴포넌트를 구분할 수 있게 해 준다.

cloud-controller-manager는 클라우드 제공자 전용 컨트롤러만 실행한다. 자신의 사내 또는 PC 내부의 학습 환경에서 쿠버네티스를 실행 중인 경우 클러스터에는 클라우드 컨트롤러 매니저가 없다.

kube-controller-manager와 마찬가지로 cloud-controller-manager는 논리적으로 독립적인 여러 컨트롤 루프를 단일 프로세스로 실행하는 단일 바이너리로 결합한다. 수평으로 확장(두 개 이상의 복제 실행)해서 성능을 향상시키거나 장애를 견딜 수 있다.

다음 컨트롤러들은 클라우드 제공 사업자의 의존성을 가질 수 있다.

  • 노드 컨트롤러: 노드가 응답을 멈춘 후 클라우드 상에서 삭제되었는지 판별하기 위해 클라우드 제공 사업자에게 확인하는 것
  • 라우트 컨트롤러: 기본 클라우드 인프라에 경로를 구성하는 것
  • 서비스 컨트롤러: 클라우드 제공 사업자 로드밸런서를 생성, 업데이트 그리고 삭제하는 것

자료 출처: https://kubernetes.io/ko/docs/concepts/overview/components/

 

쿠버네티스 컴포넌트

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

kubernetes.io


Operation


자료 출처: Pod | 쿠버네티스 안내서 (subicura.com)

 

Pod

Pod이 무엇인지 알아보고 기본적인 사용법을 익힙니다. YAML을 이용하여 설정파일을 작성합니다.

subicura.com

 

'IT > Kubernetes' 카테고리의 다른 글

[Lab] Kubernetes Pod & YAML file  (0) 2021.10.29
[Lab] Kubernetes Pod YAML file / Namespace  (0) 2021.10.28
Configure of Kubernetes on VMware (Windows10)  (0) 2021.10.28
Kubernetes 기능과 용어  (0) 2021.10.27

yaml 파일을 통한 Pod 생성/수정

# yaml 파일 생성
nano mynginx.yaml

# yaml 파일 작성

apiVersion: v1
kind: Pod
metadata:
    name: mynginx
spec:
    containers:
    - name: mynginx
      image: nginx


# yaml 파일 적용
kubectl apply -f mynginx.yaml

-f = file

# Pod 생성 확인 (뒤에 -n 등 속성을 안 붙이면 default 네임 스페이스로 잡는다)
kubectl get pod


# yaml 파일 확인
kubectl get pod mynginx -o yaml

-o = output


# 웹에서 불러온 yaml 파일로 Pod 생성
kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/pods/simple-pod.yaml

 

# Pod 생성 확인
kubectl get pod


# yaml 파일 확인
kubectl get pod nginx -o yaml


# yaml 파일 수정

nano mynginx.yaml

apiVersion: v1
kind: Pod
metadata:
    labels:
       hello: world
    name: mynginx
spec:
    containers:
    - name: mynginx
      image: nginx:1.17.2


# yaml 파일 재적용 (Configured 출력 확인)
kubectl apply -f mynginx.yaml

# yaml 파일 확인
kubectl get pod mynginx -o yaml

# yaml 파일 재적용 시도 (Unchanged 출력 확인)
kubectl apply -f mynginx.yaml


네임 스페이스의 명령어 속성으로써의 활용

# default 네임 스페이스

kubectl get pod -n default

-n = namespace

 

# 쿠버네티스가 동작하는 데에 반드시 필요한 것이 들어있는 네임 스페이스

kubectl get pod -n kube-system


# kube-system 네임 스페이스 위에서 mynginx-ns Pod 돌리기

kubectl run mynginx-ns --image nginx -n kube-system

 

# Pod 확인

kubectl get pod mynginx-ns -n kube-system

 

# 다시 지워서 원 상태로 만들기

kubectl delete pod mynginx-ns -n kube-system

 


kubectl Commands

https://subicura.com/k8s/guide/kubectl.html

 

기본 명령어

kubectl의 기본적인 사용법을 익힙니다.

subicura.com

 

 

'IT > Kubernetes' 카테고리의 다른 글

[Lab] Kubernetes Pod & YAML file  (0) 2021.10.29
Kubernetes Components & Operation  (0) 2021.10.29
Configure of Kubernetes on VMware (Windows10)  (0) 2021.10.28
Kubernetes 기능과 용어  (0) 2021.10.27

Master Node와 Worker Node 생성 및 기본 설정

1. k8s-m 설치(ubuntu-20.04.2-live-server-amd64.iso)

2. k8s-m IP 주소 설정(netplan apply & shutdown) 및 스냅샷

3. k8s-m 클론떠서 k8s-w1, k8s-w2, k8s-w3 생성

4. 워커 노드 하나씩 접속하여 IP 주소 설정(netplan apply & shutdown) 및 스냅샷

 

* Master는 메모리 4GB, CPU 2개로 잡고 Worker는 메모리 2GB, CPU 1개로 잡는다.

 

kubeadm 으로 k8s 클러스터 생성 & CNI 설치

# 마스터 노드에서 클러스터 초기화 (K8s version v1.21.1)
kubeadm init --apiserver-advertise-address 192.168.79.200 --pod-network-cidr=172.16.0.0/16 --service-cidr 10.10.0.0/16

# 출력 내용 중 아래 2줄을 워커 노드에서 입력
kubeadm join 192.168.79.200:6443 --token t9fzfv.dxvtsz75l418ojf1 \
--discovery-token-ca-cert-hash sha256:055a3aef6fb8e930bff50da508007748fe97d3683c312c91c877069129930642


# k8s 관리를 위한 사용자(현재 root 사용자) 설정
echo $HOME
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config


# CNI - calico install : Pod 대역 자동으로 인식 (명령어 한 줄씩)
curl -O https://docs.projectcalico.org/manifests/calico.yaml
sed -i 's/policy\/v1beta1/policy\/v1/g' calico.yaml
kubectl apply -f calico.yaml

 

# calicoctl install

curl -o kubectl-calico -O -L "https://github.com/projectcalico/calicoctl/releases/download/v3.19.1/calicoctl"

chmod +x kubectl-calico

mv kubectl-calico /usr/bin


# Source the completion script in your ~/.bashrc file
echo 'source <(kubectl completion bash)' >>~/.bashrc
echo 'source <(kubeadm completion bash)' >>~/.bashrc

# alias kubectl to k
echo 'alias k=kubectl' >> ~/.bashrc
echo 'complete -F __start_kubectl k' >>~/.bashrc

 

* 본인 VMnet8(NAT)의 IP 대역대에 맞게 수정하여 적용

* 출력되는 해시값이 다 다르기 때문에 본인 커맨드 창에 뜬 명령어를 긁어야 함


노드 상태 확인 명령어들

watch -d -n 2 "kubectl get node"

kubectl get node
kubectl get node -w

kubectl-calico node status

kubectl describe node k8s-w1

kubectl get nodes -o wide

 

조금 시간이 지난 후 wide 명령어를 쳐서 STATUS가 전부 Ready 상태로 올라와 있으면 설정 성공.

이 4개의 서버는 calico라는 네트워크를 통해 하나의 클러스터로 묶여 있는 상태이다.

 

 


kubectl Commands Cheat Sheet

https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/

 

kubectl 치트 시트

이 페이지는 일반적으로 사용하는 kubectl 커맨드와 플래그에 대한 목록을 포함한다. Kubectl 자동 완성 BASH source <(kubectl completion bash) # bash-completion 패키지를 먼저 설치한 후, bash의 자동 완성을 현재

kubernetes.io

 

'IT > Kubernetes' 카테고리의 다른 글

[Lab] Kubernetes Pod & YAML file  (0) 2021.10.29
Kubernetes Components & Operation  (0) 2021.10.29
[Lab] Kubernetes Pod YAML file / Namespace  (0) 2021.10.28
Kubernetes 기능과 용어  (0) 2021.10.27

 


참조 사이트 (Official)

kubernetes.io

 

Production-Grade Container Orchestration

Production-Grade Container Orchestration

kubernetes.io

subicura.com/k8s/guide

 

시작하기

쿠버네티스 실습을 위해 minikube, kubectl을 설치하고 기본적인 사용법을 알아봅니다.

subicura.com


Container Orchestration

Container Orchestration이란 복잡한 컨테이너 환경을 효과적으로 관리하는 것이라고 정의할 수 있고, 그것을 위해 여러가지의 툴이 만들어졌으나 그 중 거의 표준으로 쓰이고 있는 도구(Framework)가 바로 쿠버네티스이다.

아래에서 대표적인 기능 6가지를 알아본다.


1. Cluster

위와 같이 사양이 제각각인 여러 개의 노드(On-premise: 실제 서버, Cloud: VM Instance)가 있을 때 이를 논리적으로 하나인 것처럼 Clustering하여 관리하는 것이 Cluster이다. 이 역할을 수행하는 것이 Master(Control Plane)이고, 하나의 Cluster(Data Plane)로 묶이는 각 Node들은 Worker Node라고 한다.

 

그렇게 만들어진 Cluster는 Master가 지속적으로 Auto Scaling을 하며 관리한다.


2. State

replicas 값의 변화를 자동적으로 감지하고 그에 맞춰 Pod를 증감시킨다.

과거에 SLB(Server Load Balancer)가 수행하던 일이라고 한다.

위와 같이 3이 되었을 경우 Pod 하나가 생성될 것이고, Pod에 문제가 생겨 동작을 하고 있지 않다면 그 또한 조절한다.


3. Scheduling

하나의 클러스터로 묶여 있는 3개의 Node가 있고, 그 위에 이렇게 애플리케이션이 작동하고 있을 때, 새로운 애플리케이션 인스턴스가 추가되어야 한다면 자동적으로 리소스 낭비가 가장 적도록 할당하는 것이다.

위와 같은 경우 2번째 Node에 추가될 것이고, 같은 규모의 애플리케이션이 또 추가되어야 한다면 Node를 새로 생성하여 그 위에 올린다.


4. ROLLOUT / ROLLBACK

이미지의 배포 버전이 업, 다운됨에 따라 ROLLOUT, ROLLBACK을 자동적 그리고 일괄적으로 처리하여 버전 관리를 수행할 수 있다. 위 상황과 같이 버전이 업그레이드 되면 일괄적 ROLLOUT을, 만약 새 버전에 문제가 발생해서 복구해야 한다면 이전 버전으로 ROLLBACK한다.


5. SERVICE DISCOVERY

Service Discovery는 컨테이너 내부에서 실행되는 서비스(ex: Web Server)의 생성을 자동으로 감지하고 등록하여 프로세스를 재시작하게 하는 기능이다. 이를 통해 관리자가 별도로 설정을 해 줄 필요 없이 외부에서 바로 서비스에 접근할 수 있게 된다.


6. VOLUME

NFS(File Storage), EBS(Block Storage), PD(Block Storage) 등을 Node에 할당하고 연결시켜서 볼륨 스토리지 관리를 할 수 있게 한다.

'IT > Kubernetes' 카테고리의 다른 글

[Lab] Kubernetes Pod & YAML file  (0) 2021.10.29
Kubernetes Components & Operation  (0) 2021.10.29
[Lab] Kubernetes Pod YAML file / Namespace  (0) 2021.10.28
Configure of Kubernetes on VMware (Windows10)  (0) 2021.10.28

+ Recent posts