首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Akka集群部署到Kubernetes?

如何将Akka集群部署到Kubernetes?
EN

Stack Overflow用户
提问于 2019-09-30 19:09:47
回答 1查看 102关注 0票数 1

我写了支持Akka集群集群的小应用程序。我想把它部署到支持扩展的Kubernetes上。这是我的docker-compose.yml文件:

代码语言:javascript
复制
version: '3.5'

networks:
  cluster-network:

services:
  seed:
    networks:
      - cluster-network
    image: akka-cluster-server
    ports:
      - '2552:2552'
      - '8000:8000'
    environment:
      SERVER_IP: 0.0.0.0
      CLUSTER_IP: seed
      CLUSTER_SEED_IP: seed

  node1:
    networks:
      - cluster-network
    image: akka-cluster-server
    ports:
      - '8001:8000'
    environment:
      SERVER_IP: 0.0.0.0
      CLUSTER_IP: node1
      CLUSTER_PORT: 1600
      CLUSTER_SEED_IP: seed
      CLUSTER_SEED_PORT: 2552

  node2:
    networks:
      - cluster-network
    image: akka-cluster-server
    ports:
      - '8002:8000'
    environment:
      SERVER_IP: 0.0.0.0
      CLUSTER_IP: node2
      CLUSTER_PORT: 1600
      CLUSTER_SEED_IP: seed
      CLUSTER_SEED_PORT: 2552

有三个实例在它们之间共享网络。注意,node1node2使用seed的DNS名称进行连接,我编写了简单的部署和服务。

部署:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: akka-cluster
spec:
  selector:
    matchLabels:
      app: akka-cluster
  replicas: 2
  template:
    metadata:
      labels:
        app: akka-cluster
    spec:
      containers:
      - name: server-seed
        image: akka-cluster-server
        imagePullPolicy: Never
        ports:
        - containerPort: 8000
        - containerPort: 2552
        env:
        - name: SERVER_IP
          value: 0.0.0.0
        - name: CLUSTER_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: CLUSTER_SEED_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: CLUSTER_PORT
          value: "1600"
        - name: CLUSTER_SEED_PORT
          value: "2552"

服务:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: akka-cluster-service
spec:
  type: LoadBalancer
  selector:
    app: akka-cluster
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8000

请注意,在这种情况下,当您要扩展副本时,容器将连接到self (CLUSTER_SEED_IP)而不是seed节点。

如何正确地将我的docker-compose.yml转换为Kubernetes部署/服务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-30 22:02:29

要正确“翻译”docker-compose,您应该创建两组部署+服务:一组用于种子,另一组用于节点。

如果您需要将所有实例作为种子列出,那么可能更好的方法是通过statefulset实现。您可以检查这一点,例如https://github.com/IBM/Akka-cluster-deploy-kubernetes/blob/master/deploy/kubernetes/resources/myapp/myapp-statefulset.json

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58166715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档