kubernetes - Kubernetes 无法 ping 另一个服务
问题描述
DNS 解析看起来不错,但我无法 ping 我的服务。可能是什么原因?
从集群中的另一个 pod:
$ ping backend
PING backend.default.svc.cluster.local (10.233.14.157) 56(84) bytes of data.
^C
--- backend.default.svc.cluster.local ping statistics ---
36 packets transmitted, 0 received, 100% packet loss, time 35816ms
编辑:
服务定义:
apiVersion: v1
kind: Service
metadata:
labels:
app: backend
name: backend
spec:
ports:
- name: api
protocol: TCP
port: 10000
selector:
app: backend
部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend
labels:
app: backend
spec:
replicas: 1
selector:
matchLabels:
run: backend
replicas: 1
template:
metadata:
labels:
run: backend
spec:
containers:
- name: backend
image: nha/backend:latest
imagePullPolicy: Always
ports:
- name: api
containerPort: 10000
我可以curl
从同一个容器中提供服务:
kubectl exec -it backend-7f67c8cbd8-mf894 -- /bin/bash
root@backend-7f67c8cbd8-mf894:/# curl localhost:10000/my-endpoint
{"ok": "true"}
看起来端口上的端点10000
并没有暴露出来:
kubectl get ep
NAME ENDPOINTS AGE
backend <none> 2h
解决方案
Ping 不适用于服务的集群 IP,例如 10.233.14.157,因为它是一个虚拟 IP。您应该能够 ping 特定的 pod,但不能 ping 服务。
推荐阅读
- libpqxx - libpqxx 准备好的语句非空检查指针类型
- java - 为什么在 Maven 工件搜索中使用 Intellij 添加依赖项不起作用?
- css - 我想通过单击按钮来移动图像?
- powershell - 使用“ConvertFrom-Json”的 Powershell 输出和“运行和调试”终端输出损坏
- jax-rs - Jackson ContextResolver 已加载,但在 wildfly 18 中未调用 getContext 方法
- sql - 选择先进后出时间 - 不同的日期和空条件 - 从数据手指
- python-3.x - AttributeError:“RangeIndex”对象没有属性“inferred_freq”
- php - Laravel / Eloquent / Postgres:更新查询导致错误“无效参数号:未定义参数”
- ios - 按需资源 (ODR) 已完成/已下载标签的总文件大小
- flask - ModuleNotFoundError:Flask-sqlalchemy 中没有名为“MySQLdb”的模块