Kubernetes配置Redis

时间:2018-03-07 16:37:04

标签: redis kubernetes

我正在关注此tutorial来为redis.conf设置配置图。在我创建Redis部署之后,我检查以确保redis.conf文件位于每个pod中,并且它们在那里。问题是当进入redis-cli并检查那里的配置时,不使用redis.conf值。正在使用默认值,就好像Redis没有使用redis.conf文件启动一样。

redis.conf

maxclients 2000
requirepass "test"

redis-config configmap

{
    "apiVersion": "v1",
    "data": {
        "redis-config": "maxclients 2000\nrequirepass \"test\"\n\n"
    },
    "kind": "ConfigMap",
    "metadata": {
        "creationTimestamp": "2018-03-07T15:28:19Z",
        "name": "redis-config",
        "namespace": "default",
        "resourceVersion": "2569562",
        "selfLink": "/api/v1/namespaces/default/configmaps/redis-config",
        "uid": "29d250ea-221c-11e8-969f-06c0c8d545d2"
    }
}

k8 redis manifest.json

{
    "kind" : "Deployment",
    "apiVersion" : "extensions/v1beta1",
    "metadata" : {
        "name" : "redis-master",
        "creationTimestamp" : null
    },
    "spec" : {
        "replicas" : 2,
        "template" : {
            "metadata" : {
                "creationTimestamp" : null,
                "labels" : {
                    "app" : "redis",
                    "role" : "master",
                    "tier" : "backend"
                }
            },
            "spec" : {
                "hostNetwork" : true,
                "nodeSelector" :{ "role": "cache"},
                "containers" : [{
                        "name" : "master",
                        "image" : "redis",
                        "ports" : [{
                                "containerPort" : 6379,
                                "hostPort" : 6379,
                                "protocol" : "TCP"
                            }
                        ],
                        "volumeMounts" : [{
                                "mountPath" : "/redis-master",
                                "name": "config"
                            }
                        ],
                        "resources" : {},
                        "terminationMessagePath" : "/dev/termination-log",
                        "imagePullPolicy" : "IfNotPresent"
                    }],
                "volumes" : [{
                    "name" : "config",
                    "configMap" : {
                        "name" : "redis-config",
                        "items": [{
                            "key": "redis-config",
                            "path": "redis.conf"
                        }]
                        }
                    }
                ],    
                "restartPolicy" : "Always",
                "terminationGracePeriodSeconds" : 30,
                "dnsPolicy" : "ClusterFirst",
                "securityContext" : {}
            }
        }
    },
    "status" : {}
}

现在我知道该教程使用的是Pod类,我使用的是Deployment类,但我认为这不是问题所在。

1 个答案:

答案 0 :(得分:2)

看起来你正在拉动默认的redis容器。如果你检查redis Dokerfiles,例如https://github.com/docker-library/redis/blob/d53b982b387634092c6f11069401679034054ecb/4.0/alpine/Dockerfile,在底部,他们有:

CMD ["redis-server"]

将使用默认配置启动redis。

每个redis文档: https://redis.io/topics/quickstart 在"启动Redis"部分,如果要提供不同的配置,则需要使用以下命令启动redis:

redis-server <config file>

此外,Kubernetes文档中的示例使用不同的redis容器:

image: kubernetes/redis

从Dokerfile:https://github.com/kubernetes/kubernetes/blob/master/examples/storage/redis/image/Dockerfile开始,似乎有人用提供的配置启动Redis。