基本概念
- CoreDNS 是 Kubernetes 集群中的預設 DNS 服務
- 負責服務發現和 DNS 解析
- 支持集群內部服務的命名解析
DNS 解析模式
服務發現場景
場景 | DNS 解析方式 | 範例 |
不同 Deployment, 同命名空間 | 服務名稱 | |
同 Deployment, 同命名空間 | localhost | localhost |
不同 Deployment, 不同命名空間 | 服務名.命名空間 |
CoreDNS 解析域名規則
完整域名結構
服務名.命名空間.svc.cluster.local
常見解析方式
- 短名稱:
service-name
- 命名空間內:
service-name
- 跨命名空間:
service-name.namespace
- 完整域名:
service-name.namespace.svc.cluster.local
CoreDNS 域名配置修改
修改集群域名
預設域名為
cluster.local
,可以通過以下方式修改:- 查看當前 CoreDNS ConfigMap
- 編輯 CoreDNS ConfigMap
- 修改 Corefile 配置
最佳實踐
- 優先使用服務名稱或
服務名.命名空間
- 避免硬編碼 IP 地址
- 利用 Kubernetes 服務發現機制
- 使用 NetworkPolicy 控制網絡流量
範例配置
排障技巧
- 使用
nslookup
或dig
測試 DNS 解析
- 檢查 CoreDNS Pod 狀態
- 驗證服務和 Pod 標籤選擇器
- 確認域名配置正確