• 4、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 不使用配置文件配置!
  • 相关阅读:
    希尔排序算法
    java面向对象的栈 队列 优先级队列的比较
    java不用任何已有方法完全自写的去重法
    java面向对象的冒泡排序,选择排序和插入排序的比较
    java面向对象的有序数组和无序数组的比较
    Truncated incorrect DOUBLE value:
    laradock 安装多php版本
    graph-composer, 面向 composer.json的依赖图可视化( PHP + Composer )
    php基础
    php通过curl调用webservice
  • 原文地址:https://www.cnblogs.com/wangchaolinux/p/12037813.html
Copyright © 2020-2023  润新知