minikube 如何使用主机名从一个 pod 连接到另一个 pod?

问题描述 投票:-3回答:1

我在默认命名空间中运行一个集群,所有的pod都处于运行状态。

我有一个问题,我试图使用pod主机名'abcd-7988b76669-lgp8l'从一个pod连接到另一个pod,但我无法连接。为什么dns没有解决?

我看了

kubectl get po -n kube-system
NAME                          READY   STATUS    RESTARTS   AGE
coredns-6955765f44-5lpfd      1/1     Running   0          12h
coredns-6955765f44-9cvnb      1/1     Running   0          12h

有人知道如何从一个pod连接到另一个使用主机名解析?

docker kubernetes minikube
1个回答
1
投票

首先值得一提的是,通常情况下,你不会连接到单个的 Pods 使用他们的域名。 一个很好的原因是它们的短暂性。请注意,通常你不会创建普通的 Pods 但控制器如 部署 它管理着你的 Pods 并确保特定数量的 Pods 某种类型的域名不断地在运行。Pods 可能会经常被删除和重新创建,因此你永远不应该在你的应用程序中依赖他们的域名。通常情况下,您会将它们暴露在其他应用程序中,例如在其他应用程序中运行。Pods 通过 服务项目. 虽然使用个人 Pod的域名是不推荐的,它仍然是可能的。你可以为了好玩或学习实验的目的而这样做。

正如 @David 已经提到的,如果你能编辑你的问题,并提供一些重要的细节,显示你已经尝试过的东西,如你的域名,你会帮助我们更多的为你提供一个全面的答案。PodsServices 中的定义 yaml 格式。

从字面上回答你在标题中发布的问题。

minikube如何使用主机名从一个 pod 连接到另一个?

你将无法连接到一个 Pod 只用其 主机名. 你可以例如 ping 您的后台 Pods 透过 ClusterIP Service 通过简单地ping一下 <service-name> (只要是在同一个 namespace 作为 Pod 你的ping从)。)

但是请记住 行不通 Pods - 既不 Pods 名称及其主机名均可由集群DNS解析。.

你应该能够连接到一个个人 Pod 用其 全拼域名(FQDN) 只要你正确配置了一切。只要确保你没有忽略任何一个步骤,描述的 此处:

确保你已经创建了一个简单的 无头服务 貌似这样:

apiVersion: v1
kind: Service
metadata:
  name: default-subdomain
spec:
  selector:
    name: busybox
  clusterIP: None

确保你的 Pods 定义中不乏重要细节:

apiVersion: v1
kind: Pod
metadata:
  name: busybox1
  labels:
    name: busybox
spec:
  hostname: busybox-1
  subdomain: default-subdomain
  containers:
  - image: busybox:1.28
    command:
      - sleep
      - "3600"
    name: busybox
---
apiVersion: v1
kind: Pod
metadata:
  name: busybox2
  labels:
    name: busybox
spec:
  hostname: busybox-2
  subdomain: default-subdomain
  containers:
  - image: busybox:1.28
    command:
      - sleep
      - "3600"
    name: busybox

谈到重要细节。特别注意,你要正确定义 hostnamesubdomainPod 规格和 labels 所用 Pods 对号入座 Service's selector.

一旦一切配置妥当,你就可以连接到 Pod 忙盒1ping Pod 忙盒2 借助其 FQDN 像下面的例子一样。

$ kubectl exec -ti busybox1 -- /bin/sh
/ # ping busybox-2.default-subdomain.default.svc.cluster.local
PING busybox-2.default-subdomain.default.svc.cluster.local (10.16.0.109): 56 data bytes
64 bytes from 10.16.0.109: seq=0 ttl=64 time=0.051 ms
64 bytes from 10.16.0.109: seq=1 ttl=64 time=0.082 ms
64 bytes from 10.16.0.109: seq=2 ttl=64 time=0.081 ms

我希望这能帮助。

© www.soinside.com 2019 - 2024. All rights reserved.