Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 从外部访问有状态无头kubernetes?_Cassandra_Kubernetes - Fatal编程技术网

Cassandra 从外部访问有状态无头kubernetes?

Cassandra 从外部访问有状态无头kubernetes?,cassandra,kubernetes,Cassandra,Kubernetes,我已经在AWS上创建了Cassandra有状态/无头集群,它在集群中运行良好。唯一的问题是我无法从集群外部访问它。我尝试了Kubernetes文档或StackOverflow引用中的大部分内容,但仍然无法解决它 我有一个AWS的工作安全小组。 这是我的服务和状态集yaml文件 apiVersion: v1 kind: Service metadata: name: cassandra spec: externalTrafficPolicy: Local ports: - node

我已经在AWS上创建了Cassandra有状态/无头集群,它在集群中运行良好。唯一的问题是我无法从集群外部访问它。我尝试了Kubernetes文档或StackOverflow引用中的大部分内容,但仍然无法解决它

我有一个AWS的工作安全小组。 这是我的服务和状态集yaml文件

apiVersion: v1 kind: Service metadata: name: cassandra spec: externalTrafficPolicy: Local ports: - nodePort: 30000 port: 30000 protocol: TCP targetPort: 9042 selector: app: cassandra type: NodePort 版本:v1 种类:服务 元数据: 姓名:卡桑德拉 规格: 外部流量策略:本地 端口: -节点端口:30000 港口:30000 协议:TCP 目标港:9042 选择器: 应用程序:卡桑德拉 类型:节点端口 apiVersion:“应用程序/v1” 种类:StatefulSet 元数据: 姓名:卡桑德拉 规格: 服务名称:卡桑德拉 副本:2份 选择器: 火柴标签: 应用程序:卡桑德拉 模板: 元数据: 标签: 角色:卡桑德拉 应用程序:卡桑德拉 规格: 终止时间:10秒 容器: -环境: -名称:最大堆大小 价值:10.24亿美元 -名称:HEAP_NEWSIZE 价值:10.24亿美元 -名称:卡桑德拉种子 值:“cassandra-0.cassandra.default.svc.cluster.local” -名称:CASSANDRA_集群名称 值:“SetuCassandra” -姓名:卡桑德拉 值:“DC1 SetuCassandra” -名称:CASSANDRA_机架 值:“Rack1 SetuCassandra” -名称:卡桑德拉种子供应商 值:io.k8s.cassandra.KubernetesSeedProvider -姓名:POD_IP 价值来源: fieldRef: 现场路径:status.podIP 图片:图书馆/卡桑德拉:3.11 姓名:卡桑德拉 体积数量: -mountPath:/cassandra存储 名称:卡桑德拉存储 端口: -集装箱港口:9042 姓名:cql VolumeClaim模板: -元数据: 名称:卡桑德拉存储 规格: 访问模式: -读写 资源: 请求: 储存量:320Gi
非常感谢您的帮助。

关于AWS安全组的详细信息还不够。但我的猜测是,集群中的安全组不允许来自安全组的流量或来自其他集群的IP地址。大概是这样的:


为有状态集创建的无头服务并不意味着该服务的用户可以访问。根据我的理解,它的主要目的是在给定sts的POD之间进行sts内部通信(在它们之间形成集群)。例如,如果您有3节点mongodb集群(作为STS),mongodb-0将希望与mongodb-1和mongodb-2交换集群信息/数据

如果您想以用户身份访问此服务,您对mongodb-0/1/2不感兴趣(或关心),但作为服务更感兴趣。典型的方法是创建一个headful服务(如果需要,可能带有一个nodeport)并访问它


基本上创建两个服务,一个是无头服务(与STS一起使用),另一个是常规服务。两种服务的pod选择器可以相同

请提供更多有关网络的详细信息-您无法从何处访问该服务?您能否在Kubernetes节点上使用SSH,并检查是否可以使用节点的IP和端口从NodePort(30000)访问cassandra apiVersion: "apps/v1" kind: StatefulSet metadata: name: cassandra spec: serviceName: cassandra replicas: 2 selector: matchLabels: app: cassandra template: metadata: labels: role: cassandra app: cassandra spec: terminationGracePeriodSeconds: 10 containers: - env: - name: MAX_HEAP_SIZE value: 1024M - name: HEAP_NEWSIZE value: 1024M - name: CASSANDRA_SEEDS value: "cassandra-0.cassandra.default.svc.cluster.local" - name: CASSANDRA_CLUSTER_NAME value: "SetuCassandra" - name: CASSANDRA_DC value: "DC1-SetuCassandra" - name: CASSANDRA_RACK value: "Rack1-SetuCassandra" - name: CASSANDRA_SEED_PROVIDER value: io.k8s.cassandra.KubernetesSeedProvider - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP image: library/cassandra:3.11 name: cassandra volumeMounts: - mountPath: /cassandra-storage name: cassandra-storage ports: - containerPort: 9042 name: cql volumeClaimTemplates: - metadata: name: cassandra-storage spec: accessModes: - ReadWriteOnce resources: requests: storage: 320Gi