kubernetes - 如何在 pod 中为 Kubernetes 配置轴突服务器
问题描述
我有 3 个服务,即轴突、命令和查询。我正在尝试通过 Kubernetes 运行它们。使用 docker-compose 和 swarm 可以完美运行。但不知何故不能通过 K8s 工作。收到以下错误:
Connecting to AxonServer node axonserver:8124 failed: UNAVAILABLE: Unable to resolve host axonserver
以下是我的配置文件。
`
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: axonserver
labels:
app: axonserver
spec:
serviceName: axonserver
replicas: 1
selector:
matchLabels:
app: axonserver
template:
metadata:
labels:
app: axonserver
spec:
containers:
- name: axonserver
image: axoniq/axonserver
env:
- name: AXONSERVER_HOSTNAME
value: axonserver
imagePullPolicy: Always
ports:
- name: grpc
containerPort: 8124
protocol: TCP
- name: gui
containerPort: 8024
protocol: TCP
`
这是命令服务 yaml 也包含服务。
apiVersion:
kind: Pod
metadata:
name: command-service
labels:
name: peanuts
app: axonserver
spec:
replicas: 1
template:
metadata:
labels:
app: axonserver
spec:
containers:
- image: celcin/command-svc
name: command-service
ports:
- containerPort: 8080
restartPolicy: Always
status: {}
---
apiVersion: v1
kind: Service
metadata:
name: command-service
labels:
name: peanuts
app: axonserver
spec:
ports:
- name: "8081"
port: 8081
targetPort: 8080
selector:
labels:
app: axonserver
`
这是作为查询服务 yml 文件的最后一项服务
` apiVersion: v1
kind: Pod
metadata:
name: query-service
labels:
name: peanuts
app: axonserver
spec:
replicas: 1
template:
metadata:
labels:
app: axonserver
spec:
containers:
- image: celcin/query-svc
name: query-service
ports:
- containerPort: 8080
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: query-service
labels:
name: peanuts
app: axonserver
spec:
ports:
- name: "8082"
port: 8082
targetPort: 8080
selector:
labels:
app: axonserver`
解决方案
您的 YAML 以某种方式混合在一起。如果我对您的理解正确,您将拥有三项服务:
- 命令服务
- 查询服务
- 轴突服务器
您的设置应以公开其端口的方式进行配置,但两者都使用command-service
由. 这是我对您的 YAML 的尝试:query-service
axonserver
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: axonserver
labels:
app: axonserver
spec:
serviceName: axonserver
replicas: 1
selector:
matchLabels:
app: axonserver
template:
metadata:
labels:
app: axonserver
spec:
containers:
- name: axonserver
image: axoniq/axonserver
imagePullPolicy: Always
- name: grpc
containerPort: 8124
protocol: TCP
- name: gui
containerPort: 8024
protocol: TCP
您定义的端口:
ports:
- name: command-srv
containerPort: 8081
protocol: TCP
- name: query-srv
containerPort: 8082
protocol: TCP
不是 Axon Server 的端口,而是您的端口,command-service
并且query-service
应该在这些容器中公开。
亲切的问候,
西蒙
推荐阅读
- eclipse - 通过ant插件生成类时Eclipse构建工作区循环
- java - 当我单击“再次播放”按钮时,我的整个应用程序崩溃
- python - Python:获取 concurrent.futures 执行程序以等待 done_callbacks 完成
- php - 订购特定产品后发送带有用户凭据的自定义 WooCommerce 邮件
- android - 使用片段和导航组件泄漏的nestedscrollView
- pdf - 如何解码PDF文件并将其编码回来?
- spring - 如何正确地将身体传递给弹簧休息模板?
- javascript - redux状态改变时如何触发函数?
- alexa - 将预置并发添加到已发布的 Alexa Skill 需要哪些步骤?
- swift - 缩放到 iPhone 上滚动视图上的位置(纵向);不太对