• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

로드벨런서 생성하면, 자동으로 external ip가 할당 되는데, 수동 할당도 할 수 있나요?

21.09.12 20:41 작성 조회수 425

2

로드벨런서 생성하면, 자동으로 external ip가 할당 되는데, 수동 할당도 할 수 있나요?

답변 4

·

답변을 작성해보세요.

2

해도 되는 방법이네요. 자세한 내용은 이걸 보시면 될꺼 같아요 

다른 3사도 같을꺼에요 

https://cloud.google.com/kubernetes-engine/docs/tutorials/configuring-domain-name-static-ip#step_2b_using_an_ingress

1

GKE의 경우 GLB에 static ip를 주고 그걸 manifest에 ip로 주면 동작하네요 (권장하는지를 좀 확인해 봐야 할꺼 같아요) 

아마 다른 EKS, AKS도 유사할 것으로 예상됩니다. 

       │ File: static-lb.yaml

───────┼───────────────

   1    apiVersionv1

   2    kindService

   3    metadata:

   4      labels:

   5        appchk-info

   6      namechk-info

   7    spec:

   8      ports:

   9      port80

  10        protocolTCP

  11        targetPort80

  12      selector:

  13        appchk-info

  14      typeLoadBalancer

  15      loadBalancerIP34.134.n.n

 

k get svc

NAME         TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)        AGE

chk-info     LoadBalancer   10.16.2.107   34.134.n.n   80:32257/TCP   54s

kubernetes   ClusterIP      10.16.0.1     <none>          443/TCP        171d

 

1

anstls님은 :) 항상 자체 답변을 자주 주시는군요 :) 

부가적인 설명을 좀 드리자면요. 

LoadBalancer에 Static(고정) 주소를 줄 수는 있지만, 매우 제한적으로 사용됩니다. 

아무래도 외부로 오픈하는 주소가 고정으로 된다면, 위험에 매우 노출되는 결과를 가지게 되거든요 

예를 들면, 리니지 게임에 주요 메인 서버 주소를 안다고 생각해 볼까요
(물론 구조적으로는 그 메인 서버라는게 노출 될 일은 없고 베스천 서버 수준으로만 노출되겠지만요)

이는 크래킹 등의 위험에 쉽게 노출되게 됩니다. 

 

또한 주소라는 것은 제한적인 자원으로 관리가 필요한데, 이를 Static으로 사용하게 되면, 실제로 관리를 하기 매우 어렵습니다. 그래서 거의 모든 관리형 쿠버네티스 및 설치형등은 IP range를 주고 그 내에서 사용하도록 합니다. 

 

특정 서비스가 다른 서비스와 연결성이 필요하다면 노출되는 ip가 아니라 coreDNS에서 제공하는 Domain 이름으로 내부적으로 연결해서 관리합니다. 나중에 ingress 부분을 보면 clusterIP와 다른 서비스가 연결되는 것을 보실 수 있을꺼에요 

참고가 되시면 좋을꺼 같습니다 

 

조훈 드림. 

0

anstls9614님의 프로필

anstls9614

질문자

2021.09.12

아 이렇게 하면 되군요.

apiVersion: v1

kind: Service

metadata:

  name: lb-nginx

spec:

  selector:

    app: deploy-nginx

  ports:

    - name: http

      port: 80

      targetPort: 80

  type: LoadBalancer

  loadBalancerIP: { IP 입력 }