Kubernetes获得端点

时间:2016-05-04 10:06:27

标签: kubernetes nsq

我有一组提供nsqlookupd服务的pod。 现在我需要每个nsqd容器都有一个nsqlookupd服务器列表,用于连接(同时服务将指向不同的每次)。与我相似的东西

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

但我希望将它放在我的部署定义中的变量中,或者以某种方式从nsqd容器

中获取

2 个答案:

答案 0 :(得分:4)

听起来您需要在nsqd容器或同一个容器中的单独容器中运行额外服务。该服务的作用是定期启动API以获取端点列表。

假设您启用了Service Accounts(默认情况下已启用),以下是使用来自窗格内的curljq的shell的概念验证:

# 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中很好地实现此类服务。

答案 1 :(得分:0)

可以在1.4中使用PetSet(alpha功能)完成。稳定的名称+稳定的存储空间