如何获取kubernetes服务的群集IP

如何获取kubernetes服务的群集IP,kubernetes,google-kubernetes-engine,kubectl,Kubernetes,Google Kubernetes Engine,Kubectl,我已经创建了一个封装nfs的服务,我需要为它获取集群IP,以便使用它将其设置为持久卷 我知道我可以使用以下方法获得此结果: $ kubectl get svc nfs-server NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nfs-server ClusterIP 10.59.243.58 <none> 204

我已经创建了一个封装nfs的服务,我需要为它获取集群IP,以便使用它将其设置为持久卷

我知道我可以使用以下方法获得此结果:

$ kubectl get svc nfs-server
NAME                  TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
nfs-server   ClusterIP   10.59.243.58   <none>        2049/TCP,20048/TCP,111/TCP   2m
$kubectl获取svc nfs服务器
名称类型CLUSTER-IP外部IP端口年龄
nfs服务器群集IP 10.59.243.58 2049/TCP,20048/TCP,111/TCP 2m

我想知道的是,如何在bash脚本中提取集群IP?它是作为部署过程的一部分生成的,因此我不能只是将其键入到我的持久卷清单中。

您可以解析下面类似的of
kubectl get svc
命令来获取部署的内部详细信息

export CLUSTER_IP=$(kubectl get services/nfs-server -o go-template='{{(index.spec.clusterIP)}}');echo CLUSTER_IP=$CLUSTER_IP
或者,您可以尝试任何涉及
cut和awk
的shell黑客组合。一个这样的例子是

kubectl describe svc/nfs-server | grep IP: | awk '{print $2;}'

使用
go模板
输出的上一个答案失败。使用
jsonpath
对我来说很有效:

#!/bin/bash

cluster_ip=$(kubectl get svc nfs-server -ojsonpath='{.spec.clusterIP}')
echo $cluster_ip