我已经创建了一个service.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。可以做到吗?
最好的方法是遵循标签和电子
容器具有标签部分,服务在选择器部分中使用它,以下示例如下:
https://kubernetes.io/docs/concepts/services-networking/service/
您可以使用以下方法找到服务的选择器:
kubectl describe svc cass-operator-service
您可以通过以下方式列出标签:
kubectl get pods --show-labels
您可以通过使用选择器查询来获取 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=%