如何 在 Kubernetes 中 获取 服务 IP ?

polhcujo  于 2022-11-21  发布在  Kubernetes
关注(0)|答案(6)|浏览(216)

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

./kubectl expose rc nginx --port=80

输出如下:

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

当我再试一次的时候,它说同样的服务正在运行。我怎么才能弄清楚IP呢?

odopli94

odopli941#

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

vcudknz32#

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

fivyi3re3#

IP 应该 是 你 的 主 节点 的 外部 IP 。 如果 你 在 本地 运行 , 它 应该 是 localhost 或 你 的 VM 。
当然 , 添加 了 给定 的 端口 。

127.0.0.1:80

中 的 每 一 个
例如 , 可以 使用 其它 类型 的 设备 。
PS : 请 确保 您 已经 运行 了 container/pod , 方法 是 运行 :

kubectl get pods

格式
如果 这 不 起 作用 , 我 建议 代理 它 , 至少 出于 测试 目的 。
Kubectl proxy 的 最 大 值

lyfkaqu1

lyfkaqu14#

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

uurv41yg

uurv41yg5#

为方便参考:

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
jhdbpxl9

jhdbpxl96#

替代命令:

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

检查kubectl get --help

相关问题