首页 > Web开发 > 详细

kubernetes---ConfigMap管理应用配置

时间:2019-12-14 00:40:41      阅读:154      评论:0      收藏:0      [点我收藏+]

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管理应用配置

原文:https://www.cnblogs.com/wangchaolinux/p/12037813.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!