Kubernetes(k8s) 使用 ConfigMap 来配置 Redis

半兽人 发表于: 2020-10-17   最后更新时间: 2020-10-17  

目标

  • 创建一个包含以下内容的 kustomization.yaml 文件:

    • 一个 ConfigMap 生成器
    • 一个使用 ConfigMapPod 资源配置
  • 使用 kubectl apply -k ./ 应用整个路径的配置

  • 验证配置已经被正确应用。

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

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

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

maxmemory 2mb
maxmemory-policy allkeys-lru

执行

curl -OL https://k8s.io/examples/pods/config/redis-config

cat <<EOF >./kustomization.yaml
configMapGenerator:
- name: example-redis-config
  files:
  - redis-config
EOF

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

pods/config/redis-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: redis
spec:
  containers:
  - name: redis
    image: redis:5.0.4
    command:
      - redis-server
      - "/redis-master/redis.conf"
    env:
    - name: MASTER
      value: "true"
    ports:
    - containerPort: 6379
    resources:
      limits:
        cpu: "0.1"
    volumeMounts:
    - mountPath: /redis-master-data
      name: data
    - mountPath: /redis-master
      name: config
  volumes:
    - name: data
      emptyDir: {}
    - name: config
      configMap:
        name: example-redis-config
        items:
        - key: redis-config
          path: redis.conf
curl -OL https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/pods/config/redis-pod.yaml

cat <<EOF >>./kustomization.yaml
resources:
- redis-pod.yaml
EOF

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

kubectl apply -k .

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

> kubectl get -k .
NAME                                        DATA   AGE
configmap/example-redis-config-dgh9dg555m   1      52s

NAME        READY   STATUS    RESTARTS   AGE
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 工具来验证配置已正确应用:

kubectl exec -it redis -- redis-cli
127.0.0.1:6379> CONFIG GET maxmemory
1) "maxmemory"
2) "2097152"
127.0.0.1:6379> CONFIG GET maxmemory-policy
1) "maxmemory-policy"
2) "allkeys-lru"

删除创建的 pod:

kubectl delete pod redis


您需要解锁本帖隐藏内容请: 点击这里
本帖隐藏的内容




上一条: 强制删除 StatefulSet 类型的 Pods
下一条: 已经是最后了!