Поставщик семян kubernetes не смог найти хост cassandra-0.cassandra.default.svc.cluster.local - PullRequest
0 голосов
/ 11 октября 2018

Не удалось запустить кластер Cassandra на aws.Ошибка выглядит следующим образом.

INFO [main] 2018-10-11 08: 11: 42,794 DatabaseDescriptor.java:729 - Обратное давление отключено стратегией org.apache.cassandra.net.RateBasedBackPressure {high_ratio = 0.9, factor = 5, flow = FAST}.

WARN [main] 2018-10-11 08: 11: 42,848 SimpleSeedProvider.java:60 - Поставщик семени не смог найти хост cassandra-0.cassandra.default.svc.cluster.local Исключение (org.apache.cassandra.exceptions.ConfigurationException), обнаруженное во время запуска: поставщик начальных данных не перечисляет начальные числа.Поставщик семян не перечисляет семена.ОШИБКА [main] 2018-10-11 08: 11: 42,851 CassandraDaemon.java:708 - Возникла исключительная ситуация при запуске: поставщик семян не перечисляет семена.

Вот мои сведения об этом.

$kubectl get pods                                                                                                                                                                                   [13:48]
NAME          READY     STATUS             RESTARTS   AGE
cassandra-0   1/1       Running            0          19h
cassandra-1   0/1       CrashLoopBackOff   231        19h

$kubectl get services                                                                                                                                                                               [13:49]
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
cassandra    NodePort    100.69.201.208   <none>        9042:30000/TCP   1d
kubernetes   ClusterIP   100.64.0.1       <none>        443/TCP          15d

$kubectl get pvc                                                                                                                                                                                    [13:50]
NAME                            STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
cassandra-data-cassandra-0      Pending                                                                        fast           15d
cassandra-storage-cassandra-0   Bound     pvc-f3ff4203-c0a4-11e8-84a8-02c7556b5a4a   320Gi      RWO            gp2            15d
cassandra-storage-cassandra-1   Bound     pvc-1bc3f896-c0a5-11e8-84a8-02c7556b5a4a   320Gi      RWO            gp2            15d

$kubectl get namespaces                                                                                                                                                                             [13:53]
NAME          STATUS    AGE
default       Active    15d
kube-public   Active    15d
kube-system   Active    15d

Даже рабочий модуль не загружает хранилище.

Он работал нормально, пока я не попытался изменить MAX_HEAP_SIZE с 1024M на 2048M.

После этого даже я удалилвсе старые стручки, сервисы и созданные в свежем виде, все еще не работает.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Я попробовал решение кода Саймона.Но он дает мне подсказку, что это должно быть безголовое обслуживание.однако в моем случае я создаю безголовый сервис, добавив «clusterIP: None».Это дает "Провайдеру семени не удалось найти хост" без этой строки.Я не могу найти DNS pod (elassandra-0.elassandra.chargington.svc.cluster.local), но я не могу найти DNS службы (elassandra.chargington.svc.cluster.local).

Иногда вам не требуется балансировка нагрузки или IP-адрес одного сервиса.В этом случае вы можете создать «безголовые» службы, указав «None» для IP-адреса кластера (.spec.clusterIP).

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

Вот мой код

apiVersion: v1 kind: Service metadata: labels: app: elassandra name: elassandra namespace: chargington spec: clusterIP: None ports: - name: cassandra port: 9042 - name: http port: 9200 - name: transport protocol: TCP port: 9300 selector: app: elassandra

И в моем наборе состояний мне нужно установить serviceName: elassandra.Это необходимо для указания StatefulSet на Службу, которая будет управлять доменом для DNS-имен модуля.

--- apiVersion: "apps/v1beta1" kind: StatefulSet metadata: name: elassandra namespace: chargington spec: serviceName: elassandra replicas: 1 template: metadata: labels: app: elassandra spec: containers: - name: elassandra image: strapdata/elassandra:6.2.3.3 imagePullPolicy: IfNotPresent ports: - containerPort: 7000 name: intra-node - containerPort: 7001 name: tls-intra-node - containerPort: 7199 name: jmx - containerPort: 9042 name: cql - containerPort: 9200 name: http protocol: TCP - containerPort: 9300 name: transport protocol: TCP env: - name: CASSANDRA_SEEDS value: elassandra-0.elassandra.chargington.svc.cluster.local - name: MAX_HEAP_SIZE value: 256M - name: HEAP_NEWSIZE value: 100M - name: CASSANDRA_CLUSTER_NAME value: "Cassandra" - name: CASSANDRA_DC value: "DC1" - name: CASSANDRA_RACK value: "Rack1" - name: CASSANDRA_ENDPOINT_SNITCH value: GossipingPropertyFileSnitch volumeMounts: - name: elassandra-data mountPath: /opt/elassandra-5.5.0.8/data volumeClaimTemplates: - metadata: name: elassandra-data annotations: volume.beta.kubernetes.io/storage-class: ""<br> spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 1Gi

0 голосов
/ 12 октября 2018

Вы используете тип NodePort.Это не сделает сервис безголовым, поэтому IP-адрес модуля не разрешается.

Вам нужно создать отдельный безголовый сервис.Вам также необходимо создать собственный образ Docker и запустить сценарий в вашей точке входа, который будет извлекать все ips для имени домена службы.

В качестве примера можно посмотреть следующий проект: https://github.com/vyshane/cassandra-kubernetes/

...