我正在尝试按照此博客文章中的示例为我的 pod 提供上游 DNS 服务器。
我在 us-east1-d 中创建了一个新的 GKE 集群(根据此处4 月 4 日的条目,1.6.0 可用)。
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.0", GitCommit:"fff5156092b56e6bd60fff75aad4dc9de6b6ef37", GitTreeState:"clean", BuildDate:"2017-03-28T16:36:33Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.0", GitCommit:"fff5156092b56e6bd60fff75aad4dc9de6b6ef37", GitTreeState:"clean", BuildDate:"2017-03-28T16:24:30Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"}
然后,我在以下 YAML 文件 kube-dns-cm.yml 中定义了一个 ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-dns
namespace: kube-system
data:
upstreamNameservers: |
["1.2.3.4"]
当我尝试创建 ConfigMap 时,我被告知它已经存在:
$ kubectl create -f kube-dns-cm.yml
Error from server (AlreadyExists): error when creating "kube-dns-cm.yml": configmaps "kube-dns" already exists
我尝试删除现有的 ConfigMap 并将其替换为我自己的,但是当我随后创建 pod 时,它们似乎没有生效(名称没有像我希望的那样解析)。这个故事是否比博文中解释的更多(例如,重新启动 kube-dns 服务或 pod)?谢谢!
编辑:删除和重新创建 ConfigMap确实有效,但不完全是我希望的方式。我的 docker 注册表位于私有(公司)网络上,解析注册表的名称需要上游名称服务器。所以我不能在我的 pod yaml 文件上使用注册表的 DNS 名称,但是从该 yaml 文件创建的 pod 将具有所需的 DNS 解析(在替换 ConfigMap 之后)