07-Kubernetes中的ConfigMap

在 Kubernetes 中,挂载目录可以用 PV&PVC,但挂载配置文件,比如挂载 Redis、RabbitMQ等中间件的配置文件,却是推荐使用 ConfigMap(配置集)。

使用 ConfigMap 主要有两个步骤:

  • 将原有的配置文件,创建为配置集
  • 引用配置集进行使用

下面以 Redis 为例,进行实践。

1. 创建配置集

方式一:使用命令行方式

# 创建配置,redis保存到k8s的etcd;
kubectl create cm redis-conf-map --from-file=redis.conf

方式二:使用yaml文件方式

(1)新建一个 redis-config.yaml 文件,内容如下

apiVersion: v1
data:    #data是所有真正的数据,key:默认是文件名   value:配置文件的内容
  redis.conf: |
    appendonly yes
kind: ConfigMap
metadata:
  name: redis-conf-map
  namespace: default

(2)应用上面的文件

kubectl apply -f redis-config.yaml

(3)查看结果

kubectl get cm

2. 创建 Pod

(1)新建一个 redis-pod.yaml 文件,内容如下

apiVersion: v1
kind: Pod
metadata:
  name: redis
spec:
  containers:
  - name: redis
    image: redis
    command:
      - redis-server
      - "/redis-master/redis.conf"  #指的是redis容器内部的位置
    ports:
    - containerPort: 6379
    volumeMounts:
    - mountPath: /data # Pod内部要挂载的目录
      name: data
    - mountPath: /redis-master 
      name: config  # 映射到volumes下面的 name
  volumes:
    - name: data
      emptyDir: {} # k8s自动分配目录
    - name: config
      configMap: # 配置集方式
        name: redis-conf-map # 通过名称查找对应配置集
        items:
        - key: redis.conf
          path: redis.conf # 映射到Pod里面的/redis-master/redis.conf文件

(2)应用一下

kubectl apply -f redis-pod.yaml

(3)查看创建结果

kubectl get pod

3. 测试一下

(1)在 master 结点,更改配置文件

# 查看cm信息
kubectl get cm
# 更改cm信息,往里面加入新的配置信息,并保存退出
kubectl edit cm redis-conf-map

(2)进入到对应的 Redis 的 Pod 内部,查看是否将变更信息更新到配置文件中

cd /redis-master/

cat redis.conf

(3)如果配置文件中有变更信息,证明成功。

总结:修改了 ConfigMap,Pod 里面的配置文件也会跟着变更;但如果配置文件没有生效,则需要重启 Pod,以应用到最新的配置文件信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Helm 命令来安装 logstash-input-kubernetes,步骤如下: 1. 添加 Elastic 官方的 Helm 仓库: ``` helm repo add elastic https://helm.elastic.co ``` 2. 创建一个 Helm chart: ``` helm create my-logstash-kubernetes ``` 3. 打开 my-logstash-kubernetes/values.yaml 文件,添加以下配置: ``` esHost: "elasticsearch-master.elasticsearch.svc.cluster.local" esPort: "9200" image: "docker.elastic.co/logstash/logstash-oss:7.11.2" ``` 这些配置项指定了 Elasticsearch 的主机和端口,以及使用的 Logstash 镜像。 4. 打开 my-logstash-kubernetes/templates/deployment.yaml 文件,添加以下部分: ``` - name: logstash-input-kubernetes image: {{ .Values.image }} env: - name: LOGSTASH_JAVA_OPTS value: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=localhost" args: - "-f" - "/usr/share/logstash/pipeline/logstash.conf" - "--config.reload.automatic" - "--config.reload.interval=5s" volumeMounts: - name: config mountPath: /usr/share/logstash/pipeline/logstash.conf subPath: logstash.conf ports: - containerPort: 5044 resources: limits: cpu: 1000m memory: 2Gi requests: cpu: 500m memory: 1Gi ``` 这个部分定义了一个名为 logstash-input-kubernetes 的容器,使用了之前指定的 Logstash 镜像,并挂载了一个名为 config 的 ConfigMap。 5. 打开 my-logstash-kubernetes/templates/service.yaml 文件,添加以下部分: ``` - name: logstash-input-kubernetes port: 5044 targetPort: 5044 ``` 这个部分定义了一个名为 logstash-input-kubernetes 的服务,使用了之前定义的端口。 6. 创建一个 ConfigMap,用于存储 Logstash 的配置文件: ``` kubectl create configmap my-logstash-config --from-file=logstash.conf=./logstash.conf ``` 7. 使用 Helm 命令安装 Logstash: ``` helm install my-logstash-kubernetes elastic/logstash --values=my-logstash-kubernetes/values.yaml ``` 这个命令会创建一个名为 my-logstash-kubernetes 的 Kubernetes 部署,并启动一个名为 logstash-input-kubernetes 的容器。容器会使用之前创建的 ConfigMap 的配置文件来处理 Kubernetes 的日志数据,并将数据发送到 Elasticsearch。 以上就是使用 Helm 安装 logstash-input-kubernetes 的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值