2026年11月1日

2026年11月1日

CoreDNSの設定方法(Kubernetes環境)

手順・設定方法

ステップ1: CoreDNSのインストールとデプロイ

# CoreDNSをkube-system namespaceにデプロイします。必要であれば、他のnamespaceへ変更してください。
kubectl apply -f https://raw.githubusercontent.com/coredns/coredns/master/deploy/coredns.yaml

# デプロイが成功したことを確認します。
kubectl get pods -n kube-system | grep coredns

ステップ2: CoreDNSのコンフィギュレーションファイルの編集

# CoreDNSはYAML形式で設定を管理します。以下に基本的な設定例を示します。
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    . {
        errors
        health
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
            pods insecure
            upstream
            fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        proxy . /etc/resolv.conf
        cache 30
    }
EOF

# 設定が反映されたことを確認します。
kubectl get configmap coredns -n kube-system -o yaml | grep Corefile

ステップ3: プロクシ設定と応用例

# CoreDNSは他のDNSサーバーへのプロクシ設定も可能です。以下に例を示します。
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    . {
        errors
        health
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
            pods insecure
            upstream
            fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        proxy example.com 8.8.8.8
        cache 30
    }
EOF

# 設定が反映されたことを確認します。
kubectl get configmap coredns -n kube-system -o yaml | grep Corefile

ステップ4: 実践的な設定とトラブルシュート

# DNSリクエストの監視を行うことができます。以下に例を示します。
kubectl port-forward svc/coredns 9153:9153 -n kube-system &

# PrometheusでCoreDNSのパフォーマンスを監視するための設定も可能です。
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
  name: prometheus-coredns
  namespace: monitoring
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: prometheus-coredns
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: monitor
subjects:
- kind: ServiceAccount
  name: prometheus-coredns
  namespace: monitoring
---
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: coredns-prometheus-rule
  namespace: monitoring
spec:
  groups:
    - name: coredns
      rules:
        - record: dns_request_duration_seconds_count{job="coredns"}
          expr: count(kube_dns_request_duration_seconds_bucket{}) by (le)
---
apiVersion: v1
kind: Service
metadata:
  labels:
    monitoring: coredns
  name: prometheus-coredns-service
  namespace: monitoring
spec:
  ports:
    - name: http
      port: 9090
      targetPort: 9090
---
apiVersion: v1
kind: Endpoints
metadata:
  labels:
    monitoring: coredns
  name: prometheus-coredns-endpoints
  namespace: monitoring
spec:
  addresses:
    - ip: 127.0.0.1

注意事項

  • CoreDNSの設定は慎重に行いましょう。誤った設定によりネットワーク接続が遮断される可能性があります。
  • 毎回kubectl port-forwardを実行する必要はありません。一度設定し、必要に応じて再利用できます。
  • ClusterRoleBindingはPrometheusとCoreDNSの通信を許可します。これを無効にする場合は削除してください。

まとめ

1. インストール: CoreDNSをKubernetesクラスターにデプロイします。

2. 設定: Basic ConfigMapを用いて初期設定を行います。

3. 応用: プロクシ設定やカスタムリクエストの処理方法を学びます。

4. 監視: Prometheusと連携してCoreDNSのパフォーマンスをモニタリングします。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲