ポッドコンテナ内からKubernetes APIにアクセスするにはどうすればいいですか? 質問する

ポッドコンテナ内からKubernetes APIにアクセスするにはどうすればいいですか? 質問する

昔はカーリングができたのに

https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_PORT_443_TCP_PORT/api/v1beta3/namespaces/default/

をベース URL として使用しましたが、kubernetes 0.18.0 では「unauthorized」と表示されます。奇妙なことに、API マシンの外部 IP アドレス ( http://172.17.8.101:8080/api/v1beta3/namespaces/default/) を使用すると、正常に動作します。

ベストアンサー1

公式ドキュメントで次のことが分かりました:

https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/#ポッドから API にアクセスする

どうやら、Kubernetes の以前のバージョンでは必要なかったセキュリティ トークンが不足していたようです。そこから、プロキシを実行したり、コンテナーに golang をインストールしたりするよりも簡単な解決策を考案しました。現在のコンテナーの情報を API から取得する次の例をご覧ください。

KUBE_TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
curl -sSk -H "Authorization: Bearer $KUBE_TOKEN" \
      https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_PORT_443_TCP_PORT/api/v1/namespaces/default/pods/$HOSTNAME

また、単純なバイナリであるjq(http://stedolan.github.io/jq/download/) を実行して、bash スクリプトで使用するために json を解析します。

おすすめ記事