1.6. 도메인 이름 시스템(DNS)


도메인 이름 시스템(DNS)은 www.example.com과 같은 사용자에게 친숙한 도메인 이름을 네트워크의 컴퓨터를 식별하는 IP 주소로 변환하는 데 사용되는 계층적이고 분산된 명명 시스템입니다. DNS는 서비스 검색과 이름 확인에 중요한 역할을 합니다.

OpenShift Container Platform은 DNS 이름을 통해 서비스에 접근할 수 있도록 내장 DNS를 제공합니다. 기본 IP 주소가 변경되더라도 안정적인 통신을 유지하는 데 도움이 됩니다. 포드를 시작하면 서비스 이름, IP 주소, 포트에 대한 환경 변수가 자동으로 생성되어 포드가 다른 서비스와 통신할 수 있습니다.

1.6.1. 주요 DNS 용어

  • CoreDNS: CoreDNS는 DNS 서버이며 서비스와 포드에 대한 이름 확인을 제공합니다.
  • DNS 이름: 서비스에는 네임스페이스와 이름을 기반으로 DNS 이름이 지정됩니다. 예를 들어, 기본 네임스페이스에 있는 my-service 라는 서비스의 DNS 이름은 my-service.default.svc.cluster.local 입니다.
  • 도메인 이름: 도메인 이름은 example.com 과 같이 웹사이트와 서비스에 접속하는 데 사용되는 인간 친화적인 이름입니다.
  • IP 주소: IP 주소는 통신에 IP를 사용하는 컴퓨터 네트워크에 연결된 각 장치에 할당된 숫자 라벨입니다. IPv4 주소의 예는 192.0.2.1 입니다. IPv6 주소의 예는 2001:0db8:85a3:0000:0000:8a2e:0370:7334 입니다.
  • DNS 서버: DNS 서버는 DNS 레코드를 저장하는 특수 서버입니다. 이러한 기록은 도메인 이름을 IP 주소에 매핑합니다. 브라우저에 도메인 이름을 입력하면 컴퓨터는 DNS 서버에 접속하여 해당 IP 주소를 찾습니다.
  • 해결 프로세스: DNS 쿼리가 DNS 확인자에게 전송됩니다. 그런 다음 DNS 확인자는 일련의 DNS 서버에 연결하여 도메인 이름과 연결된 IP 주소를 찾습니다. 리졸버는 <namespace>.svc.cluster.local , svc.cluster.local , cluster.local 과 같은 일련의 도메인을 포함하는 이름을 사용하려고 시도합니다. 이 과정은 첫 번째 매치에서 멈춥니다. IP 주소는 브라우저로 반환된 후 해당 IP 주소를 사용하여 웹 서버에 연결됩니다.

1.6.2. 예: DNS 사용 사례

이 예에서 프런트엔드 애플리케이션은 한 포드 세트에서 실행되고 백엔드 서비스는 다른 포드 세트에서 실행됩니다. 프런트엔드 애플리케이션은 백엔드 서비스와 통신해야 합니다. 백엔드 포드에 안정적인 IP 주소와 DNS 이름을 제공하는 서비스를 만듭니다. 프런트엔드 포드는 개별 포드 IP 주소가 변경되더라도 이 DNS 이름을 사용하여 백엔드 서비스에 액세스합니다.

백엔드 포드에 대한 서비스를 생성하면 프런트엔드 포드가 백엔드 서비스와 통신하는 데 사용할 수 있는 안정적인 IP 및 DNS 이름인 backend-service.default.svc.cluster.local이 제공됩니다. 이렇게 설정하면 개별 포드 IP 주소가 변경되더라도 통신이 일관되고 안정적으로 유지됩니다.

다음 단계에서는 DNS를 사용하여 백엔드 서비스와 통신하도록 프런트엔드 포드를 구성하는 방법의 예를 보여줍니다.

  1. 백엔드 서비스를 만듭니다.

    1. 백엔드 포드를 배포합니다.

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: backend-deployment
        labels:
          app: backend
      spec:
        replicas: 3
        selector:
          matchLabels:
            app: backend
        template:
          metadata:
            labels:
              app: backend
          spec:
            containers:
              - name: backend-container
                image: your-backend-image
                ports:
                  - containerPort: 8080
      Copy to Clipboard Toggle word wrap
    2. 백엔드 포드를 노출하는 서비스를 정의합니다.

      apiVersion: v1
      kind: Service
      metadata:
        name: backend-service
      spec:
        selector:
          app: backend
        ports:
          - protocol: TCP
            port: 80
            targetPort: 8080
      Copy to Clipboard Toggle word wrap
  2. 프런트엔드 포드를 생성합니다.

    1. 프런트엔드 포드를 정의합니다.

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: frontend-deployment
        labels:
          app: frontend
        spec:
          replicas: 3
          selector:
          matchLabels:
            app: frontend
         template:
         metadata:
           labels:
             app: frontend
         spec:
           containers:
             - name: frontend-container
               image: your-frontend-image
               ports:
                 - containerPort: 80
      Copy to Clipboard Toggle word wrap
    2. 클러스터에 Pod 정의를 적용합니다.

      $ oc apply -f frontend-deployment.yaml
      Copy to Clipboard Toggle word wrap
  3. 백엔드와 통신하도록 프런트엔드를 구성합니다.

    프런트엔드 애플리케이션 코드에서 백엔드 서비스의 DNS 이름을 사용하여 요청을 보냅니다. 예를 들어, 프런트엔드 애플리케이션이 백엔드 포드에서 데이터를 가져와야 하는 경우 애플리케이션에 다음 코드를 포함할 수 있습니다.

    fetch('http://backend-service.default.svc.cluster.local/api/data')
      .then(response => response.json())
      .then(data => console.log(data));
    Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat