k8s高可用性spring-cloud eureka构建群集查找镜像docker部署安全关闭验证docker-compose部署使用k8s部署helm部署群集注册服务和注册服务service-a
查找镜像
镜像地址:https://hub.docker.com/r/LH堆栈/eureka
根据镜像地址中的文档,进行docker、docker-compose、k8s、helm相关的部署验证
docker部门关闭安全认证docker run---- name eureka-p 876133608761-e security _ enable=false-e Java _ opts='-xmx 128 m-XM SSM
安全认证#打开关闭前启动的容器,防止端口冲突docker RM-feurekadockerrun---- name eureka-p 876133608761-e security _ username=admin1- - 请输入上面定义的用户名admin1、密码654321
部署docker-compose方法需要docker-compose、安装位置:3359 www.run OOB.com/docker/docker-compose.html。 这里只引入认证方式
#停止前的容器docker rm -f eureka# docker-compose脚本cat docker-compose.ymleofversion : '3' services 3360 eureka-1: container _ name 3360 eureka-1 loy : resources : limits : CPUs : '1' memory : ' 256 m ' logging 3360 options 3360 max-file 3: '1'环境curity _ enable 3360 truesecurity _ Serna my min eureka _ server _ URLs : ' http://admin : admin @ 182.168.100.100/er http://admin : admin @ 182.168.3358 3358 admin : admin @ 182.168.100.102/eureka ' networks 3360 eureka : ipv4_ address 3360182.168.100.100 eureka-2: container _ name 33: eureka-2 image eka sources : limits : CPUs : '1' memory : ' 256 m ' logging 3360 options 3360 max-file : '1' environment : Java: ble 3360 truesecurity _ Serna my min eureka _ server _ URLs 3360 ' http://admin : admin @ 182.168.100.100/eureka, http://admin : admin @ 182.168.3358 3358 admin : admin @ 182.168.100.102/eureka ' networks 3360 eureka : ipv4_ address 3360182.168.100.101 eureka-: container _ name 3: eureka-3 image euua ources : limits : CPUs : '1' memory : ' 256 m ' logging 3360 options 3360
max-file: "1" environment: JAVA_OPTS: "-Xmx128m -Xms128m" SECURITY_ENABLE: true SECURITY_USERNAME: admin SECURITY_PASSWORD: admin EUREKA_SERVER_URLS: "http://admin:admin@182.168.100.100/eureka,http://admin:admin@182.168.100.101/eureka,http://admin:admin@182.168.100.102/eureka" networks: eureka: ipv4_address: 182.168.100.102networks: eureka: driver: bridge ipam: driver: default config: - subnet: 182.168.0.0/16EOF#执行docker-composedocker-compose up -d
前提得安装k8s集群环境,安装方式查找资料即可
# 停掉之前docker-compose启动的eurekadocker-compose down# 生成statefulset脚本cat > eureka.yml<<EOFapiVersion: v1kind: Namespacemetadata: name: eureka---apiVersion: v1kind: ConfigMapmetadata: name: eureka namespace: eurekadata: SECURITY_USERNAME: "admin" SECURITY_PASSWORD: "123456" EUREKA_SERVER_URLS: "http://admin:123456@eureka-headless.eureka.svc.cluster.local:8761/eureka"---apiVersion: v1kind: Servicemetadata: name: eureka-headless namespace: eurekaspec: type: ClusterIP clusterIP: None selector: app: eureka-replica ports: - name: http port: 8761---apiVersion: v1kind: Servicemetadata: name: eureka namespace: eurekaspec: type: ClusterIP ports: - name: http port: 8761 selector: app: eureka clusterIP: 10.43.87.61---apiVersion: apps/v1kind: StatefulSetmetadata: name: eureka-cluster namespace: eurekaspec: replicas: 2 #必须和REPLICAS一致 serviceName: eureka-headless selector: matchLabels: app: eureka-replica template: metadata: labels: app: eureka-replica spec: containers: - name: eureka image: lhstack/eureka imagePullPolicy: IfNotPresent ports: - name: http containerPort: 8761 env: - name: IS_STATEFUL_SET value: "true" - name: NAMESPACE value: "eureka" - name: SECURITY_ENABLE value: "true" - name: SECURITY_USERNAME valueFrom: configMapKeyRef: key: SECURITY_USERNAME name: eureka - name: SECURITY_PASSWORD valueFrom: configMapKeyRef: key: SECURITY_PASSWORD name: eureka - name: SERVICE_NAME value: "eureka-headless" - name: REPLICAS value: "2" - name: JAVA_OPTS value: "-Xmx512m -Xms512m" resources: requests: cpu: 50m memory: 128Mi limits: cpu: 100m memory: 512Mi readinessProbe: httpGet: path: /actuator/health port: 8761 initialDelaySeconds: 5 failureThreshold: 5 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 2 livenessProbe: httpGet: path: /actuator/health port: 8761 initialDelaySeconds: 60 failureThreshold: 5 periodSeconds: 120 successThreshold: 1 timeoutSeconds: 2---apiVersion: apps/v1kind: Deploymentmetadata: name: eureka-deploy namespace: eurekaspec: replicas: 1 selector: matchLabels: app: eureka template: metadata: labels: app: eureka spec: containers: - name: eureka image: lhstack/eureka imagePullPolicy: IfNotPresent ports: - name: http containerPort: 8761 readinessProbe: httpGet: path: /actuator/health port: 8761 initialDelaySeconds: 5 failureThreshold: 5 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 2 livenessProbe: httpGet: path: /actuator/health port: 8761 initialDelaySeconds: 60 failureThreshold: 5 periodSeconds: 120 successThreshold: 1 timeoutSeconds: 2 resources: requests: cpu: 50m memory: 128Mi limits: cpu: 100m memory: 512Mi env: - name: SECURITY_ENABLE value: "true" - name: SECURITY_USERNAME valueFrom: configMapKeyRef: key: SECURITY_USERNAME name: eureka - name: SECURITY_PASSWORD valueFrom: configMapKeyRef: key: SECURITY_PASSWORD name: eureka - name: EUREKA_SERVER_URLS valueFrom: configMapKeyRef: key: EUREKA_SERVER_URLS name: eureka - name: JAVA_OPTS value: "-Xmx512m -Xms512m -Deureka.client.fetch-registry=true -Deureka.client.register-with-eureka=true"EOFkubectl apply -f eureka.ymlkubectl get pod -n eureka
这里deployment作为eureka集群里面的客户端,用于承载业务服务的注册,保证statefulset的eureka集群的高可用
进入helm目录
安装集群
多刷新几下,可以看到负载均衡的过程
修改集群数量
可以看到服务在滚动更新,增加新的,停掉老的
这里兼容2.x之后的版本哦
注册服务service-a