【问题标题】:How to configure axon server in pod for Kubernetes如何在 pod 中为 Kubernetes 配置轴突服务器
【发布时间】:2019-09-17 09:16:42
【问题描述】:

我有 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`

【问题讨论】:

  • 我认为 axon-deployment.yml 文件有问题但不知道如何解决
  • 您通常使用 docker-compose 进行本地开发,因为它只能在单个 docker 引擎上构建和工作。 Docker stack 和 docker service 命令需要一个 Docker Swarm(由默认配置)或 Kubernetes 集群,它们是迈向生产的一步。 Docker Desktop 带有 Kubernetes 和内置的 Compose 控制器,启用它就像在设置中勾选一个框一样简单。现在,您可以使用 Docker Compose 文件和原生 Docker API for stacks 来管理本地 Kubernetes 集群上的应用程序/服务。
  • 如果您更喜欢 Kubernetes 部署 YAML,您可以调查此 docker-compose 部署并将其映射到 Kubernetes YAML。我确信有一些工具可以帮助您进行此映射:kubernetes.io/docs/tasks/configure-pod-container/…
  • 我的目标是在 kubernetes 上运行相同的应用程序,也是开发目的。谢谢你,我正在检查你的例子

标签: kubernetes axon


【解决方案1】:

您的 YAML 以某种方式混合在一起。如果我的理解正确,您将拥有三项服务:

  • 命令服务
  • 查询服务
  • 轴突服务器

您的设置应以command-servicequery-service 公开其端口的方式进行配置,但两者都使用axonserver 公开的端口。这是我对您的 YAML 的尝试:

 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-servicequery-service 的端口,应该在这些容器中公开。

亲切的问候,

西蒙

【讨论】:

  • 谢谢你,正是我正在尝试这样做。但不知何故,当记录命令或查询然后我看到仍然说:连接到 AxonServer 节点 axonserver:8124 failed: UNAVAILABLE: Unable to resolve host axonserver
  • 请再次为所有三个服务发布您的 yaml
  • 抱歉回复晚了,不在电脑上。也添加了我的其他配置文件。
猜你喜欢
  • 2015-12-25
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 2020-04-27
  • 2020-06-21
  • 2017-05-01
  • 2020-10-02
  • 2020-12-25
相关资源
最近更新 更多