2023년

출처: 쉽게 시작하는 쿠버네티스(길벗)

노드포트 당시 프로메테우스를 열고 포트포워딩 방법 virtualbox 버전 Nat Network 사용 명령 프롬프트에서 ipconfig 확인 이더넷 어댑터 VirtualBox Host-Only Network: 해당하는 IP 확인

Virtualbox 네트워크 설정에서 해당하는 Nat Network 포트포워딩 규칙

  1. 규칙 이름 지정
  2. 호스트 IP : 위에서 확인한 IP 설정 (127.0.0.1 로컬 접속 시)
  3. 호스트 포트 : 해당 노드포트로 들어갈 포트(사용하지 않는 포트로 )
  4. 게스트 IP : 노드 IP(노드에 설정한 IP)
  5. 게스트 포트 : 여기에 NodePort로 설정한 포트 번호를 설정

이제 외부에서 VirtualBox IP : 노드포트를 입력하면 프로메테우스 서버로 이동 가능

로컬 가상머신에서 쿠버네티스의 LoadBalancer 기능을 사용하는 것은 가능하지만, 기존의 로컬 환경에서 제공하는 LoadBalancer를 사용할 수 없기 때문에 추가적인 설정이 필요합니다.

로컬 가상머신에서 쿠버네티스를 실행하면 일반적으로 Minikube나 Kind와 같은 도구를 사용합니다. 이러한 도구는 로컬 환경에서 쿠버네티스 클러스터를 쉽게 설정하고 관리할 수 있도록 도와줍니다. 그러나 이러한 도구는 로컬 환경에서 LoadBalancer 기능을 제공하지 않기 때문에 사용자가 직접 LoadBalancer를 설정해야 합니다.

가능한 방법 중 하나는 NodePort 서비스를 사용하는 것입니다. NodePort 서비스는 쿠버네티스 클러스터의 각 노드에 특정 포트를 열어 외부로 노출시키는 방식으로 동작합니다. 이렇게 노출된 포트를 로컬 환경에서 사용할 수 있는 IP 주소와 포트 번호로 매핑하는 것으로 로컬에서 LoadBalancer를 사용할 수 있습니다.

또 다른 방법으로는 MetalLB와 같은 로컬 LoadBalancer 도구를 사용하는 것입니다. MetalLB는 로컬 환경에서 쿠버네티스 클러스터에 LoadBalancer 기능을 제공하는 도구로, 쿠버네티스 클러스터 내부에서 로드 밸런싱을 수행합니다.

따라서 로컬 가상머신에서 쿠버네티스의 LoadBalancer 기능을 사용하는 것은 가능하지만, 기존의 로컬 환경에서 제공하는 LoadBalancer를 사용할 수 없기 때문에 추가적인 설정이 필요합니다. NodePort 서비스나 MetalLB와 같은 도구를 사용하여 LoadBalancer를 설정하면 로컬 환경에서도 쿠버네티스 클러스터의 LoadBalancer 기능을 사용할 수 있습니다.

LoadBalancer 사용을 위한 metalb 설치

네트워크 설정에서 포트 포워딩 규칙

kubectl create deployment http-go --image=gasbugs/http-go:ingress # 인그레스 테스트용 http-go
kubectl expose deployment http-go --port=80 --target-port=8080 --type=LoadBalancer
kubectl scale deployment http-go --replicas=3

kubectl create deployment kstudy --image=gkfn185/kstudy
kubectl expose deployment kstudy --port=80 --target-port=7070
vi ingress-nginx-controller.yaml

Untitled

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: http-go-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /welcome/test
spec:
  rules:
    - http:
        paths:
          - pathType: Exact
            path: /welcome/test
            backend:
              service:
                name: http-go
                port:
                  number: 80

kubectl apply -f test-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: prometheus-grafana-ingress
  namespace: monitoring
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /prometheus
    nginx.ingress.kubernetes.io/rewrite-target: /grafana
spec:
  rules:
  - http:
      paths:
      - pathType: Exact
        path: /prometheus
        backend:
          service:
            name: prometheus-service
            port:
              number: 8080
  - http:
      paths:
      - pathType: Exact
        path: /grafana
        backend:
          service:
            name: grafana
            port:
              number: 3000
vi prometheus-ingress.yaml

statefulset 테스트용