問題タブ [kube-dns]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dns - クラスター外のクエリ用に kube-dns サービスを公開する方法は?
「kube-dns」サービスを公開して、Kubernetes クラスターの外部で照会できるようにしようとしています。これを行うために、「サービス」定義を編集して「タイプ」を「ClusterIP」から「NodePort」に変更しましたが、これは正常に機能しているように見えました。
ただし、ノード ポートでクエリを実行しようとすると、TCP セッションを取得できます (Telnet でテスト) が、DNS サーバーから応答を取得できないようです (dig でテスト)。
「kube-dns」Pod の各コンテナのログを確認しましたが、問題はありません。さらに、クラスター内から (実行中のコンテナーから) DNS をクエリすると、問題なく動作するように見えます。
以前に kube-dns サービスを公開しようとした人はいますか? もしそうなら、追加のセットアップ手順はありますか、それともデバッグに関するアドバイスはありますか?
サービス定義は次のとおりです。
proxy - iptables に REJECT ルールを挿入する KUBE_SERVICE
4 centos 7 ボックス、マスター、ミニオンで kubernetes を実行しています。flannel と skydns もインストールしています。フランネル オーバーレイの IP は 172.17.0.0/16 で、サービス クラスタの IP は 10.254.0.0/16 です。k8 クラスターで Spinnaker Pod を実行しています。私が見ているのは、Spinnaker サービスがお互いを見つけることができないということです。各ポッドは 172.17 スライスから IP を取得し、その IP を使用して任意のノードからポッドに ping を実行できます。ただし、サービス自体は cluser ip を使用しており、相互に通信できません。Kube-proxy がこのトラフィックを転送する必要があるため、iptable ルールを確認すると、次のように表示されます。
kube-proxy が転送できないようです。kube-proxy の起動時にエラーはありません。
私は何が欠けていますか?
docker - docker 上の Kubernetes は、空のサービス アカウントとトークンのないコンテナーを作成し、コンテナーのクラッシュと再起動につながります
1.3.0 および 1.4.0-alpha.0 まではまだ同様の問題が発生しています。
私の場合 (docker ベースのセットアップ)、trusty または kubedns のいずれかが API サーバーから無許可になります。
奇妙なことに、パス /var/run/secrets/kubernetes.io/serviceaccount の下のインスタンス内にシークレットが存在しないことがわかります
それらはノードとプロキシインスタンスにあるように見えますが
- シークレットを削除し、ポッドを削除してから再作成しても効果はありません
- フォルダーのアンマウントと削除後にクラスターを再起動しても効果はありません
当然、これにより kubedns が起動できなくなります。以下にログイン
containers - Kubernetes でのエンドポイントのフラッピング
Kubernetes クラスター内のサービスに到達できません。確認したところ、サービスでエンドポイントを利用できません。さらに確認すると、エンドポイントが値と null の間で変化し続けることがわかりました。他の投稿で提案されているように、ラベルセレクターをチェックしました。ポッドが立ち上がっています。コンテナーは、サービスのターゲット ポートでリッスンしています。ここで他に何が起こっているのですか。
さらに更新。kube-controller-manager ログに以下のエラーが表示されます。E0810 20:02:21.887677 10451 nodecontroller.go:771] ノードの更新中にエラーが発生しました: クライアント: 応答が無効な json です。エンドポイントは、有効な etcd クラスター エンドポイントではない可能性があります。
kubernetes - Kubernetes PetSet DNS が機能しない
elasticsearch
name ==と serviceName ==の Kubernetes PetSet がありes
ます。elasticsearch-0
ポッドを作成し、予想どおり、や などの名前が付けられelasticsearch-1
ます。ただし、DNS は機能していないようです。elasticsearch-0.es
解決しません (解決しませんelasticsearch-0.default
など)。生成された srv レコードを見ると、予測可能ではなくランダムに見えます。
誰にもアイデアはありますか?
詳細
実際の PetSet と Service の定義は次のとおりです。
kubernetes - kube-dns が機能しない
クラスター (Centos 7) を作成し、kube-dns で rc をデプロイしました。クラスターは正常に動作しますが、kube-dns はログにエラーを出力します。
apiserver: ### # kubernetes システム構成 # # 次の値は、kube-apiserver の構成に使用されます #
マスター構成ファイル:
どうなるか知ってる人いますか?)
dns - kubernetes ノードの観点から、サービスの名前を IP に解決する方法は?
GCE で実行されている kubernetes クラスターがあります。
2 つのポッド glusterfs-server-1
があり、glusterfs-server-2
それが私の gluster サーバーであるセットアップを作成しました。
2glusterfsd
デーモンは正しく通信し、レプリケートされたボリュームを作成し、それらにファイルを書き込み、両方のポッドで正しくレプリケートされたファイルを確認できます。
また、2 つの glusterfs ポッド間のトラフィックのバランスを自動的に調整する1 つのサービスも呼び出しています。glusterfs-server
別のポッド内から発行できmount -t glusterfs glusterfs-server:/myvolume /mnt/myvolume
、すべてが完全に機能します。
今、私が本当に望んでいるのはglusterfs
、コンテナーを作成するときに、.yaml ファイル内でボリューム タイプを使用できるようにすることです。
...truncated...
spec:
volumes:
- name: myvolume
glusterfs:
endpoints: glusterfs-server
path: myvolume
...truncated...
残念ながら、これは機能しません。なぜそれが機能しないのかを知ることができました:
kubernetes nodeに直接接続する場合、 を発行してmount -t glusterfs glusterfs-server:/myvolume /mnt/myvolume
も機能しません。これは、ノードの観点からglusterfs-server
は IP アドレスに解決されないためです。(つまり、getent hosts glusterfs-server
何も返されません)
また、glusterfs の仕組みにより、サービスの IP を直接使用しても失敗します。これは、glusterfs が最終的に名前を解決しようとするglusterfs-server
(そして失敗する) ためです。
さて、これが問題であることを確認するresolv.conf
ために、ポッドとサービスの IP アドレスが正しく解決されるように、(kube-dns の IP アドレスと検索ドメインを入力して) ノードを編集しました。その後、ようやくmount -t glusterfs glusterfs-server:/myvolume /mnt/myvolume
ノードで問題なく発行できました。その後、glusterfs ボリューム (上記の PodSpec を使用) を使用してポッドを作成することもできました。
今、私は自分のノードを変更することresolv.conf
はひどい考えだと確信しています.2つの異なる名前空間の2つのサービスが同じ名前(たとえば、glusterfs-service)を共有している場合、名前空間の概念を持つkubernetesは、にgetent hosts glusterfs-service
住んでいる2つの異なるIPに解決されます2 つの異なる名前空間。
だから私の質問は:
ノードがポッド/サービスの IP アドレスを解決できるようにするにはどうすればよいですか?