LoginSignup
5
1

More than 5 years have passed since last update.

istioの設定が各envoyに反映されているかを istioctl proxy-status コマンドを使って確認する

Last updated at Posted at 2019-04-02

概要

istiio proxy-status コマンドについて解説します。

使いどころ

istioを使っていると、たまに設定が反映されない or 時間がかかる時があります(少なくともv1.0.2までは結構ある)。Istioが悪いのか、それとも自分の設定が間違っているのかわからなくなって頭を抱える方も多いのではないでしょうか?
そこで、本当にPilotから各envoy(istio-proxy)に同期されているんだろうか... という時には、 istioctl proxy-status コマンドを使うとxDSが同期されているか確認することができます。

$ istioctl proxy-status
PROXY                                                  CDS        LDS        EDS               RDS          PILOT                            VERSION
foo-api-7fffcdggg-7w2ata.foo                           SYNCED     SYNCED     SYNCED (100%)     SYNCED       istio-pilot-hogehoge             1.0.2
foo-api-7fffcdggg-dc9b4w.foo                           SYNCED     SYNCED     SYNCED (100%)     SYNCED       istio-pilot-hogehoge             1.0.2
istio-egressgateway-7b46123587-abcde.istio-system      SYNCED     SYNCED     SYNCED (100%)     NOT SENT     istio-pilot-hogehoge             1.0.2
istio-ingressgateway-57f123c456-abcde.istio-system     SYNCED     SYNCED     SYNCED (100%)     SYNCED       istio-pilot-hogehoge             1.0.2

※ proxy-status は ps がエイリアスとして設定されていますので、 istioctl ps でも同じ結果が返ってきます。
※ xDSはenvoyをコントロールするために必要なDiscovery Serviceのことです。Istioの場合、cluster / listener / endpoint / route のDiscovery Serviceがあります。

内部の挙動について

istioctl コマンドのソースコードを読むとわかるのですが、 istio-pilotのdiscoveryコンテナに対して、下記のようなコマンドを実行しています。

/usr/local/bin/pilot-discovery request GET /debug/syncz

/debug/syncz というのがistiio-pilotのenvoyのエンドポイントに存在していて、各istio-proxyとxDSがいつ同期したのか、表示してくれます。 $istioctl proxy-status はこのエンドポイントのレスポンスを整形・加工して出力しているということです。元の、レスポンスが見たい場合は、下記のようなコマンドを実行するとイメージがしやすいかと思います。

$ for pilot-pod in `kubectl get po -n istio-system -l istio=pilot -o jsonpath={.items[*].metadata.name}`
> do
> kubectl exec -it ${pilot-pod} -n istio-system -c discovery /usr/local/bin/pilot-discovery request GET /debug/syncz
> done

まとめ

デバッグや監視に利用できそうですね。正直、この辺りのツールまで準備してくれているのはさすがだなと思いました(自分でcontrol plainを作ってこの辺りまで面倒みると思うと果てしないので...)。もし設定が同期されてない場合は、Pilotを再起動してみる等のオペレーションの判断に役立ちそうです。設定がうまくいかない時は使うと幸せになれるかもしれません。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1