Стручки 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