Стручки Kubernetes не достигают стручков в другом узле в кластере - PullRequest
0 голосов
/ 18 октября 2018

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

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

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

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

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

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

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

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

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

node1: eureka1; eureka2 (eureka1 видит себя и eureka2) то же самое происходит с eureka2 (см. себя и eureka1)

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

TLDR:

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

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

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

Service-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 get pods --all-namespaces -o wide

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
...