kubernetes - Kubernetes 为我的部署分配什么主机?
问题描述
我有两个 Kubernetes 部署:composite-app
(1 个 pod)和product-app
(2 个 pod),它们都侦听端口 8080。第一个有时需要调用第二个。
但是,第一个部署找不到第二个。当它尝试使用product.app
主机调用它时失败:
例外:“http://product-app:8080/product/123”的 GET 请求出现 I/O 错误:product-app; 嵌套异常是 UnknownHostException
我使用的是正确的主机吗?到目前为止,我已经尝试过(无济于事):
product
product-app.default.pod.cluster.local
product-app
这是我的 YAML:
apiVersion: v1
kind: Service
metadata:
name: composite-service
spec:
type: NodePort
selector:
app: composite-app
ports:
- targetPort: 8080
port: 8080
nodePort: 30091
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: composite-deploy
spec:
replicas: 1
selector:
matchLabels:
app: composite-app
template:
metadata:
labels:
app: composite-app
spec:
containers:
- name: composite-container
image: 192.168.49.2:2376/composite-ms:latest
imagePullPolicy: Never
ports:
- containerPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: product-deploy
spec:
replicas: 2
selector:
matchLabels:
app: product-app
template:
metadata:
labels:
app: product-app
spec:
containers:
- name: product-container
image: 192.168.49.2:2376/product-ms:latest
imagePullPolicy: Never
ports:
- containerPort: 8080
解决方案
您还需要为 pod 定义一个Service
对象,product-deploy
Deployment
以便其他 pod 能够连接到它。如果不需要暴露于外部世界,则可以Service
是类型。ClusterIP
apiVersion: v1
kind: Service
metadata:
name: product-service
spec:
type: ClusterIP
selector:
app: product-app
ports:
- targetPort: 8080
port: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: product-deploy
spec:
replicas: 2
selector:
matchLabels:
app: product-app
template:
metadata:
labels:
app: product-app
spec:
containers:
- name: product-container
image: 192.168.49.2:2376/product-ms:latest
imagePullPolicy: Never
ports:
- containerPort: 8080
您可以在没有服务的情况下使用 pod 的 IP 连接到另一个 pod。但是,不建议这样做,因为 pod 的 IP 可以在 pod 更新时更改。
然后,您可以从using连接到product-app
pod 。composite-app
product-service
推荐阅读
- python - python setup.py 在 nix-shell 中安装
- angular - ckeditor5:将链接目标设置为 _blank
- html - 将 HTML 用于基于 C++ 的桌面应用程序
- krakend - 为什么通过 KrakenD API 网关访问 API 端点时返回 HTTP 500?
- php - 如何获取类别、文章和子类别及其文章?
- shell - */ 中 d 的 shell 脚本;do 在本地运行,但在 circleci 中不起作用
- google-apps-script - 如何使用应用程序脚本匹配和导入其他工作表中的数据?
- histogram - 对 2D 直方图类型数组进行分箱/数字化
- google-apps-script - 将数据从谷歌表复制到另一个谷歌表的最后一行
- regex - 可以将积极的前瞻正则表达式用于重定向吗?