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

问题描述 投票:0回答:2

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

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

api版本:v1
种类: 服务
元数据:
  姓名:卡桑德拉
规格:
  外部流量策略:本地
  端口:
  - 节点端口:30000
    端口:30000
    协议: TCP
    目标端口:9042
  选择器:
    应用程序:卡桑德拉
  类型:节点端口
api版本:“apps/v1”
种类:StatefulSet
元数据:
  姓名:卡桑德拉
规格:
  服务名称:cassandra
  副本:2
  选择器:
    匹配标签:
      应用程序:卡桑德拉
  模板:
    元数据:
      标签:
        角色:卡桑德拉
        应用程序:卡桑德拉
    规格:
      终止宽限期秒:10
      容器:
        - 环境:
            - 名称:MAX_HEAP_SIZE
              值:1024M
            - 名称:HEAP_NEWSIZE
              值:1024M
            - 名称:CASSANDRA_SEEDS
              值:“cassandra-0.cassandra.default.svc.cluster.local”
            - 名称:CASSANDRA_CLUSTER_NAME
              值:“SetuCassandra”
            - 名称:CASSANDRA_DC
              值:“DC1-SetuCassandra”
            - 名称:CASSANDRA_RACK
              值:“Rack1-SetuCassandra”
            - 名称:CASSANDRA_SEED_PROVIDER
              值:io.k8s.cassandra.KubernetesSeedProvider
            - 名称:POD_IP
              值来自:
                字段参考:
                  字段路径:status.podIP
          图片:库/cassandra:3.11
          姓名:卡桑德拉
          体积安装:
            - 挂载路径:/cassandra-storage
              名称:cassandra-存储
          端口:
            - 集装箱端口:9042
              姓名:cql
  体积声明模板:
  - 元数据:
      名称:cassandra-存储
    规格:
      访问模式:
      - 读写一次
      资源:
        要求:
          存储:320Gi
cassandra kubernetes
2个回答
1
投票

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

enter image description here


1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.