BareMetal에 RKE를 사용하여 Kubernetes 단일노드 설치

 

BareMetal에 RKE를 사용하여 Kubernetes 단일노드 설치

이 글은 CentOS 8.2.2004 (Core) 버전의 깡통을 기준으로 root 계정에서 설치하는 과정을 설명합니다. 1. OS 사전 필수 설정 lock 파일 제거 /etc 경로에 .lock 파일이 있는 경우 설치가 원활하지 않을 수 있습

log4cat.tistory.com

 

이전 글에서는 BareMetal에 RKE를 사용하여 단일노드 Kubernetes를 설치하였습니다.

 

이번 글에서는 LoadBalancer 역할을 하는 MetalLB를 설치하는 과정에 대해서 설명하겠습니다.

 

더 자세한 정보는 MetalLB 공식 문서를 참고해 주시기 바랍니다.

 

 

1. 설치


MetalLB 설치를 위해 아래의 코드를 복사하여 실행합니다.

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/metallb.yaml
# On first install only
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"

 

2. 설정


MetalLB의 L2 Layer 구성을 위해 아래의 코드를 복사하여 metallb-config.yaml 파일을 생성합니다.

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.253.240-192.168.253.250

 

참고 ) addresses의 ip range는 host의 구성에 따라 변경되어야 합니다.

  • 현재 문서에서 진행하고 있는 설치 과정에서는 VMWare를 사용하여 NIC를 NAT로 구성하였습니다.
    • 이전 포스팅에서 host ip는 192.168.253.140으로 설정하였고, metallb-config.yaml에 host ip와 겹치지 않는 ip range를 사용하였습니다.
  • 만약 구성하시고 계시는 현재의 host가 고정 ip를 사용하고 있으며, ip의 여유가 없는 경우 host ip를 중복해서 넣어주시면 됩니다.

 

아래의 명령을 실행하여 MetalLB의 ConfigMap을 생성합니다.

kubectl create -f metallb-config.yaml

 

3. 테스트


LoadBalancer Type으로 Service를 생성하는 Nginx 예제를 실행하겠습니다.

 

아래의 코드를 복사하여 nginx.yaml로 생성해주세요.

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

---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  annotations:
    metallb.universe.tf/address-pool: default
    metallb.universe.tf/allow-shared-ip: shared
spec:
  selector:
    app: nginx
  ports:
  - port: 80
    targetPort: 80
  type: LoadBalancer

 

아래의 명령을 사용하여 POD와 Service를 생성합니다.

kubectl create -f nginx.yaml

 

아래 명령을 사용해, EXTERNAL-IP가 할당된 모습을 확인할 수 있습니다.

kubectl get svc -A

EXTERNAL-IP가 할당된 모습

 

EXTERNAL-IP인 192.168.253.240으로 접속 시, Nginx POD의 Response 내용을 볼 수 있습니다.

 

'개발 > Kubernetes' 카테고리의 다른 글

BareMetal에 RKE를 사용하여 Kubernetes 단일노드 설치  (0) 2020.12.25
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기