はじめに
Kubernetesを利用していると、「Pod間通信で名前解決ができる」「Service名でアクセスできる」ことが当たり前のように感じられます。その裏側で重要な役割を果たしているのが CoreDNS です。 本記事では、CoreDNSの基本的な仕組みから、Kubernetesにおける利用方法、設定の入門ポイントまでを解説します。
CoreDNSとは?
CoreDNSは、Go言語で書かれた プラグインベースのDNSサーバー です。特徴は以下の通りです。
- 軽量かつ高速:コンテナ環境でも動作しやすい設計
- プラグイン方式:機能を柔軟に拡張できる
- Kubernetes公式DNS:2018年以降、kube-dnsの後継として標準採用
DNSサーバーとして「名前解決を行う」だけでなく、キャッシュやフォワード、サービスディスカバリなどを担うことができます。
CoreDNSとKubernetesの関係
Kubernetesでは、PodやServiceをIPアドレスで直接指定するのは現実的ではありません。そこで名前解決を提供するのがCoreDNSです。
- Pod間通信
- Service発見
- my-service.default.svc.cluster.local でClusterIPに解決。
- 外部リソースとの接続
CoreDNSはKubernetesのkube-system namespaceにDeploymentとして動作し、通常はkube-dns Service経由で利用されます。