使用 ConfigMap 来配置 Redis

这篇文档基于使用 ConfigMap 来配置 Containers 这个任务,提供了一个使用 ConfigMap 来配置 Redis 的真实案例。

教程目标

    • 创建一个包含以下内容的 kustomization.yaml 文件:
    • 一个 ConfigMap 生成器
    • 一个使用 ConfigMap 的 Pod 资源配置
  • 使用 kubectl apply -k ./ 应用整个路径的配置
  • 验证配置已经被正确应用。

准备开始

  • 你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 如果你还没有集群,你可以通过 Minikube 构建一 个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:

    要获知版本信息,请输入 kubectl version.

  • 此页面上显示的示例适用于 kubectl 1.14和在其以上的版本。

  • 理解使用ConfigMap来配置Containers

真实世界的案例:使用 ConfigMap 来配置 Redis

按照下面的步骤,您可以使用ConfigMap中的数据来配置Redis缓存。

  1. 根据docs/user-guide/configmap/redis/redis-config来创建一个ConfigMap:

pods/config/redis-config 使用 ConfigMap 来配置 Redis - 图1

  1. maxmemory 2mb
  2. maxmemory-policy allkeys-lru
  1. curl -OL https://k8s.io/examples/pods/config/redis-config
  2. cat <<EOF >./kustomization.yaml
  3. configMapGenerator:
  4. - name: example-redis-config
  5. files:
  6. - redis-config
  7. EOF

将 pod 的资源配置添加到 kustomization.yaml 文件中:

pods/config/redis-pod.yaml 使用 ConfigMap 来配置 Redis - 图2

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: redis
  5. spec:
  6. containers:
  7. - name: redis
  8. image: redis:5.0.4
  9. command:
  10. - redis-server
  11. - "/redis-master/redis.conf"
  12. env:
  13. - name: MASTER
  14. value: "true"
  15. ports:
  16. - containerPort: 6379
  17. resources:
  18. limits:
  19. cpu: "0.1"
  20. volumeMounts:
  21. - mountPath: /redis-master-data
  22. name: data
  23. - mountPath: /redis-master
  24. name: config
  25. volumes:
  26. - name: data
  27. emptyDir: {}
  28. - name: config
  29. configMap:
  30. name: example-redis-config
  31. items:
  32. - key: redis-config
  33. path: redis.conf
  1. curl -OL https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/pods/config/redis-pod.yaml
  2. cat <<EOF >>./kustomization.yaml
  3. resources:
  4. - redis-pod.yaml
  5. EOF

应用整个 kustomization 文件夹以创建 ConfigMap 和 Pod 对象:

  1. kubectl apply -k .

使用以下命令检查创建的对象

  1. > kubectl get -k .
  2. NAME DATA AGE
  3. configmap/example-redis-config-dgh9dg555m 1 52s
  4. NAME READY STATUS RESTARTS AGE
  5. pod/redis 1/1 Running 0 52s

在示例中,配置卷挂载在 /redis-master 下。 它使用 pathredis-config 密钥添加到名为 redis.conf 的文件中。 因此,redis配置的文件路径为 /redis-master/redis.conf。 这是镜像将在其中查找 redis master 的配置文件的位置。

使用 kubectl exec 进入 pod 并运行 redis-cli 工具来验证配置已正确应用:

  1. kubectl exec -it redis -- redis-cli
  2. 127.0.0.1:6379> CONFIG GET maxmemory
  3. 1) "maxmemory"
  4. 2) "2097152"
  5. 127.0.0.1:6379> CONFIG GET maxmemory-policy
  6. 1) "maxmemory-policy"
  7. 2) "allkeys-lru"

删除创建的 pod:

  1. kubectl delete pod redis

接下来