が鳴ります同じポッド内の別の容器に入れます。そのサービスの役割は、エンドポイントのリストを取得するためにAPIを定期的にポーリングすることです。ここで、(デフォルトで有効)あなたはService Accountsを有効にすると仮定すると
がポッド内部からcurl
と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
は用Kube2skyのソースコードを見てみましょうそのような種類のサービスをGoでうまく実装できます。