本文分享自华为云社区《容器内指定特定域名解析结果的几种方式》,作者:张俭。
在本篇文章中,我们将探讨如何在容器内指定特定域名解析结果的几种方式。为了方便演示,首先我们创建一个演示用的Deployment配置文件。
apiVersion: apps/v1 kind: Deployment metadata: name: busybox-deployment labels: app: busybox spec: replicas: 1 selector: matchLabels: app: busybox template: metadata: labels: app: busybox spec: containers: - name: busybox image: busybox args: - /bin/sh - -c - "while true; do echo Hello, Kubernetes!; sleep 10;done"
这个deployment会创建1个busybox的pod,容器每隔10s会打印“Hello, Kubernetes!”到控制台
TL;DR
方案 | 修改级别 | 是否推荐 | 备注 |
---|---|---|---|
修改/etc/hosts | pod | 否 | |
添加HostAliases记录 | pod/deploy/statefulset | 是 | |
修改Coredns配置 | 整个kubernetes集群 | 是 | |
自定义DNS策略 | pod/deploy/statefulset | 视情况而定 | 如需对接三方的DNS服务器,推荐采用 |
使用三方DNS插件 | 整个kubernetes集群 | 否 | 不推荐,Coredns为业内主流 |
修改/etc/hosts
修改/etc/hosts是最传统的方式,直接在容器内修改相应的文件来实现域名解析,在Pod级别生效。由于其可维护性较差(每次pod发生重启都需要手动修改),不推荐在生产环境使用。
例如,我们可以在/etc/hosts里面添加这样一条记录
250.250.250.250 four-250 / # ping four-250 PING four-250 (250.250.250.250): 56 data bytes
添加HostAliases记录
HostAliases是kubernetes中Pod配置的一个字段,它提供了Pod内容器的/etc/hosts
文件的附加记录。这在某些情况下非常有用,特别是当你想要覆盖某个主机名的解析结果,或者提供网络中没有的主机名解析时。
这个可以在Pod、Replica、Deployment、StatefulSet的级别修改,维护性稍强。举个
标签:容器,busybox,etc,域名解析,指定,250.250,hosts,DNS,Coredns From: https://www.cnblogs.com/huaweiyun/p/17903421.html