Стручки Kubernetes не достигают стручков в другом узле в кластере

Я очень новичок в мире ранчо / кубернетес, и у меня возникла проблема.

Я пытаюсь развернуть приложение, которое должно быть с состоянием

Если честно, я пытаюсь развернуть сервисный реестр (да, мне нужно). Что и почему я пытаюсь сделать:

Что: - Развертывание нескольких реестров служб, которые регистрируются между ними (для высокой доступности) - Я выставляю их с StatefulSet объект, чтобы использовать определенное имя реестра (для целей регистрации клиентов), поэтому мне нужно получить что-то вроде Registry-0, Registry-1 и использовать эти имена для настройки клиентов.

Почему: - Если я использую ClusterIP, я буду балансировать между сервисными регистрами и не регистрировать мой клиент на каждом сервере (потому что клиент и сервер могут самостоятельно зарегистрироваться только в одном реестре), это плохо для меня.

Моя инфраструктура:

  • Rancher установлен в AWS
  • Кластер Kubernetes настроен на 3
    узлы как:
  • узел1: все (рабочий,etcd, панель управления)
  • узел2: рабочий
  • узел 3: рабочий

Моя проблема:

Когда я применяю YAML и Kubernetes разворачиваю мое приложение, если реестр служб находится в node1, он отлично работает и может видеть себя и другие реплики, которые находятся в node1, например:

узел1: eureka1;eureka2 (eureka1 видит себя и eureka2) то же самое происходит с eureka2 (видите себя и eureka1)

но если я создам еще 4 реплики Eureka, например, и мастер развернут в другом узле, например, еще 2 eureka в node2(только работник), а затем еще 2 в node3 (только работник), они тоже не смогут видеть друг друга, а eureka1 и eureka2 не смогут см. eureka3 eureka4, eureka5 и eureka6

TLDR:

  • Стручки в узле 1 могут видеть друг друга, но не видят другие узлы.
  • Стручки в узле 2 и узле 3 не видны ни себе, ни другим узлам.
  • Если я выполняю в localhost с миникубе, все работает нормально.

Чтобы воспроизвести, просто примените оба файла выше и получите доступ к основному IP-адресу kubernetes.

Файл развертывания реестра служб:

Сервис-registry.yaml:

---
apiVersion: v1
kind: Service
metadata:
  name: eureka
  labels:
    app: eureka
spec:
  ports:
  - port: 7700
    name: eureka
  clusterIP: None
  selector:
    app: eureka
---    
apiVersion: apps/v1beta2
kind: StatefulSet
metadata:
  name: eureka
spec:
  serviceName: "eureka"
  replicas: 5 
  selector:
    matchLabels:
      app: eureka
  template:
    metadata:
      labels:
        app: eureka
    spec:
      containers:
      - name: eureka
        image: leandrozago/eureka
        ports:
        - containerPort: 7700
        env:
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
          # Due to camelcase issues with "defaultZone" and "preferIpAddress", _JAVA_OPTIONS is used here
        - name: _JAVA_OPTIONS
          value: -Deureka.instance.preferIpAddress=false -Deureka.client.serviceUrl.defaultZone=http://eureka-0.eureka:7700/eureka/,http://eureka-1.eureka:7700/eureka/,http://eureka-2.eureka:7700/eureka/,http://eureka-3.eureka:7700/eureka/,http://eureka-4.eureka:7700/eureka/,http://eureka-5.eureka:7700/eureka/,http://eureka-6.eureka:7700/eureka/
        - name: EUREKA_CLIENT_REGISTERWITHEUREKA
          value: "true"
        - name: EUREKA_CLIENT_FETCHREGISTRY
          value: "true"
        # The hostnames must match with the eureka serviceUrls, otherwise, the replicas are reported as unavailable in the eureka dashboard      
        - name: EUREKA_INSTANCE_HOSTNAME
          value: ${MY_POD_NAME}.eureka
      # No need to start the pods in order. We just need the stable network identity
  podManagementPolicy: "Parallel"

Ingress yaml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - http:
        paths:
          - path: /
            backend:
              serviceName: eureka
              servicePort: 7700

Редакция:

kubectl получить стручки - все пространства имен -о широко

NAMESPACE       NAME                                      READY     STATUS             RESTARTS   AGE       IP              NODE
cattle-system   cattle-cluster-agent-557ff9f65d-5qsv6     0/1       CrashLoopBackOff   15         58m       10.42.1.41      rancher-b2b-rancheragent-1-worker
cattle-system   cattle-node-agent-mxfpm                   1/1       Running            0          4d        172.18.80.152   rancher-b2b-rancheragent-0-all
cattle-system   cattle-node-agent-x2wdc                   1/1       Running            0          4d        172.18.82.84    rancher-b2b-rancheragent-0-worker
cattle-system   cattle-node-agent-z6cnw                   1/1       Running            0          4d        172.18.84.152   rancher-b2b-rancheragent-1-worker
default         eureka-0                                  1/1       Running            0          52m       10.42.2.41      rancher-b2b-rancheragent-0-worker
default         eureka-1                                  1/1       Running            0          52m       10.42.1.42      rancher-b2b-rancheragent-1-worker
default         eureka-2                                  1/1       Running            0          52m       10.42.0.28      rancher-b2b-rancheragent-0-all
default         eureka-3                                  1/1       Running            0          52m       10.42.1.43      rancher-b2b-rancheragent-1-worker
default         eureka-4                                  1/1       Running            0          52m       10.42.2.42      rancher-b2b-rancheragent-0-worker
default         eureka-5                                  1/1       Running            0          59s       10.42.0.29      rancher-b2b-rancheragent-0-all
default         eureka-6                                  1/1       Running            0          59s       10.42.2.43      rancher-b2b-rancheragent-0-worker
ingress-nginx   default-http-backend-797c5bc547-wkp5z     1/1       Running            0          4d        10.42.0.5       rancher-b2b-rancheragent-0-all
ingress-nginx   nginx-ingress-controller-dd5mt            1/1       Running            0          4d        172.18.82.84    rancher-b2b-rancheragent-0-worker
ingress-nginx   nginx-ingress-controller-m6jkh            1/1       Running            1          4d        172.18.84.152   rancher-b2b-rancheragent-1-worker
ingress-nginx   nginx-ingress-controller-znr8c            1/1       Running            0          4d        172.18.80.152   rancher-b2b-rancheragent-0-all
kube-system     canal-bqh22                               3/3       Running            0          4d        172.18.80.152   rancher-b2b-rancheragent-0-all
kube-system     canal-bv7zp                               3/3       Running            0          3d        172.18.84.152   rancher-b2b-rancheragent-1-worker
kube-system     canal-m5jnj                               3/3       Running            0          4d        172.18.82.84    rancher-b2b-rancheragent-0-worker
kube-system     kube-dns-7588d5b5f5-wdkqm                 3/3       Running            0          4d        10.42.0.4       rancher-b2b-rancheragent-0-all
kube-system     kube-dns-autoscaler-5db9bbb766-snp4h      1/1       Running            0          4d        10.42.0.3       rancher-b2b-rancheragent-0-all
kube-system     metrics-server-97bc649d5-q2bxh            1/1       Running            0          4d        10.42.0.2       rancher-b2b-rancheragent-0-all
kube-system     rke-ingress-controller-deploy-job-bqvcl   0/1       Completed          0          4d        172.18.80.152   rancher-b2b-rancheragent-0-all
kube-system     rke-kubedns-addon-deploy-job-sf4w5        0/1       Completed          0          4d        172.18.80.152   rancher-b2b-rancheragent-0-all
kube-system     rke-metrics-addon-deploy-job-55xwp        0/1       Completed          0          4d        172.18.80.152   rancher-b2b-rancheragent-0-all
kube-system     rke-network-plugin-deploy-job-fdg9d       0/1       Completed          0          21h       172.18.80.152   rancher-b2b-rancheragent-0-all

0 ответов

Другие вопросы по тегам