地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【CoreDNS】とは?

はじめに

Kubernetesを利用していると、「Pod間通信で名前解決ができる」「Service名でアクセスできる」ことが当たり前のように感じられます。その裏側で重要な役割を果たしているのが CoreDNS です。 本記事では、CoreDNSの基本的な仕組みから、Kubernetesにおける利用方法、設定の入門ポイントまでを解説します。

CoreDNSとは?

CoreDNSは、Go言語で書かれた プラグインベースのDNSサーバー です。特徴は以下の通りです。

  • 軽量かつ高速:コンテナ環境でも動作しやすい設計
  • プラグイン方式:機能を柔軟に拡張できる
  • Kubernetes公式DNS:2018年以降、kube-dnsの後継として標準採用

DNSサーバーとして「名前解決を行う」だけでなく、キャッシュやフォワード、サービスディスカバリなどを担うことができます。

CoreDNSとKubernetesの関係

Kubernetesでは、PodやServiceをIPアドレスで直接指定するのは現実的ではありません。そこで名前解決を提供するのがCoreDNSです。

  • Pod間通信
    • my-pod.default.svc.cluster.local のようにFQDNで解決可能。
  • Service発見
    • my-service.default.svc.cluster.local でClusterIPに解決。
  • 外部リソースとの接続

CoreDNSはKubernetesのkube-system namespaceにDeploymentとして動作し、通常はkube-dns Service経由で利用されます。