0

このブログ投稿の例に従って、ポッドにアップストリーム 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 サービスまたはポッドの再起動)? ありがとう!

編集: ConfigMap の削除と再作成は実際に機能しますが、私が望んでいた方法とは完全には異なります。私の docker レジストリはプライベート (企業) ネットワーク上にあり、レジストリの名前を解決するには上流のネームサーバーが必要です。そのため、ポッドの yaml ファイルでレジストリの DNS 名を使用することはできませんが、その yaml ファイルから作成されたポッドには、必要な DNS 解決が含まれます (ConfigMap が置き換えられた後)。

4

3 に答える 3