k8s MetalLB & nginx ingress controller로 LoadBalancer Type 사용하기

GisangLee·2024년 3월 17일
0

k8d

목록 보기
23/29

1. MetalLB 설치

링크
링크

k edit configmap -n kube-system kube-proxy
>>>

apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "ipvs"
ipvs:
  strictARP: true
  
# or
kubectl get configmap kube-proxy -n kube-system -o yaml | sed -e "s/strictARP: false/strictARP: true/" | kubectl apply -f - -n kube-system
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.10.1/deploy/static/provider/baremetal/deploy.yaml

2. MetalLB Secret 생성

k create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
>>> secret/memberlist created

3. MetalLB ConfigMap 생성

---
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: default
  namespace: metallb-system
spec:
  addresses:
    - 192.168.56.100-192.168.56.200
  autoAssign: true
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: default
  namespace: metallb-system
spec:
  ipAddressPools:
    - default
kubectl create -f metallb-config.yaml

4. Nginx Ingress Controller 설치

kubectl create -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.5.1/deploy/static/provider/baremetal/deploy.yaml

nginx-ingress에서 External IP 할당 받기

k get svc -n ingress-nginx 

NAME                                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             NodePort    10.233.26.164   <none>        80:30080/TCP,443:30443/TCP   23h
ingress-nginx-controller-admission   ClusterIP   10.233.45.96    <none>        443/TCP                      23h

k edit svc -n ingress-nginx ingress-nginx-controller
...
  selector:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/name: ingress-nginx
  sessionAffinity: None
  type: LoadBalancer
  
# or

kubectl -n ingress-nginx patch service ingress-nginx-controller -p '{"spec":{"type":"LoadBalancer"}}'


k get svc -n ingress-nginx 
NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             LoadBalancer   10.233.26.164   10.95.90.50   80:30080/TCP,443:30443/TCP   23h
ingress-nginx-controller-admission   ClusterIP      10.233.45.96    <none>        443/TCP                      23h

5. 동작 확인

curl 10.95.90.50

<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

curl 10.95.90.50/test1
>>> test1

curl 10.95.90.50/test2
>>> test2

참고 사이트

링크

profile
포폴 및 이력서 : https://gisanglee.github.io/web-porfolio/

0개의 댓글