Я очень новичок в мире ранчо / 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