Yaml 如何在aks上部署eureka命名服务器?

Yaml 如何在aks上部署eureka命名服务器?,yaml,netflix-eureka,azure-aks,Yaml,Netflix Eureka,Azure Aks,我想将我的web服务部署到Azure Kubernetes服务。我目前在一个节点中有3个微服务。1个API网关和2个后端微服务。错误消息:无。因为我不在API网关中使用路由,所以我无法通过API网关控制后端微服务。现在,我已经创建了一个Eureka命名服务器,并希望将他放在同一个节点中,我希望使用该节点,以便我的微服务能够相互通信 这是我用于命名服务器的Yaml文件 apiVersion: apps/v1 kind: Deployment metadata: name: discoeryse

我想将我的web服务部署到Azure Kubernetes服务。我目前在一个节点中有3个微服务。1个API网关和2个后端微服务。错误消息:无。因为我不在API网关中使用路由,所以我无法通过API网关控制后端微服务。现在,我已经创建了一个Eureka命名服务器,并希望将他放在同一个节点中,我希望使用该节点,以便我的微服务能够相互通信

这是我用于命名服务器的Yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: discoeryservice-front
spec:
  replicas: 1
  selector:
    matchLabels:
      app: discoveryservice-front
  template:
    metadata:
      labels:
        app: discoveryservice-front
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": linux
      containers:
        - name: discoveryservice-front
          image: registry.azurecr.io/discoveryservice:16
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 250m
              memory: 512Mi
          ports:
          - containerPort: 8762
            name: discovery

---
apiVersion: v1
kind: Service
metadata:
  name: discoveryservice-front
spec:
  ports:
  - port: 8762
  selector:
    app: discoveryservice-front


---
首先,我没有得到一个外部IP地址,我不知道为什么。有人能告诉我如何为我的命名服务器获取外部IP吗

这是我为其他微服务提供的Yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: apigateway-front
spec:
  replicas: 1
  selector:
    matchLabels:
      app: apigateway-front
  template:
    metadata:
      labels:
        app: apigateway-front
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": linux
      containers:
        - name: apigateway-front
          image: registry.azurecr.io/apigateway:11
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 250m
              memory: 512Mi
          ports:
          - containerPort: 8800
            name: apigateway

---
apiVersion: v1
kind: Service
metadata:
  name: apigateway-front
spec:
  type: LoadBalancer
  ports:
  - port: 8800
  selector:
    app: apigateway-front


---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: contacts-back
spec:
  replicas: 1
  selector:
    matchLabels:
      app: contacts-back
  template:
    metadata:
      labels:
        app: contacts-back
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": linux
      containers:
      - name: contacts-back
        image: registry.azurecr.io/contacts:12
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 512Mi
        ports:
        - containerPort: 8100
          name: contacts-back

---
apiVersion: v1
kind: Service
metadata:
  name: contacts-back
spec:
  ports:
  - port: 8100
  selector:
    app: contacts-back
---


apiVersion: apps/v1
kind: Deployment
metadata:
  name: templates-back
spec:
  replicas: 1
  selector:
    matchLabels:
      app: templates-back
  template:
    metadata:
      labels:
        app: templates-back
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": linux
      containers:
      - name: templates-back
        image: registry.azurecr.io/templates:13
        resources:
         requests:
            cpu: 100m
            memory: 128Mi
         limits:
            cpu: 250m
            memory: 512Mi
        ports:
         - containerPort: 8200
           name: templates-back
---
apiVersion: v1
kind: Service
metadata:
  name: templates-back
spec:
  ports:
  - port: 8200
  selector:
    app: templates-back
其次。有人能告诉我如何在命名服务器上注册我的微服务吗?
如果我在没有AKS和Docker的情况下启动我的微服务,那么命名服务器可以工作。

因为您使用的是kubernetes,建议的方法是使用k8s服务发现而不是eureka服务发现。 对于API网关,您可以使用任何k8s原生API网关,如ambassador和kong,它们与kubernetes集成得非常好

回答上述问题

外部IP提供给负载平衡器类型的服务,我假设外部IP指的是可以从集群外部使用的IP地址。 要注册到eureka service discovery,我想您需要在代码中做一些小的更改,以便在应用程序启动后通知eureka,以便注册其实例。
如果对以上答案有疑问,请评论,我们也会尝试深入解释。

好的,谢谢您的回答。第一步对我有用。但是有了2,我真的不知道该怎么办。我想我必须在我的微服务的yaml文件中设置一个到我的命名服务的路由,对吗?对于第二部分,这将取决于你的微服务是如何构建的?如果您使用的是spring framework之类的框架,则可以按照特定指南启用eureka服务发现,例如。这需要更改代码,只有yaml无法使用eureka帮助服务发现。但是,如果您使用云本地api网关,您可以使用yaml服务进行服务发现。如果我在计算机上运行我的微服务,命名服务就会工作。是的,我用弹簧靴,一切正常。但是,当我提供我的微服务时,我的服务没有注册。在AKS中,您是否在application.properties文件中向您的spring boot应用程序提供了服务注册信息。我所说的信息是指eureka服务的地址,以便它可以在eureka注册。在本地,由于两者都在本地运行,因此可能无法轻松识别。