J'ai essayé de déployer Kafka avec un registre de schéma localement à l'aide de Kubernetes. Cependant, les journaux du pod de registre de schéma affichent ce message d'erreur:
apiVersion: v1 kind: Service metadata: name: zookeeper spec: ports: - name: client port: 2181 selector: app: zookeeper --- apiVersion: v1 kind: Service metadata: name: zookeeper-1 spec: ports: - name: client port: 2181 - name: followers port: 2888 - name: election port: 3888 selector: app: zookeeper server-id: "1" --- apiVersion: apps/v1 kind: Deployment metadata: name: zookeeper-1 spec: selector: matchLabels: app: zookeeper server-id: "1" replicas: 1 template: metadata: labels: app: zookeeper server-id: "1" spec: volumes: - name: data emptyDir: {} - name: wal emptyDir: medium: Memory containers: - name: server image: elevy/zookeeper:v3.4.7 env: - name: MYID value: "1" - name: SERVERS value: "zookeeper-1" - name: JVMFLAGS value: "-Xmx2G" ports: - containerPort: 2181 - containerPort: 2888 - containerPort: 3888 volumeMounts: - mountPath: /zookeeper/data name: data - mountPath: /zookeeper/wal name: wal
Quelle pourrait être la raison de ce comportement? ' Afin d'exécuter Kubernetes localement, j'utilise la version Minikube v0.32.0 avec la version Kubernetes v1.13.0
Ma configuration Kafka:
apiVersion: v1 kind: Service metadata: name: kafka-1 spec: ports: - name: client port: 9092 selector: app: kafka server-id: "1" --- apiVersion: apps/v1 kind: Deployment metadata: name: kafka-1 spec: selector: matchLabels: app: kafka server-id: "1" replicas: 1 template: metadata: labels: app: kafka server-id: "1" spec: volumes: - name: kafka-data emptyDir: {} containers: - name: server image: confluent/kafka:0.10.0.0-cp1 env: - name: KAFKA_ZOOKEEPER_CONNECT value: zookeeper-1:2181 - name: KAFKA_ADVERTISED_HOST_NAME value: kafka-1 - name: KAFKA_BROKER_ID value: "1" ports: - containerPort: 9092 volumeMounts: - mountPath: /var/lib/kafka name: kafka-data --- apiVersion: v1 kind: Service metadata: name: schema spec: ports: - name: client port: 8081 selector: app: kafka-schema-registry --- apiVersion: apps/v1 kind: Deployment metadata: name: kafka-schema-registry spec: replicas: 1 selector: matchLabels: app: kafka-schema-registry template: metadata: labels: app: kafka-schema-registry spec: containers: - name: kafka-schema-registry image: confluent/schema-registry:3.0.0 env: - name: SR_KAFKASTORE_CONNECTION_URL value: zookeeper-1:2181 - name: SR_KAFKASTORE_TOPIC value: "_schema_registry" - name: SR_LISTENERS value: "http://0.0.0.0:8081" ports: - containerPort: 8081
Configuraion Zookeeper:
ERROR Server died unexpectedly: (io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain:51) org.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic metadata
3 Réponses :
security.protocol=SSL
@AdrianMitev J'utilisais Spring-boot Kafka, donc j'ai fini par utiliser les propriétés d'application par défaut de spring-boot pour configurer la connexion. Mon erreur est venue d'essayer de créer une classe @Configuration
pour créer la connexion et cela m'a donné l'erreur de délai d'expiration.
Cela a résolu le problème pour moi. Le courtier (que je ne contrôle pas) a été configuré pour toujours utiliser le port 9092
, mais avec SSL activé. J'avais supposé que c'était du texte en clair. Merci Anders!
Je vous remercie! Dans mon cas, j'avais mal configuré un service dans Kubernetes qui attendait une variable d'environnement facultative contenant une clé API en cas de connexion via SSL, et mon secret a été mal nommé. Parce que je l'ai ensuite pointé vers un point de terminaison SSL, je me suis retrouvé avec ce délai. Bien que je ne sois pas familier avec le protocole Kafka, je pense que le client attendait que le serveur dise bonjour et que le serveur s'attendait à ce que le client effectue une poignée de main SSL.
Une fois, j'ai résolu ce problème en redémarrant ma machine, mais cela s'est reproduit et je ne voulais pas redémarrer ma machine, donc je l'ai corrigé avec cette propriété dans le fichier server.properties
advertised.listeners=PLAINTEXT://localhost:9092
La récupération des métadonnées des sujets par Kafka échoue pour deux raisons:
Raison 1 Si le serveur d'amorçage n'accepte pas vos connexions, cela peut être dû à un problème de proxy comme un VPN ou certains groupes de sécurité au niveau du serveur.
Raison 2: Non-concordance dans le protocole de sécurité où l'attendu peut être SASL_SSL et le réel peut être SSL. ou l'inverse ou il peut être PLAIN.
À propos, les images Docker
confluent /
sont obsolètes. Etconfluentinc /
sont préférés. Et mentionné précédemment, rencontrez-vous des problèmes avec les graphiques Helm? docs.confluent.io/current/installation/ installant_cp /…Je n'ai pas de problèmes avec les graphiques Helm. J'ai besoin de déployer des solutions Kafka personnalisées sans Helm, c'est pourquoi j'essaye de le faire
Cependant, je ne vois rien de très personnalisé. Kafka n'est vraiment installé que d'une seule manière, et peut-être que les valeurs de configuration sont un peu modifiées, mais toutes les applications personnalisées construites autour de Kafka + Schema Registry peuvent être définies dans des fichiers YAML séparés