Redis кластер K8S соединение - PullRequest
0 голосов
/ 12 марта 2019

Я использую Redis-кластер в K8S:

kubectl get services -o wide
redis-cluster                              ClusterIP      10.97.31.167     <none>        6379/TCP,16379/TCP   22h   app=redis-cluster

При подключении к IP-адресу кластера от самого узла подключение работает нормально:

redis-cli -h 10.97.31.167 -c
10.97.31.167:6379> set some_val 1
-> Redirected to slot [11662] located at 10.244.1.9:6379
OK
  1. Есть ли какой-нибудь способ получить доступ к серверу redis с моей локальной виртуальной машины разработки, не выставляя каждый модуль как службу?
  2. При развертывании моего приложения для запуска внутри самого кластера (позже, когда в работе) я должен также использовать IP-адрес кластера, или мне следует использовать внутренние IP-адреса модулей в качестве основных IP-адресов серверов Redis-Master? 1010 *

Простая пересылка на удаленный компьютер не будет работать:

devvm:ssh -L 6380:10.97.31.167:6379 -i user.pem admin@k8snode.com

На устройстве VM:

root@devvm:~# redis-cli -h 127.0.0.1 -p 6380 -c
127.0.0.1:6380> set jaheller 1
-> Redirected to slot [11662] located at 10.244.1.9:6379

На этом этапе соединение redis истекло.

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Не думаю, что вам нужно перенаправление портов. Вы должны построить входной контроллер на своем кластере, то есть nginx входной контроллер

Затем вы просто настраиваете единственную входную службу с открытым доступом, которая будет обслуживать кластерный трафик.

Вот пример службы Ingress Controller to Access:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: redis-cluster-ing
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: redis-cluster
          servicePort: 6379

Вы можете проверить пошаговую инструкцию

0 голосов
/ 12 марта 2019

Я верю, что во всех сценариях вам просто нужно предоставить сервис, используя объект сервиса kubernetes типа:

  • IP кластера (если вы используете его внутри кластера)

  • NodePort (для внешнего доступа)

  • LoadBalancer (в случае общедоступного доступа и если вы используете облачный провайдер)

  • NodePort с внешним балансировщиком нагрузки (для общего внешнего доступа, если вы находитесь в локальной инфраструктуре)

Не нужно беспокоиться об отдельных стручках. Служба позаботится о них.

Документы:

https://kubernetes.io/docs/concepts/services-networking/service/

...