前言
本文為〈Kubernetes 官方文件〉的學習筆記。
環境
概述
本文使用 ConfigMap 来配置一個 Redis 服務。
做法
首先,建立一個 redis-config
設定檔:
1 2 3 4
| cat <<EOF >./redis-config maxmemory 2mb maxmemory-policy allkeys-lru EOF
|
建立一個 kustomization.yaml
檔:
1 2 3 4 5 6
| cat <<EOF >./kustomization.yaml configMapGenerator: - name: example-redis-config files: - redis-config EOF
|
建立名為 redis-pod
的 Pod 定義檔:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| 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
|
將 Pod 定義檔添加到 kustomization.yaml
檔中:
1 2 3 4
| cat <<EOF >./kustomization.yaml resources: - redis-pod.yaml EOF
|
現在 kustomization.yaml
檔如下:
1 2 3 4 5 6
| configMapGenerator: - name: example-redis-config files: - redis-config resources: - redis-pod.yaml
|
創建 Pod 和 ConfigMap 物件:
檢查創建的物件:
輸出如下:
1 2 3 4 5
| NAME DATA AGE configmap/example-redis-config-dgh9dg555m 1 9s
NAME READY STATUS RESTARTS AGE pod/redis 1/1 Running 0 9s
|
在此範例中,設定卷掛載在 /redis-master
資料夾下,它使用 path
字段將 redis-config
的內容添加到名為 redis.conf
檔中。因此,Redis 的配置檔路徑為 /redis-master/redis.conf
。這是鏡像將在其中查找 redis-master
的配置檔的位置。
使用 kubectl exec
指令進入 Pod,並運行 redis-cli
工具,來驗證配置已正確應用:
1 2 3 4 5 6 7
| 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。
1
| kubectl delete pod redis
|