如何获取 Kubernetes 服务的集群 IP

4
我已经创建了一个包装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

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

6
您可以像以下这样解析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;}'

导出 CLUSTER_IP 命令给了我一个错误:error: error executing template "{{(index.spec.clusterIP)}}": template: output:1:3: executing "output" at <index>: wrong number of args for index: want at least 1 got 0。不过第二个命令可以正常工作。 - Zenul_Abidin

3

之前使用go-template输出的方法失败了,但是使用jsonpath对我来说起作用了:

#!/bin/bash

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

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