首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Kubernetes中暴露出Redis集群中的每一个豆荚

在Kubernetes中暴露出Redis集群中的每一个豆荚
EN

Stack Overflow用户
提问于 2018-07-06 14:14:17
回答 1查看 1.2K关注 0票数 0

我试图在Kubernetes建立Redis集群。主要的要求是来自Redis集群的所有节点都必须从Kubernetes之外可用。这样客户端就可以直接连接每个节点。但我不知道如何用这种方式配置服务。

现在集群的基本配置。服务进入k8s是可以的,但不能从外部完全访问。

代码语言:javascript
复制
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: redis-cluster
      labels:
        app: redis-cluster
    data:
      redis.conf: |+
        cluster-enabled yes
        cluster-require-full-coverage no
        cluster-node-timeout 15000
        cluster-config-file /data/nodes.conf
        cluster-migration-barrier 1
        appendonly no
        protected-mode no
    ---
    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.alpha.kubernetes.io/tolerate-unready-endpoints: "false"
      name: redis-cluster
      labels:
        app: redis-cluster
    spec:
      type: NodePort
      ports:
      - port: 6379
        targetPort: 6379
        name: client
      - port: 16379
        targetPort: 16379
        name: gossip
      selector:
        app: redis-cluster
    ---
    apiVersion: apps/v1beta1
    kind: StatefulSet
    metadata:
      name: redis-cluster
      labels:
        app: redis-cluster
    spec:
      serviceName: redis-cluster
      replicas: 6
      template:
        metadata:
          labels:
            app: redis-cluster
        spec:
          hostNetwork: true
          containers:
          - name: redis-cluster
            image: redis:4.0.10
            ports:
            - containerPort: 6379
              name: client
            - containerPort: 16379
              name: gossip
            command: ["redis-server"]
            args: ["/conf/redis.conf"]
            readinessProbe:
              exec:
                command:
                - sh
                - -c
                - "redis-cli -h $(hostname) ping"
              initialDelaySeconds: 15
              timeoutSeconds: 5
            livenessProbe:
              exec:
                command:
                - sh
                - -c
                - "redis-cli -h $(hostname) ping"
              initialDelaySeconds: 20
              periodSeconds: 3
            volumeMounts:
            - name: conf
              mountPath: /conf
              readOnly: false
          volumes:
          - name: conf
            configMap:
              name: redis-cluster
              items: 
              - key: redis.conf
                path: redis.conf
EN

回答 1

Stack Overflow用户

发布于 2018-07-07 03:32:18

给予:

代码语言:javascript
复制
    spec:
      hostNetwork: true
      containers:
      - name: redis-cluster
        ports:
        - containerPort: 6379
          name: client 

您的StatefulSet似乎配置错误,因为如果hostNetworktrue,则必须提供hostPort,根据PodSpec文档,该值应该与containerPort匹配:

hostPort integer -主机上要公开的端口数。如果指定,这必须是一个有效的端口号,0

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#containerport-v1-core

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51212362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档