kubernetes---ConfigMap管理应用配置
1.拆分环境
| 主机名 | 角色 | ip |
|---|---|---|
| hdss7-11.host.com | zk1.od.com(Test环境) | 10.4.7.11 |
| hdss7-12.host.com | zk2.od.com(Prod环境) | 10.4.7.12 |
2.重配zookeeper
hdss7-11和hdss7-12上拆分成两个单独的zookeeper,不组成集群
[root@hdss7-11 bin]# ./zkServer.sh stop
[root@hdss7-12 bin]# ./zkServer.sh stop
[root@hdss7-11 zookeeper]# tree /data/zookeeper /删除data和logs下所有文件
.
├── data
└── logs
2 directories, 0 files
[root@hdss7-12 zookeeper]# tree /data/zookeeper /删除data和logs下所有文件
.
├── data
└── logs
2 directories, 0 files
[root@hdss7-11 bin]# vi /opt/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
[root@hdss7-12 bin]# vi /opt/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
[root@hdss7-11 bin]# ./zkServer.sh start
[root@hdss7-12 bin]# ./zkServer.sh start
[root@hdss7-11 bin]# ./zkServer.sh status
Mode: standalone
[root@hdss7-12 bin]# ./zkServer.sh status
Mode: standalone
3.准备资源配置清单(dubbo-monitor)
在运维主机hdss7-200上
[root@hdss7-200 dubbo-monitor]# pwd
/data/k8s-yaml/dubbo-monitor
[root@hdss7-200 dubbo-monitor]# vi cm.yaml
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
[root@hdss7-200 dubbo-monitor]# vi dp2.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
4.应用资源配置清单
任意运算节点上,这里为hdss7-21
[root@hdss7-21 bin]# kubectl apply -f http://k8s-yaml.od.com/dubbo-monitor/cm.yaml
configmap/dubbo-monitor-cm created
[root@hdss7-21 bin]# kubectl apply -f http://k8s-yaml.od.com/dubbo-monitor/dp2.yaml
deployment.extensions/dubbo-monitor configured
5.重新发版,修改dubbo项目的配置文件
可以看到registry现在是zk1.od.com


修改configmap并重启pod
step1:编辑configmap

step2:修改 dubbo.registry.address=zookeeper://zk2.od.com:2181

step3:重启pod

6.验证configmap的配置
访问dubbo-monitor.od.com

dashboard里进pod查看:

7.kubectl陈述式方式创建ConfigMap
- 例如 kebelet.kubeconfig这种配置文件,如果写进yaml文件会很恶心,尤其是空格要求很严格,这时候我们就需要用到kubectl方式创建configmap
//创建
[root@hdss7-21 ~]# kubectl create cm kubelet-cm --from-file=/opt/kubernetes/server/bin/conf/kubelet.kubeconfig -n default
configmap/kubelet-cm created
//查看
[root@hdss7-21 ~]# kubectl get cm kubelet-cm -n default
NAME DATA AGE
kubelet-cm 1 56s
[root@hdss7-21 ~]# kubectl get cm kubelet-cm -o yaml -n default
apiVersion: v1
data:
kubelet.kubeconfig: |
apiVersion: v1
clusters:
- cluster:
。。。略
dashboard查看:

8.大型翻车现场----flannel
问题产生原因:
- 启动flanel网络的时候,没有读取到 subnet.env的环境变量 FLANNEL_SUBNET
问题发生过程:
- 1 启动flanel 没有读取到子网的信息,导致flannel 认为先前的子网为 None,触发xx机制,使用随机分配子网的方式
Wrote subnet file to /run/flannel/subnet.env 此句是没有读取到脚本中的subne.env 会在此目录下生成一个
Wrote subnet file to ./subnet.env 如果读取到会在你的配置下重点 重写这个文件,所以所你启动以后,这个文件是要被重写的,里面配置的内容只是起个引导作用,认为你上一次用的网络是你配置文件中的网络 - 2 将随机分配的网络写入ETCD数据库
coreos.com/network/subnets/172.7.204.0-24 后边的地址是route -n 能看到的地址 - 3 如果数据库中存在数据,不会读取 subnet.env中的数据,会直接读取ETCD中的数据
我测试了删除整个文件,里边所有数据都会生成,
172.7.204.1/24 这个是根据 /coreos.com/network/subnets/172.7.204.0-24 这个key 下的这个数据生成的
FLANNEL_NETWORK=172.7.0.0/16 这个数据还没有找到生成的key 我手动修改了network的配置,但是还是没有成功 - 4 配置 etcdkeeper
1 下载:https://github.com/evildecay/etcdkeeper/releases地址
2 在etcd服务器解压
3 chmod +x etcdkeeper
4 ./etcdkeeper -h 0.0.0.0 -p 8800 直接在前台运行
5 在浏览器查看数据
6 kubernetes 使用的是etcd v3 协议 flanel 使用的是 etcd v2 协议,要注意选择协议版本
建议
- node 节点的路由信息,直接写入etcd 不使用配置文件配置!
kubernetes---ConfigMap管理应用配置的更多相关文章
- k8s通过configmap管理应用配置信息
Secret 可以为 Pod 提供密码.Token.私钥等敏感数据:对于一些非敏感数据,比如应用的配置信息,则可以用 ConfigMap. ConfigMap 的创建和使用方式与 Secret 非常类 ...
- Kubernetes configMap(配置文件存储)
Kubernetes configMap(配置文件存储) 官方文档:https://kubernetes.io/docs/tasks/configure-pod-container/configure ...
- kubernetes Configmap secret的使用
kubernetes configmap 核心作用是让配置信息和镜像解耦,pod可以使用configmap的数据生成配置文件.如果后端的pod配置文件要改变时,只需要更改下configmap里面的数据 ...
- Kubernetes 对象管理的三种方式
Kubernetes 中文文档 1. Kubernetes 对象管理的三种方式对比 Kubernetes 中的对象管理方式,根据对象配置信息的位置不同可以分为两大类: 命令式:对象的参数通过命令指定 ...
- Kubernetes ConfigMap热更新
ConfigMap是用来存储配置文件的kubernetes资源对象,所有的配置内容都存储在etcd中. 总结 更新 ConfigMap 后: 使用该 ConfigMap 挂载的 Env 不会同步更新 ...
- SUPERVISOR进程管理器配置指南
SUPERVISOR进程管理器配置指南1. supervisor简介1.1. 官网http://supervisord.org/ 1.2. 介绍Supervisor是一个进程控制系统. 它是一个C/S ...
- 3,linux入门到上手-文件权限管理与配置
linux入门-文件权限管理与配置 一.关于linux的操作命令一般格式如下: 1,一行指令中第一个输入的部分绝对是"指令(command)"或"可可执行文件案(例如批次 ...
- 自学华为IoT物联网_10 IoT联接管理平台配置及开发实验1
点击返回自学华为IoT物流网 自学华为IoT物联网_10 IoT联接管理平台配置及开发实验1 实验1:OceanConnect平台实验 通过基本的编程操作与配置,帮助读者熟悉O ...
- Delphi 的 FireDAC 连接管理与配置过程
Delphi 的 FireDAC 连接管理与配置过程: 使用 FireDAC 技术连接 数据库,主要是使用 TFDConnection ,其中有一参数是选择 ConnectionDefFile. ...
- OCM_第十七天课程:Section7 —》GI 及 ASM 安装配置 _管理和配置 GRID /实施 ASM 故障组 /创建 ACFS 文件系统
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...
随机推荐
- 【分布式一致性】etcd
etcd: https://jimmysong.io/kubernetes-handbook/concepts/etcd.html 什么是 分布式一致性: http://thesecretliveso ...
- Codeforces Round #556 (Div. 2) D. Three Religions 题解 动态规划
题目链接:http://codeforces.com/contest/1150/problem/D 题目大意: 你有一个参考串 s 和三个装载字符串的容器 vec[0..2] ,然后还有 q 次操作, ...
- 【Leetcode_easy】892. Surface Area of 3D Shapes
problem 892. Surface Area of 3D Shapes 题意:感觉不清楚立方体是如何堆积的,所以也不清楚立方体之间是如何combine的.. Essentially, compu ...
- 通过iis启动服务,会产生C:/inetpub/logs/logsFile产生大量的日志,定期清理
[转]https://www.cnblogs.com/Martianhh/p/5312495.html bat文件内容如下,加入到计划任务执行 :: 清理IIS日志文件 :: 备份MySql数据库 @ ...
- golang 使用kcp实例
简介kcp的具体概念与定义自行百度,特性可以浓缩为一句话,和tcp一样可靠,速度比tcp快,是一个用带宽换速度的新型协议.网上的示例代码很少,特此写一篇golang下的kcp实例. PS本文仅对ksp ...
- 基于vue-cli、elementUI的Vue简单入门例子
vue-cli.elementUI的安装教程请看: https://www.cnblogs.com/joe235/p/12013818.html 把HelloWorld.vue文件修改为: <t ...
- RabbitMQ官方教程五 Topic(GOLANG语言实现)
在上一教程中,我们改进了日志记录系统. 我们没有使用只能进行虚拟广播的fanout交换器,而是使用直接交换器,并有可能选择性地接收日志. 尽管使用直接交换改进了我们的系统,但它仍然存在局限性-它不能基 ...
- 虚拟机中使用Samba实现文件共享
首先我们给虚拟机安装samba服务(如果搭的是别的仓库记得开仓库) 输入命令:yum install samba samba服务的配置文件在,我们来看一下/etc/samba/smb.conf 输入命 ...
- 任务调度Quartz.Net之Windows Service
这个应该是关于Quartz.Net使用的最后一篇文章了,之前的介绍都是基于Web的,这种实现任务调度的方式很少见,因为不管是MVC.WebApi还是WebService,它们都需要寄宿在IIS上运行, ...
- LeetCode 20. 有效的括号(Valid Parentheses)
20. 有效的括号 20. Valid Parentheses 题目描述 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须 ...