web-dev-qa-db-ja.com

ポッドが別のネットワークに接続できないのはなぜですか? (Kubernetesの新しいバージョン)

GCPには2つのプロジェクトがあります。

  1. Kubernetesノードv1.8.8-gke.0を使用。また、Kubernetesの外部にあるがデフォルトのネットワークにあるデータベース。すべてのポッドがこのサーバーとすべてのポートに接続できます
  2. Kubernetesノードv1.9.7-gke.3と、Kubernetesの外部であるがデフォルトのネットワーク内のデータベースを使用します。ポッドはこのサーバーに接続できません。 tracerouteテストが失敗します。

このポッドが接続できないのはなぜですか?アイデア?

ありがとう。

5
kurkop

この問題をGoogleに報告しました: https://issuetracker.google.com/issues/111986281

そして、それはKubernetes 1.9の問題であると言いました:

_Beginning with Kubernetes version 1.9.x, automatic firewall rules have changed such that workloads in your Kubernetes Engine cluster cannot communicate with other Compute Engine VMs that are on the same network, but outside the cluster. This change was made for security reasons._

次のリンクに解決策があります: https://cloud.google.com/kubernetes-engine/docs/troubleshooting#autofirewall

基本的に:

まず、クラスターのネットワークを見つけます:gcloud container clusters describe [CLUSTER_NAME] --format=get"(network)"

次に、コンテナに使用されるクラスタのIPv4 CIDRを取得します。

gcloud container clusters describe [CLUSTER_NAME] --format=get"(clusterIpv4Cidr)"

最後に、CIDRをソース範囲として、ネットワークのファイアウォールルールを作成し、すべてのプロトコルを許可します。

_gcloud compute firewall-rules create "[CLUSTER_NAME]-to-all-vms-on-network" --network="[NETWORK]" --source-ranges="[CLUSTER_IPV4_CIDR]" --allow=tcp,udp,icmp,esp,ah,sctp_

16
kurkop

GCPには2つの異なるデータベースサーバーがあるため、構成が異なる場合があります。 GCE VMにインストールされているCloud SQLまたはデータベースサーバーを使用していますか? Cloud SLQの場合、クラスターノードの外部IPアドレスがCloud SQLインスタンスの承認済みネットワークでホワイトリストに登録されていることを確認してください。GCEVMでデータベースを実行している場合は、ファイアウォールルールをチェックして、正しいポートとプロトコルのサーバー。データベースプロセスのバインドアドレスを確認して、外部IPアドレスからの着信接続を受け入れるかどうかを確認することもできます。 (これは、「Sudo netstat -plnt」を実行してプロセスとそのバインディングアドレスを表示することで実行できます)。 このリンク が役立つ場合があります。

1
mehdi sharifi