无法访问外部 ip Kubernetes 上的服务



我有一个问题,我无法访问带有curl的服务,尽管我有外部IP。我遇到超时请求。这是我的服务

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE crawler-manager-1 NodePort 10.103.18.210 192.168.0.10 3001:30029/TCP 2h redis NodePort 10.100.67.138 192.168.0.11 6379:30877/TCP 5h这是我的 yaml 服务文件:

apiVersion: v1
kind: Service
metadata:
  annotations:
    kompose.cmd: C:ProgramDatachocolateylibkubernetes-komposetoolskompose.exe
      convert -f docker-compose.yml
    kompose.version: 1.17.0 (a74acad)
  creationTimestamp: null
  labels:
    io.kompose.service: crawler-manager-1
  name: crawler-manager-1
  namespace: cbpo-example
spec:
  type: NodePort
  externalIPs:
    - 192.168.0.10
  ports:
  - name: "3001"
    port: 3001
    targetPort: 3001
  selector:
    io.kompose.service: crawler-manager-1
    run: redis
status:
  loadBalancer: {}

这是我的部署 yml 文件

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: C:ProgramDatachocolateylibkubernetes-komposetoolskompose.exe
      convert -f docker-compose.yml
    kompose.version: 1.17.0 (a74acad)
  creationTimestamp: null
  labels:
    io.kompose.service: crawler-manager-1
  name: crawler-manager-1
  namespace: cbpo-example
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: crawler-manager-1
    spec:
      hostNetwork: true
      containers:
      - args:
        - npm
        - start
        env:
        - name: DB_HOST
          value: mysql
        - name: DB_NAME
        - name: DB_PASSWORD
        - name: DB_USER
        - name: REDIS_URL
          value: redis://cbpo-redis
        image: localhost:5000/manager
        name: crawler-manager-1
        ports:
        - containerPort: 3001
        resources: {}
      restartPolicy: Always
status: {}

有人在使用 kubernetes 时遇到像我这样的问题吗?我需要访问以检查我的命名空间中的 2 个服务是否可以相互连接,非常感谢。

您可以

与其通过服务的 IP 地址进行通信,不如使用其 DNS 名称进行通信。

为"普通"(非无外设)服务分配了 DNS A 记录格式 my-svc.my-namespace.svc.cluster.local 的名称。这解决了到服务的群集 IP。

"无头"(无集群 IP)还会为服务分配表单名称的 DNS A 记录my-svc.my-namespace.svc.cluster.local. 与普通服务不同,这解析为服务选择的容器的 IP 集。客户端应使用该集或使用标准从集合中循环选择。

有关更多信息,请查看 Kubernetes DNS for Services

确保看到应用的端点。发生这种情况的一个原因是 pod 名称不匹配。如果我没记错的话,它selector.name

 kubectl get endpoints
 NAME         ENDPOINTS            AGE
 kubernetes   192.168.63.13:8080   1d

最新更新