k8s查找service关联的pod或pod关联的service

👽个人博客:https://everspring.github.io/
👽公众号:爱历史的IT男

重点一个Service的目标Pod集合通常是由Label Selector来决定的,所以要找到pod和svc之间的关联,通过label关联即可找到。
在这里插入图片描述
举个场景:根据某个service的22001端口号找到对应的pod

kubectl get svc --show-labels -A|grep 22001|awk '{print $8}'

以下就是找到svc的标签。

app.kubernetes.io/instance=tdsql-tce-product-tcenter-support-tdsql-0-0,app.kubernetes.io/name=tdsql

打印出来的标签是多个由,拼接组成的,比如此处就是app.kubernetes.io/instance=tdsql-tce-product-tcenter-support-tdsql-0-0app.kubernetes.io/name=tdsql两个组成。
查询对应的Pod:

kubectl get pods --show-labels -A | grep 'app.kubernetes.io/name=tdsql'
Kubernetes (K8s) 中,当您更改 `scheduler.yaml` 文件并重启 scheduler 服务后,Pod 可能会正常调度,但服务 (Service) 的状态可能不会立即更新。这是因为 ServicePod关联基于的是标签 (Label) 而不是直接的引用。 1. **检查Service配置**:确保您的 Service 对应的标签选择器 (`selector`) 正确匹配了 Pod 的 Label。例如: ```yaml apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app: my-app ports: - port: 80 targetPort: 8080 ``` 2. **确认Pod是否已应用新标签**:查看 Pod 是否已经添加了新的标签者原来的标签是否仍然有效。如果需要更新 Pod 标签,可以直接修改 `metadata.labels` 通过更新 Deployment/StatefulSet 等控制器来自动同步 Pod。 3. **等待Service发现Pod**:由于 Kubernetes 使用的是 DNS/IP查找机制,可能会有短暂的时间让 Service 检索 Pod。您可以等待一段时间(如几分钟),者手动刷新服务发现(比如使用 `kubectl get svc -w` 来实时监控)。 4. **强制更新Service**:如果您确定配置无误,有时候需要强制更新 Service 使其重新发现 Pod,可以使用命令: ``` kubectl patch service <service-name> -p '{"spec": {"clusterIP": null}}' ``` 然后再次设置 `clusterIP`: ``` kubectl patch service <service-name> -p '{"spec": {"clusterIP": "<your-ip>", "ports": [{"port": <port>, "targetPort": <target-port>}], "selector": {<label-key>: <label-value>}}}' ``` 5. **检查DNS缓存**:如果使用的是集群内部域名访问 Service,记得清除本地的 DNS 缓存,让服务信息从新节点同步过来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值