3

nsqlookupd サービスを提供するポッドのセットがあります。ここで、各 nsqd コンテナーに同時に接続する nsqlookupd サーバーのリストが必要です (サービスは毎回異なるものを指します)。私が得る似たようなもの

kubectl describe service nsqlookupd
...
Endpoints: ....

しかし、展開定義内の変数、または何らかの方法でnsqdコンテナー内から変数に入れたい

4

2 に答える 2

7

nsqdコンテナーまたは同じポッド内の別のコンテナーで実行される追加のサービスが必要になるようです。そのサービスの役割は、エンドポイントのリストを取得するために API を定期的にポールすることです。

サービス アカウントが有効になっている(デフォルトで有効になっている)と仮定すると、Pod 内curlおよびPod を使用したシェルの概念実証は次のとおりです。jq

# Read token and CA cert from Service Account
CACERT="/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"
TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)

# Replace the namespace ("kube-system") and service name ("kube-dns")
ENDPOINTS=$(curl -s --cacert "$CACERT" -H "Authorization: Bearer $TOKEN" \
    https://kubernetes.default.svc/api/v1/namespaces/kube-system/endpoints/kube-dns \
)

# Filter the JSON output
echo "$ENDPOINTS" | jq -r .subsets[].addresses[].ip
# output:
#   10.100.42.3
#   10.100.67.3

Go でのこの種のサービスの適切な実装については、Kube2skyのソース コードを参照してください。

于 2016-05-05T11:11:28.040 に答える
0

StatefuSet で実行できます。安定した名前 + 安定したストレージ

于 2016-11-15T07:06:40.783 に答える