2023년
출처: 쉽게 시작하는 쿠버네티스(길벗)
노드포트 당시 프로메테우스를 열고 포트포워딩 방법 virtualbox 버전 Nat Network 사용 명령 프롬프트에서 ipconfig 확인 이더넷 어댑터 VirtualBox Host-Only Network: 해당하는 IP 확인
Virtualbox 네트워크 설정에서 해당하는 Nat Network 포트포워딩 규칙
이제 외부에서 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
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 테스트용