kubernetes - Minikube Kubernetes:两个 pod 和服务
问题描述
我正在使用 Minikube 运行一个简单的 Spring 微服务项目。我有两个项目:lucky-word-client(在 8080 端口上)和 lucky-word-server(在 8888 端口上)。但我无法与服务器通信客户端。事实上,如果 lucky-word-client 与 lucky-word-server 通信,结果是单词“Evviva”,否则单词是“Default”。当我在终端上运行时:minikube service lucky-client 输出是默认值,而不是 Evviva。我想通过 DNS 与服务器通信客户端。我看到了指南:https ://kubernetes.io/docs/concepts/services-networking/dns-pod-service/但没有成功。我如何修改服务或 pod 以在客户端和服务器之间建立链接?
这是lucky-word-client 的pod:
apiVersion: v1
kind: Pod
metadata:
name: lucky-client
namespace: default
spec:
containers:
- image: lucky-client-img
imagePullPolicy: IfNotPresent
name: lucky-client
这是lucky-word-server 的pod:
apiVersion: v1
kind: Pod
metadata:
name: lucky-server
namespace: default
spec:
containers:
- image: lucky-server-img
imagePullPolicy: IfNotPresent
name: lucky-server
这是服务,lucky-word-client 与 lucky-word-server 通信:
kind: Service
apiVersion: v1
metadata:
name: lucky-client
spec:
selector:
app: lucky-client
ports:
- protocol: TCP
targetPort: 8080
port: 80
type: NodePort
解决方案
如果您希望基于 DNS 的服务发现与服务器进行通信,请按照以下步骤操作:
minikube addons enable kube-dns
通过命令启用 kube-dns 插件。这将在您的 Kubernetes 集群中启用服务发现。- 确保使用
minikube addons list
命令启用 kube-dns 插件。 - 在您的客户端应用程序代码中,将服务器 URL 端点更改为以下内容:
http://lucky-server:8888
。“lucky-server”是Kubernetes 服务器服务 yaml 定义的metadata.name属性。 - 否则,
lucky-server
您可以在服务器 URL 中使用完全限定名称lucky-server.default.svc.cluster.local
,因为您将服务部署在默认命名空间中。
推荐阅读
- docker - 如何设置在多个 Raspberry Pi 上运行的 dockerized Web 服务器?
- java - Jnlp 运行依赖库的函数
- integer - 线性规划问题:最小化使用的卡车数量
- python-3.x - Python3:分数
- java - 从表单后端获取数据
- swift - Xcode:在 UISlider 中没有更多上下文错误的表达式类型不明确
- javascript - 在 chrome.storage 中保存图像
- node.js - 在 foreach() 中使用 findOne
- android - 从本地 JSON 文件到列表的映射功能不起作用(颤动)
- python - 如何根据协程对序列进行排序?