docker - minikube 如何使用主机名从一个 Pod 连接到另一个 Pod?
问题描述
我在默认命名空间中运行一个集群,所有 pod 都处于运行状态。
我有一个问题,我正在尝试使用 pod 主机名“abcd-7988b76669-lgp8l”从一个 pod 远程登录到另一个 pod,但我无法连接。虽然如果我使用 pod 内部 ip 它可以工作。为什么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 连接到另一个 pod 吗?
解决方案
首先值得一提的是,通常您不会Pods
使用他们的域名连接到个人。一个很好的理由是它们的短暂性。请注意,通常您不会创建普通Pods
但控制器,例如Deployment,它管理您Pods
并确保特定数量的Pods
特定类型不断启动和运行。Pods
可能经常被删除和重新创建,因此您永远不应该在您的应用程序中依赖它们的域名。通常,您会将它们暴露给其他应用程序,例如Pods
通过Service在其他应用程序中运行。
虽然使用个人Pod
的域名不推荐,还是可以的。您可以仅出于娱乐或学习/实验目的而这样做。
正如@David 已经提到的那样,如果您编辑您的问题并提供一些重要的细节,展示您已经尝试过的内容,例如您的Pods
和格式的Services
定义,您将更多地帮助我们为您提供全面的答案。yaml
从字面上回答标题中发布的问题:
minikube 如何使用主机名从一个 Pod 连接到另一个 Pod?
您将无法仅Pod
使用其hostname连接到它。例如,您可以通过简单地ping 来ping暴露Pods
的后端(只要它与您的ping 相同)。ClusterIP Service
<service-name>
namespace
Pod
但是请记住,它不起作用Pods
-Pods
名称和它们的主机名都不能被集群 DNS 解析。
如果您已正确配置所有内容,您应该能够Pod
使用其完全限定域名 (FQDN)连接到个人。只要确保您没有忽略此处描述的任何步骤:
确保你已经创建了一个简单的Headless Service,它看起来像这样:
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
谈到重要细节,请特别注意您正确定义hostname
并subdomain
在Pod
规范中labels
使用的内容与'sPods
使用的标签相匹配Service
selector
。
正确配置所有内容后,您将能够使用其FQDN附加到Pod
busybox1和ping
Pod
busybox2 ,如下例所示:
$ 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
我希望这有帮助。
推荐阅读
- javascript - 将通过按钮传递的 id 绑定到 Jquery 中的数据
- react-native - react native如何设置环境变量
- youtube-data-api - Youtube 数据 V3 导致 403
- react-native - setState 不更新状态变量 - React Native 钩子
- javascript - 为什么 Promise 泛型类型只声明成功解析类型?
- c# - 在我的 Unity C# 游戏中,应该抛出一个游戏对象,但它完全没有任何作用 - 有什么问题?
- azure-data-explorer - Cisco ASA 并发 VPN 用户 - KQL / Azure Sentinel 中的时间表
- c++ - CGAL CDT 默认参数
- python - 'NoneType' 没有属性(使用 pyodbc/sql 连接)
- c# - 有没有办法在 C# 中读取精确数量的拆分整数?