Istio 1.10における今後のネットワーク変更

Istioネットワークの今後の変更点、クラスタへの影響、および対応方法について理解します。

2021年4月15日 | John Howard - Google

背景

Kubernetesのネットワークはカスタマイズ可能ですが、典型的なPodのネットワークは次のようになります。

A pod's network
Podのネットワーク

アプリケーションは、ループバックインターフェース`lo`(通常は`127.0.0.1`にバインド)、またはPodのネットワークインターフェース`eth0`(通常はPodのIPにバインド)、または両方(通常は`0.0.0.0`にバインド)にバインドすることを選択できます。

`lo`にバインドすると、Pod内から`curl localhost`などの呼び出しを実行できます。 `eth0`にバインドすると、他のPodからPodへの呼び出しが可能になります。

通常、アプリケーションは両方にバインドします。ただし、管理インターフェースなどの内部ロジックを持つアプリケーションは、他のPodからのアクセスを回避するために`lo`のみにバインドすることを選択する場合があります。さらに、一部のアプリケーション(通常はステートフルアプリケーション)は、`eth0`のみにバインドすることを選択します。

現在の動作

リリース1.10より前のIstioでは、アプリケーションと同じPodで実行されているEnvoyプロキシは、`eth0`インターフェースにバインドし、すべての受信トラフィックを`lo`インターフェースにリダイレクトします。

A pod's network with Istio today
現在のIstioを使用したPodのネットワーク

これには、標準のKubernetesとは異なる動作を引き起こす2つの重要な副作用があります。

両方のインターフェースにバインドするアプリケーション(これは一般的です)は影響を受けません。

今後の動作

Istio 1.10以降、ネットワークの動作はKubernetesに存在する標準の動作に合わせて変更されます。

A pod's network with Istio in the future
将来のIstioを使用したPodのネットワーク

ここでは、プロキシがトラフィックを`lo`インターフェースにリダイレクトするのではなく、`eth0`上のアプリケーションに転送していることがわかります。その結果、Kubernetesの標準の動作は維持されますが、Istioのすべての利点は引き続き得られます。この変更により、Istioは、ゼロ構成で既存のワークロードと連携するドロップイン透過プロキシという目標に近づくことができます。さらに、`lo`のみにバインドするアプリケーションの意図しない露出を回避します。

影響はありますか?

新規ユーザーの場合、この変更は改善のみとなります。ただし、既存のユーザーである場合、意図的または偶発的に古い動作に依存している可能性があります。

これらの状況を検出するために、影響を受けるPodを見つけるためのチェックを追加しました。 `istioctl experimental precheck`コマンドを実行すると、`Service`で公開されているポートで`lo`にバインドしているPodのレポートを取得できます。このコマンドはIstio 1.10以降で使用できます。 **対策を講じないと、アップグレード時にこれらのポートにアクセスできなくなります。**

$ istioctl experimental precheck
Error [IST0143] (Pod echo-local-849647c5bd-g9wxf.default) Port 443 is exposed in a Service but listens on localhost. It will not be exposed to other pods.
Error [IST0143] (Pod echo-local-849647c5bd-g9wxf.default) Port 7070 is exposed in a Service but listens on localhost. It will not be exposed to other pods.
Error: Issues found when checking the cluster. Istio may not be safe to install or upgrade.
See https://istio.dokyumento.jp/latest/docs/reference/config/analysis for more information about causes and resolutions.

移行

現在`lo`にバインドしている場合は、いくつかのオプションがあります。

この記事を共有する