首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
基础
使用 Minikube 创建集群
使用 kubectl 创建 Deployment
查看 pod 和工作节点
使用 Service 暴露你的应用
运行应用程序的多个实例
执行滚动更新
使用 ConfigMap 来配置 Redis
使用 AppArmor 限制容器对资源的访问
在集群级别应用 Pod 安全标准
在名字空间级别应用 Pod 安全标准
使用 seccomp 限制容器的系统调用
公开外部 IP 地址以访问集群中应用程序
使用 Redis 部署 PHP 留言板应用程序
StatefulSet 基础
使用持久卷部署 WordPress 和 MySQL
使用 StatefulSet 部署 Cassandra
运行 ZooKeeper
服务器端应用API
客户端库
用户认证
使用启动引导令牌
证书签名请求
准入控制器
管理服务账号
使用 RBAC 鉴权
当前位置:
首页>>
技术小册>>
Kubernetes中文教程(六)
小册名称:Kubernetes中文教程(六)
这篇文档基于[配置 Pod 以使用 ConfigMap] 这个任务,提供了一个使用 ConfigMap 来配置 Redis 的真实案例。 * 使用 Redis 配置的值创建一个 ConfigMap * 创建一个 Redis Pod,挂载并使用创建的 ConfigMap * 验证配置已经被正确应用 * 此页面上显示的示例适用于 `kubectl` 1.14 及以上的版本。 * 理解[配置 Pod 以使用 ConfigMap]。 ## 真实世界的案例:使用 ConfigMap 来配置 Redis 按照下面的步骤,使用 ConfigMap 中的数据来配置 Redis 缓存。 首先创建一个配置模块为空的 ConfigMap: ```shell cat <<EOF >./example-redis-config.yaml apiVersion: v1 kind: ConfigMap metadata: name: example-redis-config data: redis-config: "" EOF ``` 应用上面创建的 ConfigMap 以及 Redis pod 清单: ```shell kubectl apply -f example-redis-config.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/pods/config/redis-pod.yaml ``` 检查 Redis pod 清单的内容,并注意以下几点: * 由 `spec.volumes[1]` 创建一个名为 `config` 的卷。 * `spec.volumes[1].items[0]` 下的 `key` 和 `path` 会将来自 `example-redis-config` ConfigMap 中的 `redis-config` 密钥公开在 `config` 卷上一个名为 `redis.conf` 的文件中。 * 然后 `config` 卷被 `spec.containers[0].volumeMounts[1]` 挂载在 `/redis-master`。 这样做的最终效果是将上面 `example-redis-config` 配置中 `data.redis-config` 的数据作为 Pod 中的 `/redis-master/redis.conf` 公开。 检查创建的对象: ```shell kubectl get pod/redis configmap/example-redis-config ``` 你应该可以看到以下输出: ``` NAME READY STATUS RESTARTS AGE pod/redis 1/1 Running 0 8s NAME DATA AGE configmap/example-redis-config 1 14s ``` 回顾一下,我们在 `example-redis-config` ConfigMap 保留了空的 `redis-config` 键: ```shell kubectl describe configmap/example-redis-config ``` 你应该可以看到一个空的 `redis-config` 键: ```shell Name: example-redis-config Namespace: default Labels: <none> Annotations: <none> Data ==== redis-config: ``` 使用 `kubectl exec` 进入 pod,运行 `redis-cli` 工具检查当前配置: ```shell kubectl exec -it redis -- redis-cli ``` 查看 `maxmemory`: ```shell 127.0.0.1:6379> CONFIG GET maxmemory ``` 它应该显示默认值 0: ```shell 1) "maxmemory" 2) "0" ``` 同样,查看 `maxmemory-policy`: ```shell 127.0.0.1:6379> CONFIG GET maxmemory-policy ``` 它也应该显示默认值 `noeviction`: ```shell 1) "maxmemory-policy" 2) "noeviction" ``` 现在,向 `example-redis-config` ConfigMap 添加一些配置: 应用更新的 ConfigMap: ```shell kubectl apply -f example-redis-config.yaml ``` 确认 ConfigMap 已更新: ```shell kubectl describe configmap/example-redis-config ``` 你应该可以看到我们刚刚添加的配置: ```shell Name: example-redis-config Namespace: default Labels: <none> Annotations: <none> Data ==== redis-config: ---- maxmemory 2mb maxmemory-policy allkeys-lru ``` 通过 `kubectl exec` 使用 `redis-cli` 再次检查 Redis Pod,查看是否已应用配置: ```shell kubectl exec -it redis -- redis-cli ``` 查看 `maxmemory`: ```shell 127.0.0.1:6379> CONFIG GET maxmemory ``` 它保持默认值 0: ```shell 1) "maxmemory" 2) "0" ``` 同样,`maxmemory-policy` 保留为默认设置 `noeviction`: ```shell 127.0.0.1:6379> CONFIG GET maxmemory-policy ``` 返回: ```shell 1) "maxmemory-policy" 2) "noeviction" ``` 配置值未更改,因为需要重新启动 Pod 才能从关联的 ConfigMap 中获取更新的值。 让我们删除并重新创建 Pod: ```shell kubectl delete pod redis kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/pods/config/redis-pod.yaml ``` 现在,最后一次重新检查配置值: ```shell kubectl exec -it redis -- redis-cli ``` 查看 `maxmemory`: ```shell 127.0.0.1:6379> CONFIG GET maxmemory ``` 现在,它应该返回更新后的值 2097152: ```shell 1) "maxmemory" 2) "2097152" ``` 同样,`maxmemory-policy` 也已更新: ```shell 127.0.0.1:6379> CONFIG GET maxmemory-policy ``` 现在它反映了期望值 `allkeys-lru`: ```shell 1) "maxmemory-policy" 2) "allkeys-lru" ``` 删除创建的资源,清理你的工作: ```shell kubectl delete pod/redis configmap/example-redis-config ```
上一篇:
执行滚动更新
下一篇:
使用 AppArmor 限制容器对资源的访问
该分类下的相关小册推荐:
Kubernets合辑14-日志收集
Kubernets合辑8-权限控制
Kubernets合辑10-网络
Kubernetes合辑1-安装Kubernetes
Kubernetes中文教程(一)
Kubernets合辑2-部署Ingress
Kubernets合辑13-集群监控
云原生-K8S入门实战
Kubernets合辑4-kubernetes入门
Kubernets合辑3-kubernetes介绍
Kubernetes中文教程(二)
Kubernets合辑6-服务发现