kubernetes实战-配置中心(一)configmap资源
在我们的环境中测试使用configmap资源,需要先对我们的环境进行一些准备,首先将dubbo服务调整为0个pod ,然后把zookeeper进行拆分:


拆分zk环境,模拟测试环境跟生产环境:

停止zookeeper:
# sh /opt/zookeeper/bin/zkServer.sh stop
# rm -rf /data/zookeeper/data/*
# rm -rf /data/zookeeper/logs/*
# vi /opt/zookeeper/conf/zoo.cfg
注释掉集群配置:

启动zookeeper:
# sh /opt/zookeeper/bin/zkServer.sh start

创建资源配置清单:
1、cm.yaml 红色部分是配置文件的name,下面的是内容。
apiVersion: v1
kind: ConfigMap
metadata:
name: dubbo-monitor-cm
namespace: infra
data:
dubbo.properties: |
dubbo.container=log4j,spring,registry,jetty
dubbo.application.name=simple-monitor
dubbo.application.owner=OldboyEdu
dubbo.registry.address=zookeeper://zk1.od.com:2181
dubbo.protocol.port=20880
dubbo.jetty.port=8080
dubbo.jetty.directory=/dubbo-monitor-simple/monitor
dubbo.charts.directory=/dubbo-monitor-simple/charts
dubbo.statistics.directory=/dubbo-monitor-simple/statistics
dubbo.log4j.file=/dubbo-monitor-simple/logs/dubbo-monitor.log
dubbo.log4j.level=WARN
2、dp-cm.yaml
在dp里面如何使用configmap资源:
首先声明一个卷,卷的名字叫configmap-volume,然后指定这个卷使用的configmap
然后定义这个卷的挂载,挂载到哪里。
# vi dp-cm.yaml
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: dubbo-monitor
namespace: infra
labels:
name: dubbo-monitor
spec:
replicas: 1
selector:
matchLabels:
name: dubbo-monitor
template:
metadata:
labels:
app: dubbo-monitor
name: dubbo-monitor
spec:
containers:
- name: dubbo-monitor
image: harbor.od.com/infra/dubbo-monitor:latest
ports:
- containerPort: 8080
protocol: TCP
- containerPort: 20880
protocol: TCP
imagePullPolicy: IfNotPresent
volumeMounts:
- name: configmap-volume
mountPath: /dubbo-monitor-simple/conf
volumes:
- name: configmap-volume
configMap:
name: dubbo-monitor-cm
imagePullSecrets:
- name: harbor
restartPolicy: Always
terminationGracePeriodSeconds: 30
securityContext:
runAsUser: 0
schedulerName: default-scheduler
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
revisionHistoryLimit: 7
progressDeadlineSeconds: 600
应用资源配置清单:
# kubectl apply -f http://k8s-yaml.od.com/dubbo-monitor/cm.yaml
# kubectl apply -f http://k8s-yaml.od.com/dubbo-monitor/dp-cm.yaml
去dashboard查看configmap资源:

我们可以创建多个configmap资源,然后在dp中去挂载应用这些configmap资源,达到修改配置的功能。
我们检查一下我们的容器:
# kubectl get pod -n infra
已经起来了

我们检查一下我们挂载的配置是不是我们定义的configmap资源中的配置:
# kubectl exec -it dubbo-monitor-6676dd74cc-pvf2f -n infra /bin/bash
我们把配置文件挂载到了/dubbo-monitor-simple/conf 这里,我们去看一下。(上面的dp-cm.yaml中声明的)
# cat /dubbo-monitor-simple/conf/dubbo.properties

跟我们定义的一模一样。
这里如果想更换配置,有两种方法:
一、修改configmap 资源,然后apply一下更新资源,然后重启挂载这个configmap资源的dp。
二、准备多个configmap资源,然后在dp中更改挂载的configmap,apply以后,dp自动重启。
检查dubbo-monitor页面的注册信息:


连接的zk1.od.com,下面我们模拟更换configmap资源,来切换环境:
这里使用第二种方法,准备多个configmap,我们在准备一个configmap,就叫cm-pro.yaml:
# cp cm.yaml cm-pro.yaml
# vi cm-pro.yaml
然后我们把服务注册到zk2.od.com上:
把资源名字改成dubbo-monitor-cm-pro

把服务注册到zk2上:

应用一下cm-pro.yaml:
# kubectl apply -f http://k8s-yaml.od.com/dubbo-monitor/cm-pro.yaml


然后我们修改dp-cm.yaml:

然后apply这个dp-cm.yaml:
# kubectl apply -f http://k8s-yaml.od.com/dubbo-monitor/dp-cm.yaml
新的已经起来了,我们进去看看是不是应用的新的configmap配置:

# kubectl exec -it dubbo-monitor-5cb756cc6c-xtnrt -n infra /bin/bash
# cat /dubbo-monitor-simple/conf/dubbo.properties

已经生效了。
更新configmap资源来更改配置需要更新(删除/apply/update)pod,否则无效。
看下dubbo-monitor的页面:已经是zk2了。

但是注意,我们这里使用的是mountPath,这个是挂载整个目录,会使容器内的被挂载目录中原有的文件不可见,可以看见我们原来脚本中的命令已经无法对挂载的目录操作了。
查看我们pod容器启动的命令可以看见:如果想单独挂载一个配置配件,而不是整个目录,如何操作:

这里我使用之前的nginx:curl来做如何挂载单个的文件:
查看资源key的使用方法:
# kubectl explain pod.spec.containers.volumeMounts
这里有个挂载方法是:subPath,使用这个方法,可以挂载指定的文件,要结合mountPath来使用:

查看我们原来实验做的nginx:curl这个容器:在default命名空间里。
我们实验的需求,把dubbo.properties这个配置文件挂载到/usr/lib/目录下,并且保证原来容器内/usr/lib/目录下的文件都还在:
# kubectl get pod

进入容器查看容器内/usr/lib/下有哪些文件:

在default命名空间下创建configmap资源:

应用configmap资源配置清单:
# kubectl apply -f http://k8s-yaml.od.com/nginx-ds/cm.yaml

然后修改这个容器的资源配置清单:
# kubectl edit ds nginx-ds -n default
挂载configmap资源:一定要注意格式跟缩进~~~~

然后重启pod
登录进容器中,查看:


经过对比,我们原来/usr/lib/下的文件还在,并且新增了一个配置文件dubbo-properties这个配置文件。
kubernetes实战-配置中心(一)configmap资源的更多相关文章
- kubernetes实战-配置中心(四)分环境使用apollo配置中心
要进行分环境,需要将现有实验环境进行拆分 portal服务,可以各个环境共用,但是apollo-adminservice和apollo-configservice必须要分开. 1.zk环境拆分为tes ...
- kubernetes实战-配置中心(二)交付apollo配置中心到k8s
apollo官网:官方地址 apollo架构图: apollo需要使用数据库,这里使用mysql,注意版本需要在5.6以上: 本次环境mysql部署在10.4.7.11上,使用mariadb:10.1 ...
- kubernetes实战-配置中心(三)配置服务使用apollo配置中心
使用配置中心,需要开发对代码进行调整,将一些配置,通过变量的形式配置到apollo中,服务通过配置中心来获取具体的配置 在配置中心修改新增如下配置: 项目信息: 配置: 重新打包镜像,使用apollo ...
- Kubernetes 实战——配置应用(ConfigMap、Secret)
配置容器化应用的方式:①命令行参数:②环境变量:③文件化配置 一.向容器传递命令行参数或环境变量 这两种方式在 Pod 创建后不可被修改 1. 在Docker中定义命令与参数 ENTRYPOINT:容 ...
- Spring Cloud Config 配置中心实践过程中,你需要了解这些细节!
本文导读: Spring Cloud Config 基本概念 Spring Cloud Config 客户端加载流程 Spring Cloud Config 基于消息总线配置 Spring Cloud ...
- K8S(10)配置中心实战-configmap资源
k8s配置中心实战-configmap资源 目录 k8s配置中心实战-configmap资源 0 configmap前置说明 0.1.1 configmap和secret 0.1.2 怎么使用conf ...
- (转)实验文档3:在kubernetes集群里集成Apollo配置中心
使用ConfigMap管理应用配置 拆分环境 主机名 角色 ip HDSS7-11.host.com zk1.od.com(Test环境) 10.4.7.11 HDSS7-12.host.com zk ...
- K8S(11)配置中心实战-单环境交付apollo三组件
k8s配置中心实战-交付apollo三组件 目录 k8s配置中心实战-交付apollo三组件 1 apollo简单说明 1.1 apollo最简架构图: 1.2 apollo组件部署关系 2 为app ...
- K8S(12)配置中心实战-多环境交付apollo三组件
k8s配置中心实战-多环境交付apollo三组件 目录 k8s配置中心实战-多环境交付apollo三组件 1.环境准备工作 1.1 zk环境拆分 1.2 namespace分环境 1.3 数据库拆分 ...
随机推荐
- 24v转3.3v稳压芯片,高效率DC-DC变换器3A输出电流
PW6206系列是一个高精度,高输入电压低静态电流,高速,低功耗降线性稳压器具有高纹波抑制.输入电压高达40V,负载电流为在VOUT=5V和VIN=7V时高达300mA.该设备采用BCD工艺制造.PW ...
- 集成Redis缓存
一.简介 1.场景 由于首页数据变化不是很频繁,而且首页访问量相对较大,所以我们有必要把首页数据缓存到redis中,减少数据库压力和提高访问速度. 2.RedisTemplate Jedis是Redi ...
- 人工智能"眼睛"——摄像头
摄像头机器视觉人工智能的"眼睛",其重要性在嵌入式领域不言而喻.但是如何理解和使用摄像头却是一个非常棘手的问题.本文主要针对调试摄像头过程中遇到的问题,对摄像头的基本原理及概述进行 ...
- Windows Server 2012 R2 英文版汉化安装中文语言包教程更改为中文版
是这样的,一台海外的windows机器默认是英文版的,但是特别费劲用起来,就更改为中文版,因为海外的供应商并不提供中文版镜像. 1.首先打开控制面板,找到add language,拉到底就是有中文,很 ...
- 用git合并分支时,如何保持某些文件不被合并
用git合并分支时,如何保持某些文件不被合并_fkaking的专栏-CSDN博客_git 合并分支 https://blog.csdn.net/fkaking/article/details/4495 ...
- 1.4.1 对象与JSON转化 1.4.2 JSON与List集合转化 1.1.1 获取json中的属性 day10-05
1.1.1 对象与JSON转化 @Test public void toJSON() throws IOException{ Jedis jedis = new Jedis("192.168 ...
- 济南学习D3T1__线性筛和阶乘质因数分解
[问题描述] 从1− N中找一些数乘起来使得答案是一个完全平方数,求这个完全平方数最大可能是多少. [输入格式] 第一行一个数字N. [输出格式] 一行,一个整数代表答案对100000007取模之后的 ...
- Spring Boot 系列总结
Spring Boot 系列总结 1.SpringBoot自动装配 1.1 Spring装配方式 1.2 Spring @Enable 模块驱动 1.3 Spring 条件装配 2.自动装配正文 2. ...
- Java——序列化与反序列化
序列化 序列化 序列化是什么 如何实现对象序列化 实战练习 Serializable 反序列化 总结 使用Reader读取文件内容1 使用Reader读取文件内容2 序列化是什么? 将对象的状态存储到 ...
- PL/SQL 学习分享(续)
事务 事务的概述 事务的特性 回滚点 事务实例练习 动态SQL 动态SQL概述 动态SQL应用场合 动态SQL的执行语法 绑定变量 动态SQL创建表 动态SQL绑定变量 动态SQL综合案例添加数据 使 ...