我在Azure上有一个三个节点的kubernetes群集,其中包含三个Kafka代理和一个zookeeper实例。通过部署代理服务和负载均衡器,可以公开访问Kafka经纪人和Zookeeper。
现在,我正在部署架构注册表,我希望可以从kubernetes集群外部对其进行访问。 我正在按照与以前相同的步骤进行操作,但是无法从kubernetes集群外部访问架构注册表api。 如果我从docker容器中卷曲架构注册表,则一切工作正常,因此我认为架构注册表已正常运行。 这是我的架构注册表yamls描述符:
架构注册表部署:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: schema-registry
spec:
replicas: 1
template:
metadata:
labels:
name: schema-registry
spec:
containers:
- env:
- name: SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL
value: zookeeper-cluster-ip:2181
- name: SCHEMA_REGISTRY_HOST_NAME
value: registry-0.schema.default.svc.cluster.local
- name: SCHEMA_REGISTRY_LISTENERS
value: http://0.0.0.0:8081
name: schema-registry
image: confluentinc/cp-schema-registry:5.0.1
ports:
- containerPort: 8081
restartPolicy: Always
模式注册表服务:
apiVersion: v1
kind: Service
metadata:
name: schema-registry
labels:
name: schema-registry
spec:
ports:
- port: 8081
selector:
name: schema-registry
type: LoadBalancer
部署服务后,将生成公共IP:
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
schema-registry LoadBalancer X.X.X.X. X.X.X.X. 8081:30921/TCP 13m
,所以我运行
curl -X GET -i -H "Content-Type: application/vnd.schemaregistry.v1+json" http://X.X.X.X:8081/subjects
但是没有回应。 从容器内部,我从curl命令得到响应。
我希望从群集外部可以访问架构注册表的原因是我们希望从Nifi群集访问它。
有可能吗?
答案 0 :(得分:0)
防火墙规则的一个简单问题就是问题的原因。 服务和部署配置还可以。 还是谢谢你!
答案 1 :(得分:0)
我之前也遇到过同样的问题,并使用选择器/应用程序解决了。
Deployment:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
namespace: ***
name: schema-registry
labels:
app: schema-registry
spec:
replicas: 1
selector:
matchLabels:
app: schema-registry
template:
metadata:
labels:
app: schema-registry
spec:
containers:
- name: schema-registry
image: confluentinc/cp-schema-registry:5.3.0
ports:
- containerPort: 8081
imagePullPolicy: Always
env:
- name: SCHEMA_REGISTRY_HOST_NAME
value: schema-registry
- name: SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL
value: ***
- name: SCHEMA_REGISTRY_LISTENERS
value: http://0.0.0.0:8081
command:
- bash
- -c
- unset SCHEMA_REGISTRY_PORT; /etc/confluent/docker/run
Service:
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
name: schema-registry
namespace: ***
labels:
app: schema-registry
spec:
selector:
app: schema-registry
ports:
- port: 8081
type: LoadBalancer
希望这会有所帮助!