其他分享
首页 > 其他分享> > k8s安装eureka集群

k8s安装eureka集群

作者:互联网

部署Eureka集群

创建 Eureka 部署文件,用于在 Kubernetes 中部署 Eureka,这里选择用 StatefulSet (有状态集)方式来部署,这样能保证它 Eureka Pod 名是有序的,如果部署为 Deployment,那么得部署三个 Deployment 对象,比较繁琐。并且 StatefulSet 支持 Service Headless 方式创建 Service 来对内部服务访问,如果是 CluserIP 方式创建 Service 会分一个虚拟 IP 给该 Service,那么服务通过 Service 访问 Pod 每次都需要经过 Kube-proxy 代理流量,这样会增加与注册中心的通信造成一定性能损耗。Headless 方式部署的 Service 不会分配虚拟 IP,而是用轮询的访问,每次都直接与 Pod 的 IP 进行通信。

1.eureka的Dockerfile

FROM dk.uino.cn/java/java8:1.0
#设置上海时间
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

EXPOSE 9001
VOLUME /tmp
ADD framework-eureka.jar app.jar
RUN bash -c 'touch /app.jar'
ENV APP_OPTS=""
ENTRYPOINT ["sh", "-c", "java  -jar /app.jar  $APP_OPTS" ]

2.创建eureka.yml

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: eureka
  namespace: framework-micro
  annotations:
    k8s.eip.work/workload: cloud-eureka
    k8s.eip.work/displayName: 服务注册
  labels:
    k8s.eip.work/layer: eureka
    k8s.eip.work/name: cloud-eureka
spec:
  rules:
    - host: eureka.uino.com
      http:
        paths:
        - path: /
          backend:
            serviceName: eureka
            servicePort: 9001
---
apiVersion: v1
kind: Service
metadata:
  name: eureka
  namespace: framework-micro
  annotations:
    k8s.eip.work/workload: framework-eureka
    k8s.eip.work/displayName: 服务注册
  labels:
    k8s.eip.work/layer: eureka
    k8s.eip.work/name: framework-eureka
spec:
  clusterIP: None
  ports:
    - name: eureka
      port: 9001
  selector:
    project: framework-micro
    app: eureka
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: eureka
  namespace: framework-micro
  annotations:
    k8s.eip.work/workload: framework-eureka
    k8s.eip.work/displayName: 服务注册
    k8s.eip.work/service: ClusterIP
    k8s.eip.work/ingress: 'true'
  labels:
    k8s.eip.work/layer: eureka
    k8s.eip.work/name: framework-eureka
spec:
  serviceName: eureka
  replicas: 3
  selector:
    matchLabels:
      project: framework-micro
      app: eureka
  template:
    metadata:
      labels:
        project: framework-micro
        app: eureka
    spec:
      containers:
        - name: eureka
          image: xxxxxxxxxx/framework/framework-eureka:v1
          imagePullPolicy: IfNotPresent
          ports:
            - protocol: TCP
              containerPort: 9001
          env:
            - name: APP_NAME
              value: "eureka"
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: APP_OPTS
              value: "
                     --eureka.instance.hostname=${POD_NAME}.${APP_NAME}
                     --eureka.client.serviceUrl.defaultZone=http://eureka-0.${APP_NAME}:9001/eureka/,http://eureka-1.${APP_NAME}:9001/eureka/,http://eureka-2.${APP_NAME}:9001/eureka/
                     "
          resources:
            limits:
              cpu: 1
              memory: 1024Mi
            requests:
              cpu: 0.5
              memory: 125Mi
          readinessProbe:              #就绪探针
            tcpSocket:
              port: 9001
            initialDelaySeconds: 20    #延迟加载时间
            periodSeconds: 5           #重试时间间隔
            timeoutSeconds: 10         #超时时间设置
            failureThreshold: 5        #探测失败的重试次数
          livenessProbe:               #存活探针
            tcpSocket:
              port: 9001
            initialDelaySeconds: 60    #延迟加载时间
            periodSeconds: 5           #重试时间间隔
            timeoutSeconds: 5          #超时时间设置
            failureThreshold: 3        #探测失败的重试次数

env参数说明:

APP_NAME: 和服务名称一致,将服务名称传入容器环境中。
POD_NAME: Pod名称,将 Pod 名称传入容器环境中。
APP_OPTS: Dockerfile 中定义的变量,用于设置 Spring 启动参数,这里主要设置此值与 APP_NAME 和 POD_NAME 两值配合使用
其他参数说明:

2.部署Eureka Server到kubernetes

kubectl apply -f eureka.yaml
#如果发现部署错了,可以执行kubectl delete -f erueka.yaml,删除这个yaml部署的所有资源

3.访问Eurek UI

由于ingress配置了域名,先配置hosts,把域名解析到ingress-controller的Pod所在的NodeIP

image-20210902115719029

可以随时刷新,看页面最下面的IP 是rr方式轮训到各个IP提供服务的

4.在kuboard上查看部署的情况

image-20210902134150894

5.spring cloud服务注册进eureka

cat application.yaml

eureka:
  instance:
    prefer-ip-address: true  #以IP注册进eureka,不以ID注册
  client:
    register-with-eureka: true #注册到eureka为true
    fetch-registry: true
    service-url:
      defaultZone: http://eureka-2.eureka.framework-micro.svc.cluster.local:framework-register:9001,http://eureka-0.eureka.framework-micro.svc.cluster.local:framework-register:9001,http://eureka-1.eureka.framework-micro.svc.cluster.local:framework-register:9001

参考连接:https://blog.csdn.net/qq_32641153/article/details/99700281

标签:eip,work,eureka,framework,集群,Pod,k8s
来源: https://www.cnblogs.com/dalianpai/p/15218370.html