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のパフォーマンスをモニタリングします。
関連記事: