2016-05-04 5 views
0

私はnsqlookupdサービスを提供する一連のポッドを持っています。 これで、接続するnsqlookupdサーバーのリストを(サービスは毎回異なる点を指していますが)同時に作成するために、各nsqdコンテナが必要です。似たような私はKubernetesエンドポイントを取得

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

を得るが、私は私の展開定義内の変数でそれをしたいか、何とかnsqdコンテナ内から、あなたのnsqdコンテナ内どちらか実行されている余分なサービスを必要とするよう

答えて

2

が鳴ります同じポッド内の別の容器に入れます。そのサービスの役割は、エンドポイントのリストを取得するためにAPIを定期的にポーリングすることです。ここで、(デフォルトで有効)あなたはService Accountsを有効にすると仮定すると

がポッド内部からcurljqを使用して、シェル上のコンセプトの証明です:

# 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 

は用Kube2skyのソースコードを見てみましょうそのような種類のサービスをGoでうまく実装できます。

0

1.4のPetSet(アルファ機能)で行うことができます。安定した名前+安定したストレージ

関連する問題