eureka在docker和kubernetes中的集群部署

11 篇文章 0 订阅
5 篇文章 0 订阅

在docker环境下部署eureka集群还是很简单的
docker-compose.yaml如下

version: '2'
services:
  eureka-peer-1:
    image: image-url   ## 镜像
    container_name: eureka-peer-1
    environment:
      - SERVER_PORT=8761
      - eureka.instance.hostname=eureka-peer-1
      - eureka.client.service-url.defaultZone=http://admin:admin@eureka-peer-2:8762/eureka/,http://admin:admin@eureka-peer-1:8761/eureka/,http://admin:admin@eureka-peer-3:8763/eureka/
    ports:
      - 8761:8761
    networks:
      - eureka-net
  eureka-peer-2:
    image: image-url   ## 镜像
    container_name: eureka-peer-2
    environment:
      - SERVER_PORT=8762
      - eureka.instance.hostname=eureka-peer-2
      - eureka.client.service-url.defaultZone=http://admin:admin@eureka-peer-2:8762/eureka/,http://admin:admin@eureka-peer-1:8761/eureka/,http://admin:admin@eureka-peer-3:8763/eureka/
    ports:
      - 8762:8762
    networks:
      - eureka-net
  eureka-peer-3:
    image: image-url   ## 镜像
    container_name: eureka-peer-3
    environment:
      - SERVER_PORT=8763
      - eureka.instance.hostname=eureka-peer-3
      - eureka.client.service-url.defaultZone=http://admin:admin@eureka-peer-2:8762/eureka/,http://admin:admin@eureka-peer-1:8761/eureka/,http://admin:admin@eureka-peer-3:8763/eureka/
    ports:
      - 8763:8763
    networks:
      - eureka-net
networks:
  eureka-net:
    driver: bridge

其中:eureka.client.service-url.defaultZone 中的admin:admin是注册中心的认证信息,可根据自己需求修改。
docker-compose up -d 启动即可
查看pod日志,相互注册成功
查看pod日志,相互注册成功

kubernetes环境下,因为我不想起三个deployment,决定使用statefulSet+headless,很显然更适合这种有状态的服务。

registry.yaml如下

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: eureka
  namespace: zgg
spec:
  rules:
    - host: eureka.test.linksdwan.com
      http:
        paths:
        - path: /
          backend:
            serviceName: eureka
            servicePort: 8761
---
apiVersion: v1
kind: Service
metadata:
  name: eureka
  namespace: zgg
spec:
  clusterIP: None
  ports:
  - port: 8761
    protocol: TCP
    targetPort: 8761
  selector:
    app: eureka
  sessionAffinity: None
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: eureka
  namespace: zgg
spec:
  serviceName: eureka
  replicas: 3
  selector:
    matchLabels:
      project: zgg
      app: eureka
  template:
    metadata:
      labels:
        project: zgg
        app: eureka
    spec:
      terminationGracePeriodSeconds: 10    #当删除Pod时,等待时间
      imagePullSecrets:
      - name: registry-pull-secret
      containers:
        - name: eureka
          image: image-url
          ports:
            - protocol: TCP
              containerPort: 8761
          env:
            - name: APP_NAME
              value: "eureka"
            - name: SERVER_PORT
              value: "8761"
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: APP_OPTS
              value: "
                     --eureka.instance.hostname=${POD_NAME}.${APP_NAME}
                     --registerWithEureka=true
                     --fetchRegistry=true
                     --eureka.instance.preferIpAddress=false
                     --eureka.client.serviceUrl.defaultZone=http://admin:admin@eureka-0.${APP_NAME}.zgg.svc.cluster.local:8761/eureka/,http://admin:admin@eureka-1.${APP_NAME}.zgg.svc.cluster.local:8761/eureka/,http://admin:admin@eureka-2.${APP_NAME}.zgg.svc.cluster.local:8761/eureka/"
          resources:
            limits:
              cpu: 1
              memory: 1024Mi
            requests:
              cpu: 0.5
              memory: 125Mi
          readinessProbe:              #就绪探针
            tcpSocket:
              port: 8761
            initialDelaySeconds: 20    #延迟加载时间
            periodSeconds: 5           #重试时间间隔
            timeoutSeconds: 10         #超时时间设置
            failureThreshold: 5        #探测失败的重试次数
          livenessProbe:               #存活探针
            tcpSocket:
              port: 8761
            initialDelaySeconds: 60    #延迟加载时间
            periodSeconds: 5           #重试时间间隔
            timeoutSeconds: 5          #超时时间设置
            failureThreshold: 3        #探测失败的重试次数

使用kubectl apply -f registry.yaml -n zgg 即可启动,查看日志,相互注册成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值