kubernetes 是否有命令检查哪些pod应用了服务

fruv7luv  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(2)|浏览(107)

我做了一个服务.yaml,并创建了服务。

kind: Service
apiVersion: v1
metadata:
  name: cass-operator-service
spec:
  type: LoadBalancer
  ports:
    - port: 9042
      targetPort: 9042
  selector:
    name: cass-operator

是否有方法检查服务已应用于哪些pod?
我希望使用上述服务,连接到Google Cloud中的集群,在external_ip/port(9042端口)上运行Kubernetes/Cassandra。但使用上述服务,我不能。
kubectl get svc显示

NAME                    TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)          AGE
cass-operator-service   LoadBalancer   10.51.247.82   34.91.214.233   9042:31902/TCP   73s

因此,可能服务正在侦听9042,但正在转发到31902中的Pod。我希望两个端口都是9042。这是可能的吗?

kx1ctssn

kx1ctssn1#

最好的方法是遵循标签和选择器。
您的pod有一个label部分,服务在selector部分使用它。你可以在official documentation for services中找到一些例子。
您可以通过以下方式找到服务的选择器:

kubectl describe svc cass-operator-service

您可以使用以下方式列出您的标签:

kubectl get pods --show-labels
2ekbmq32

2ekbmq322#

您可以通过使用selector查询来获取pod,如下所示

kubectl get pods -l name=cass-operator

您还可以通过运行以下命令来列出在kubernetes服务后面提供流量的所有pod

kubectl get ep <service name> -o=jsonpath='{.subsets[*].addresses[*].ip}' | tr ' ' '\n' | xargs -I % kubectl get pods -o=name --field-selector=status.podIP=%

相关问题