Kubernetes 获取端点
Kubernetes get endpoints
我有一套pods提供nsqlookupd服务。
现在我需要每个 nsqd 容器都有一个要同时连接的 nsqlookupd 服务器列表(而服务每次都会指向不同的)。我用
得到了类似的东西
kubectl describe service nsqlookupd
...
Endpoints: ....
但我想将它放在我的部署定义中的变量中或以某种方式从 nsqd 容器中
听起来您需要一项额外服务 运行,可以在您的 nsqd
容器中,也可以在同一 pod 的单独容器中。该服务的作用是定期连接 API 以获取端点列表。
假设您启用了 Service Accounts(默认情况下启用),这里是在 pod 内部使用 curl
和 jq
在 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 中很好地实现这种服务。
可以用 StatefuSet 来完成。稳定的名字+稳定的存储
我有一套pods提供nsqlookupd服务。 现在我需要每个 nsqd 容器都有一个要同时连接的 nsqlookupd 服务器列表(而服务每次都会指向不同的)。我用
得到了类似的东西kubectl describe service nsqlookupd
...
Endpoints: ....
但我想将它放在我的部署定义中的变量中或以某种方式从 nsqd 容器中
听起来您需要一项额外服务 运行,可以在您的 nsqd
容器中,也可以在同一 pod 的单独容器中。该服务的作用是定期连接 API 以获取端点列表。
假设您启用了 Service Accounts(默认情况下启用),这里是在 pod 内部使用 curl
和 jq
在 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 中很好地实现这种服务。
可以用 StatefuSet 来完成。稳定的名字+稳定的存储