파드 호스트네임

이 페이지에서는 파드 호스트네임을 설정하는 방법과, 설정 이후 발생할 수 있는 잠재적인 문제, 그리고 해당 메커니즘에 대해 설명한다.

기본 파드 호스트네임

파드가 생성되면, 그 (파드 내부에서 확인되는) 호스트 네임은 파드의 metadata.name 값에서 유래한다. 호스트네임과 이에 대응하는 전체 주소 도메인 네임(FQDN) 모두 (파드의 관점에서) metadata.name 값으로 설정된다

apiVersion: v1
kind: Pod
metadata:
  name: busybox-1
spec:
  containers:
  - image: busybox:1.28
    command:
      - sleep
      - "3600"
    name: busybox

이 메니페스트로 생성된 파드는 호스트네임과 전체 주소 도메인 네임(FQDN)이 모두 busybox-1로 설정된다.

파드의 호스트네임과 서브도메인 필드

파드 스펙에는 옵션으로 사용할 수 있는 hostname 필드가 있다. 이 필드가 설정되면, (파드 내부에서 관찰되는) 호스트네임으로 metadata.name 대신 해당 필드의 값으로 설정된다. 예를 들어, spec.hostname이 my-host로 설정된 파드는 호스트네임이 my-host로 설정된다.

파드 스펙에는 옵션으로 subdomain 필드 역시 가지고 있으며, 이는 파드가 네임스페이스 내 특정 서브도메인에 속하고 있음을 나타낸다. 만약 네임스페이스 my-namespace에서 spec.hostname이 "foo"이고, spec.subdomain이 "bar"로 설정된 경우, 파드의 호스트네임은 foo가 되고 (파드 내부에서 관찰되는) 전체 주소 도메인 네임(FQDN)은 foo.bar.my-namespace.svc.cluster-domain.example이 된다.

hostname과 subdomain이 모두 설정된 경우, 클러스터의 DNS 서버는 이 필드를 기반으로 A 및/또는 AAAA 레코드를 생성한다. 자세한 내용은 파드 hostname과 subdomain 필드를 참고한다.

파드의 setHostnameAsFQDN 필드

기능 상태: Kubernetes v1.22 [stable]

파드를 전체 주소 도메인 네임(FQDN)으로 구성한 경우, 호스트네임은 짧은 형태의 호스트네임으로 설정된다. 예를 들어 파드의 전체 주소 도메인 네임이 busybox-1.busybox-subdomain.my-namespace.svc.cluster-domain.example인 경우, 기본적으로 파드 내부에서 hostname 커맨드를 실행하면 busybox-1을 반환하고 hostname --fqdn 커맨드를 실행하면 FQDN을 반환한다.

파드 스펙에서 setHostnameAsFQDN: true와 서브도메인 필드가 함께 설정된 경우, kubelet은 해당 파드 네임스페이스의 호스트명에 파드의 FQDN을 기록한다. 이 경우 hostnamehostname --fqdn 커맨드 모두 파드의 FQDN을 반환한다.

파드의 FQDN은 앞서 설명한 방식과 동일하게 구성된다. 즉, 파드의 spec.hostname(지정된 경우) 또는 metadata.name 필드, spec.subdomain, namespace명, 그리고 클러스터 도메인 접미사로 구성된다.

파드의 hostnameOverride

기능 상태: Kubernetes v1.35 [beta](enabled by default)

파드 스펙에서 hostnameOverride 값을 설정하면 kubelet은 파드의 호스트네임과 전체 주소 도메인 네임(FQDN)을 조건없이 모두 hostnameOverride 값으로 설정한다.

hostnameOverride 필드는 최대 64자의 길이 제한이 있으며 반드시 RFC 1123에서 정의한 DNS 서브도메인 이름 규칙을 준수해야 한다.

Example:

apiVersion: v1
kind: Pod
metadata:
  name: busybox-2-busybox-example-domain
spec:
  hostnameOverride: busybox-2.busybox.example.domain
  containers:
  - image: busybox:1.28
    command:
      - sleep
      - "3600"
    name: busybox

hostnameOverridehostname, subdomain 필드와 함께 설정된 경우,

  • 파드 내부의 호스트네임은 hostnameOverride 값으로 재정의된다.

  • 클러스터 DNS 서버의 파드 A 및/또는 AAAA 레코드는 여전히 hostnamesubdomain 필드를 기반으로 생성된다.

참고: hostnameOverride가 설정된 경우, hostNetworksetHostnameAsFQDN 필드를 동시에 설정할 수 없다. API 서버는 이 조합을 시도하는 생성 요청을 명시적으로 거부한다.

hostnameOverride가 다른 필드(hostname, subdomain, setHostnameAsFQDN, hostNetwork)와 함께 설정되었을 때의 동작 방식에 대한 상세 내용은 KEP-4762 디자인 상세의 표를 참고한다.