如何为Kubernetes配置pod中的axon服务器

如何为Kubernetes配置pod中的axon服务器,kubernetes,axon,Kubernetes,Axon,我有3个服务,分别是axon、command和query。我正试着通过库伯内特斯管理它们。与docker compose和swarm完美配合。但不知怎的,K8s不起作用。 获取以下错误: 连接到AxonServer节点AxonServer:8124失败:不可用:无法解析主机AxonServer 下面是我的配置文件 ` apiVersion: apps/v1 kind: StatefulSet metadata: name: axonserver labels:

我有3个服务,分别是axon、command和query。我正试着通过库伯内特斯管理它们。与docker compose和swarm完美配合。但不知怎的,K8s不起作用。 获取以下错误:

连接到AxonServer节点AxonServer:8124失败:不可用:无法解析主机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是混合的。如果我理解正确,您有三项服务:

  • 指挥服务
  • 查询服务
  • axonserver
您的设置应以
命令服务
查询服务
公开其端口的方式进行配置,但两者都使用由
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服务器的端口,而是
命令服务
查询服务
的端口,应该在这些容器中公开

亲切问候,


Simon

我假设axon-deployment.yml文件有问题,但不知道如何解决。您通常使用docker compose进行本地开发,因为它只能在单个docker引擎上构建和工作。Docker stack和Docker service命令需要Docker Swarm(由defaut配置)或Kubernetes群集,它们是迈向生产的第一步。Docker Desktop附带Kubernetes和内置的Compose控制器,启用它只需在设置中勾选一个框即可。现在,您可以使用Docker Compose文件和本机Docker API for stacks来管理本地Kubernetes群集上的应用程序/服务。例如:如果您更喜欢Kubernetes部署YAML,您可以调查此Docker Compose部署并将其映射到Kubernetes YAML。我确信有一些工具可以帮助您进行映射:我的目标是在kubernetes上运行相同的应用程序,这也是出于开发目的。谢谢,我在查你的例子谢谢,我正试着这么做。但不知何故,当日志命令或查询,然后我看到仍然说:连接到AxonServer节点AxonServer:8124失败:不可用:无法解析主机AxonServer请再次发布所有三个服务的yaml。由于响应太晚,我不在电脑上。还添加了我的其他配置文件。