如何在Kubernetes中获取服务IP?

19

我按照它的官方文档在这里运行了一个本地集群。 我按照步骤操作,一切正常,直到我设置了一个副本并尝试将其公开。我的意思是:

./kubectl expose rc nginx --port=80

输出是这个:

NAME      LABELS      SELECTOR    IP(S)     PORT(S)
nginx     run=nginx   run=nginx             80/TCP

当我再次尝试时,它显示相同的服务正在运行。我该如何找出IP地址?

6个回答

28
kubectl get service/servicename -o jsonpath='{.spec.clusterIP}'

最好只提取所需信息,而不是之后再进行grep。 - MKesper

3

IP地址应该是主节点的外部IP地址。如果您正在本地运行,则应该是localhost或虚拟机的IP地址。

当然,要加上给定的端口号。

127.0.0.1:80

举个例子。

提示:请确保已经运行了容器/ pod,方法如下:

kubectl get pods

如果这样做不起作用,我建议至少进行测试代理。 Kubectl proxy

2
感谢@NegatioN的回答。我运行了./kubectl get services,它给了我IP地址。 - Hadi
如何查找主节点的外部IP - Sumit

3
kubectl get svc <your-service> -o yaml | grep ip

1
有几种方法可以做到这一点:
kubectl get svc -o yaml | grep clusterIP
或者例如:
kubectl describe svc | grep IP

0

另一种命令:

kubectl get -o template service/servicename --template='{{.spec.clusterIP}}'

请检查 kubectl get --help


0
为方便参考:
curl `kc describe svc nginx | grep IP | awk '{print $2}'`

而作为一个kurl的bash函数...


## for curling services by name...
kurl() {
  name=$1
  path=$2
  add=`kc describe svc $name | grep IP | awk '{print $2}'`$path
  # echo "hitting $add"
  curl $add
}
# kurl nginx :8080/some/path/you/want

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接