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 不使用配置文件配置!

最新文章

  1. Linux上如何查看物理CPU个数,核数,线程数
  2. UVA数学入门训练Round1[6]
  3. 【转载】Windows自带.NET Framework版本大全
  4. VMware虚拟机无法识别U盘解决方案
  5. MeasureSpec介绍
  6. Android ---时间工具类
  7. 2017-2-19 C#基础 数据类型
  8. 鸟哥Linux学习笔记03
  9. orcale和hive常用函数对照表(?代表未证实)
  10. jvisualvm远程监控 visualgc插件 不受此jvm支持问题
  11. IIS安装、配置 发布网站 报错解决方案
  12. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)A,B,C
  13. Selenium Web 自动化 - Selenium常用API
  14. linux下的网络通信设置:openssh、PuTTY、tightVNC
  15. pannel加载form
  16. DrawDibDraw__ZC测试
  17. makefile--参数传递、条件判断、include (五)
  18. 说说SPI协议
  19. 编写第一个springboot应用
  20. JDBC 的使用

热门文章

  1. Spring Boot系列之-profile
  2. 【kubeconfig】kubectl命令所使用的集群访问文件
  3. JS中search查找某些内容,正则表达式|查找分隔的任何项
  4. C# 获取或设置指定 config 文件的值
  5. Keil MDK仿真调试STM32的时候直接进入SystemInit函数
  6. colaboratory安装指定版本的tensorflow
  7. git取消追踪本地某个文件
  8. Zuul【基础配置】
  9. Win32小游戏--贪吃蛇
  10. 根据IP获取国家,市区,经纬度等的免费库