文章目录


运维八荣八耻

【K8S运维知识汇总】第6天1:微服务架构之配置中心选型_2d

配置中心概述

配置其实是独立于程序的可配变量,同一份程序在不同配置下会有不同的行为,
常见的配置有连接字符串,应用配置和业务配置等。
配置有多种形态,下面是一些常见的:
程序内部hardcode,这种做法是反模式,一般我们不建议!
配置文件,比如Spring应用程序的配置一般放在application.properties文件中。
环境变量,配置可以预置在操作系统的环境变量里头,程序运行时读取。
启动参数,可以在程序启动时一次性提供参数,例如java程序启动时可以通过java -D方式配启动参数。
基于数据库,有经验的开发人员会把易变配置放在数据库中,这样可以在运行期灵活调整配置。

【K8S运维知识汇总】第6天1:微服务架构之配置中心选型_3d_02


【K8S运维知识汇总】第6天1:微服务架构之配置中心选型_3d_03

使用ConfigMap管理应用配置

环境更改

1.停止dubbo微服务集群
持续集成环境中的Provider、Consumer、Monitor全部停止掉。

2.拆分zookeeper集群
为了模拟生产、测试、开发三种环境,将zookeeper集群拆分为独立的三个节点。
# hdss7-11,hdss7-12,hdss7-21 操作一致
[root@hdss7-11 ~]# /opt/zookeeper/bin/zkServer.sh stop
[root@hdss7-11 ~]# rm -fr /data/zookeeper/data/* /data/zookeeper/logs/* # 删除历史数据
[root@hdss7-11 ~]# sed -i '/^server/d' /opt/zookeeper/conf/zoo.cfg # 删除集群配置
[root@hdss7-11 ~]# /opt/zookeeper/bin/zkServer.sh start
[root@hdss7-11 ~]# /opt/zookeeper/bin/zkServer.sh status # 启动后,所有节点都为 standalone 模式
ZooKeeper JMX enabled by default
Using config: /opt/apps/zookeeper/bin/../conf/zoo.cfg
Mode: standalone

准备资源配置清单(dubbo-monitor)

运维主机k8s7-200.host.com操作:

1.configmap.yaml
[root@k8s7-200.host.com /data/k8s-yaml/dubbo-monitor]# cat /data/k8s-yaml/dubbo-monitor/configmap.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=Datacloak
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.deployment.yaml
[root@k8s7-200.host.com /data/k8s-yaml/dubbo-monitor]# cat /data/k8s-yaml/dubbo-monitor/deployment.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

3.应用资源配置清单
在任意一台k8s运算节点执行:
[root@k8s7-22.host.com ~]# kubectl apply -f http://k8s-yaml.od.com/dubbo-monitor/configmap.yaml
[root@k8s7-22.host.com ~]# kubectl apply -f http://k8s-yaml.od.com/dubbo-monitor/deployment.yaml

查看资源信息

【K8S运维知识汇总】第6天1:微服务架构之配置中心选型_zookeeper_04

【K8S运维知识汇总】第6天1:微服务架构之配置中心选型_3d_05


【K8S运维知识汇总】第6天1:微服务架构之配置中心选型_2d_06

切换生产环境

【K8S运维知识汇总】第6天1:微服务架构之配置中心选型_3d_07


【K8S运维知识汇总】第6天1:微服务架构之配置中心选型_3d_08

验证

【K8S运维知识汇总】第6天1:微服务架构之配置中心选型_3d_09


【K8S运维知识汇总】第6天1:微服务架构之配置中心选型_zookeeper_10

启动dubbo-service

【K8S运维知识汇总】第6天1:微服务架构之配置中心选型_2d_11


【K8S运维知识汇总】第6天1:微服务架构之配置中心选型_zookeeper_12

陈述式资源管理方法创建configmap

[root@k8s7-21.host.com /opt/kubernetes/conf]# kubectl create cm kubelet-cm --from-file=./kubelet.kubeconfig

【K8S运维知识汇总】第6天1:微服务架构之配置中心选型_zookeeper_13

[root@k8s7-21.host.com /opt/kubernetes/conf]# kubectl get cm kubelet-cm -o yaml
apiVersion: v1
data:
kubelet.kubeconfig: |
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR0RENDQXB5Z0F3SUJBZ0lVUnB6TU9VazI4TGx5RGJuWEs2SWk2aEdzTGVFd0RRWUpLb1pJaHZjTkFRRUwKQlFBd1lERUxNQWtHQTFVRUJoTUNRMDR4RURBT0JnTlZCQWdUQjJKbGFXcHBibWN4RURBT0JnTlZCQWNUQjJKbAphV3BwYm1jeEN6QUpCZ05WQkFvVEFtOWtNUXd3Q2dZRFZRUUxFd052Y0hNeEVqQVFCZ05WQkFNVENVUmhkR0ZqCmJHOWhhekFlRncweU1EQTRNREV4TWpBNE1EQmFGdzAwTURBM01qY3hNakE0TURCYU1HQXhDekFKQmdOVkJBWVQKQWtOT01SQXdEZ1lEVlFRSUV3ZGlaV2xxYVc1bk1SQXdEZ1lEVlFRSEV3ZGlaV2xxYVc1bk1Rc3dDUVlEVlFRSwpFd0p2WkRFTU1Bb0dBMVVFQ3hNRGIzQnpNUkl3RUFZRFZRUURFd2xFWVhSaFkyeHZZV3N3Z2dFaU1BMEdDU3FHClNJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURERmNzQnpzb1dCaXRNRTJCK0gzZFZnWFdCdURoL0tiUzQKRU9KVmI0UVYzTUtsVFFZTERaZ2Q5Y2lXOWViWk5abG13ZmFhbnRoU0ZWb1hnSkxBYjV5cnZhRVFiVlVuZWRZMwpwTW96VDdWV2hiTE1uNUU3UjRVTjRPcjlPU0tOM1pYVEtDTENkd3Nqb09HZVVDdmp4T1FmVElBcE1TcUdOeFhTClB3U2VPNFZtMXFYUTRzUzhXQ0lxNG5uZkh6WGxRN0Nza040ZUpYb25zclNOUDlYN1luaE53MytNcDAyT2czd1MKak5hWFdIbDVJb1NVcTdXS3dncWdGZ1BpQjB6clV0bldTM1pTWGNFT0gvS3ViZXVNNFk2dERTZ0xQWVo2NDRzZwpRa3dLcThrSEUvNmlydlNOQXJhVXM2Q0dOa3gvZktCa0Zsbitqb0U2UU9HaTlnRnM4cEtGQWdNQkFBR2paakJrCk1BNEdBMVVkRHdFQi93UUVBd0lCQmpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01CMEdBMVVkRGdRV0JCU2MKQWxEaXpQd3pUa2JFQ21pZTRhS3prenIvOXpBZkJnTlZIU01FR0RBV2dCU2NBbERpelB3elRrYkVDbWllNGFLegprenIvOXpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVEvUWtIK3RpeGozQVlhRGsyZUtCSDFKSzBXUWlOQzZKCnU0WXdsdWtYbTdCRjdyYmV3UmNXeTE3RE1HNWk0c0N4WllhMks2NDFBWDFSSzVwYklyazVqYUh5MkorTWFhSzgKNVpJaUxnbkNJa2E0K0NGQ3Z6RkFVSFFsNjhFYWpHajJia0UzeWdVSU1kaCtWNzZaa3ErbVpia2oxcXN6eGk4MQpZN0doYlJWMllscDNkZWl6U2pHOWRaNFduRzhKVzBDMENWOEZWSUs0aFc1dmVOMkUvMUR1SkswNXVtalFMd28yCklyRFhSS2lHRUFBaXVnckFuNThXYS9sUlBLR3NjZTQwd0JyUXExL2NISG9SUUVwc05RcjlUUjJPSFVpckwrRGsKYkpUUXY3Q1dCb1l0Umw2V0I1YmdrSnFFZmMybnZiUzZWWTAyOFRmUjRTZ0ZrSDhDS3hNRGVBPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
server: https://10.4.7.10:7443
name: myk8s
contexts:
- context:
cluster: myk8s
user: k8s-node
name: myk8s-context
current-context: myk8s-context
kind: Config
preferences: {}
users:
- name: k8s-node
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR3akNDQXFxZ0F3SUJBZ0lVWUFSNFVBUHgvUnFIOXRVaTRncThyR2NUUFpFd0RRWUpLb1pJaHZjTkFRRUwKQlFBd1lERUxNQWtHQTFVRUJoTUNRMDR4RURBT0JnTlZCQWdUQjJKbGFXcHBibWN4RURBT0JnTlZCQWNUQjJKbAphV3BwYm1jeEN6QUpCZ05WQkFvVEFtOWtNUXd3Q2dZRFZRUUxFd052Y0hNeEVqQVFCZ05WQkFNVENVUmhkR0ZqCmJHOWhhekFlRncweU1EQTRNRFV3TlRVNE1EQmFGdzAwTURBM016RXdOVFU0TURCYU1GOHhDekFKQmdOVkJBWVQKQWtOT01SQXdEZ1lEVlFRSUV3ZGlaV2xxYVc1bk1SQXdEZ1lEVlFRSEV3ZGlaV2xxYVc1bk1Rc3dDUVlEVlFRSwpFd0p2WkRFTU1Bb0dBMVVFQ3hNRGIzQnpNUkV3RHdZRFZRUURFd2hyT0hNdGJtOWtaVENDQVNJd0RRWUpLb1pJCmh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo4ZDVMOUJLUGJwZTRaWHRQMzAxMUdjMkZXZnpKYVc5S2wKcnBnbCtWa0ZjeTlWTFFwUnVTSmtxMldvZDlKL2lza3Z2NVB3M3ZNNzY2K2RXZ1FRNlRQZXV5WnJJTldRbmJqbgpsN3dpeGFhcnp5SmVUVTZLaG5XMVl5VGIvV2ZNRWYweS9GdW0vWjNaV05UV2hNUFJ3RkhOK3hlc0RKM1VMYUlICnhZNlJlM0Fubml2SVl6RkljR2s2dTRObWZPNWlwRnREeG53OVBZZDY0eHU0T25OYVRLZzJMbmlQZzFSS3NubXUKNTBEWFp2Rld0dXlKbVM3aThFRFRIWDh0WmRUMlVIMm0xcVdTWHVPUXdWdHM1VTlyU3hLZStGUTNlVGh5cTJvcgpxOE1qOW9Id2FrdWdhdGJYS1Q5MUhaNDhNRzNnakw3NlRUQkJUU3F6VlE0eXRsYXh3L1VDQXdFQUFhTjFNSE13CkRnWURWUjBQQVFIL0JBUURBZ1dnTUJNR0ExVWRKUVFNTUFvR0NDc0dBUVVGQndNQ01Bd0dBMVVkRXdFQi93UUMKTUFBd0hRWURWUjBPQkJZRUZJUUxuU2phUkRYbUo1d2hmYllsMUVRVk16cWRNQjhHQTFVZEl3UVlNQmFBRkp3QwpVT0xNL0ROT1JzUUthSjdob3JPVE92LzNNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUMrK2hnL2JCOHRKVVlNCjk2VjExYVVvN3IrSXcvL2dKWlRYVjg0OWlENXQ2aWdaTWcwNTNPeHJFYTBLSkpNOW13M3N5RS9iWUFabG5KVUUKOEJCaFUwWFNLSUhFaW9OamEzNDFpcTFMUW93amV2T1I2a0l2aTFwNHVIZTVyUHI2YTI2T1VmL0EzWVYrdmU4YwpOVDlzdzh5dFVlUjB3ZVVqRXorc2QrR0hDSGlicmV1K2NWa2VwSm1LTmdGTW05bjZzdEYvME5nRnVzT1RQU2JqCmVzaTVaYnJzMCtEbWYrWkZxK280WUwrb09TMFdYZEhabzlVZ25qbDV3RUhiVDRKSi9pVFJ5RU1XMHRwNmUyUXkKeDdTQUN5WmFPY3FaSjM5TTVqaUlROGVBOGZzKzRaVTgwK1V0Smp5NWxtSUhPdGJxMEFlVitMdm96WUV3NmNYMAp3bkNmZlM5WQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBeG54M2t2MEVvOXVsN2hsZTAvZlRYVVp6WVZaL01scGIwcVd1bUNYNVdRVnpMMVV0CkNsRzVJbVNyWmFoMzBuK0t5Uysvay9EZTh6dnJyNTFhQkJEcE05NjdKbXNnMVpDZHVPZVh2Q0xGcHF2UElsNU4KVG9xR2RiVmpKTnY5Wjh3Ui9UTDhXNmI5bmRsWTFOYUV3OUhBVWMzN0Y2d01uZFF0b2dmRmpwRjdjQ2VlSzhoagpNVWh3YVRxN2cyWjg3bUtrVzBQR2ZEMDloM3JqRzdnNmMxcE1xRFl1ZUkrRFZFcXllYTduUU5kbThWYTI3SW1aCkx1THdRTk1kZnkxbDFQWlFmYWJXcFpKZTQ1REJXMnpsVDJ0TEVwNzRWRGQ1T0hLcmFpdXJ3eVAyZ2ZCcVM2QnEKMXRjcFAzVWRuand3YmVDTXZ2cE5NRUZOS3JOVkRqSzJWckhEOVFJREFRQUJBb0lCQUdHeit4Zzd2QUQ4cWgwZQpGL08zVmkvZjhnUEVGREN4RWVvSzdIcXdscUVmY2FlbkFkakdpWjlJZHFZLzIxdWV0SzU3OW8zWVQ2YmpwQXg2CkpFbEVHY2NTcUlVc3pxalIyeEdkenE4cFhxbkFnT0dtRWQvTGlJeUFrU0VmdVFsVEJyZmdWU0M0ZnJjb3VmVnEKODBlQkJHNUFPbzFZZjQxaFdHVWQ5ajFMbDd1SXBzQXJ1S3FiZC9zUFQ2LzJ6dEZLcHg5clE0SzE5UmNoQkhHeQpqbzJsYzdlR2MwVGg5NFk1ejl1ZTFZaDhteW1LejJySURrRFduUk9CL2FNQlhjVGNPL3BUaVUycU1XVzhkbmJsCkd6OERlS2VZTEVuc3dnUVpKSWtEUGJ5UDdaR09nWjF2elhGbHEwZWY4NEt2cXhkRWw2a3A1ZVQ5czU3Q202anoKWVJkaEF3RUNnWUVBMXJYVkduSFlvOXFISHlyUWRUZ2VXQUVVbml3OFhScWI3dkVVb2JEUFJGeStsOTE3RHJMNgpOQ3lLNXBxVlY3QVpWWW11RnpzVnovam9MRnk0NE5UZEE4OVJCRS9KeWxkRlYwaW93K3FFVzBGc2Jya2JCallqCldQVExLeDNpdzZHMzNxR1BMSVoyQWJBSEc5VW5lRHdDZTZ4U3A5WmpZVERoMStPdnhMbEJId1VDZ1lFQTdLZnMKck5nSktBU2hEVEhuaFpHUHJyUmdWWi9pK2lqVXRGZnBSTVRMOTBYMVpFekRLUzE2RnprdmE2aE41dlVDNTJOLwpHU0lDeVdydnloVjdCVUNsZDBwUjIxY2U1UHVwcjlEWFdXTGhldEsvQjJvNFVieU1Jb3JtWG0zWi9QOXNPbS9QCk1tN1R4UllGdFpWaExBL1hxYzFKT0h3R1N2bnRkMXhhcmJwL3hERUNnWUVBMHY2L1c0eHpPNW9kWFFpQzhCNWsKMjFDOGhTK3Raa1VtNWFtdC83TTBDOWNrU1RNU29nQktGb21MT2xEQTMvb2krMGNnZUozTXNxTEU3Z3QwZHlWWAp5RTJzTFJPSGxyc3FYanI5OWdGNWJnQWQ0YlV3Rkd1UlV2TEUwU3MrVThlUlhFdmgyZnlNN04yaUxyektXOEtGCklpblcxQzYvWEp4ZjQvdFJHSDZBdTAwQ2dZRUExdzRHV2s5N2lwMGlTVjVYT1I2OHhoTHVGQUZXZnVQSjN4U2cKU3pqVzdSN3F6em1lZy9YcW85MzRoTW1OK1ZvZlNHdzNISHkyc1poMnpWcFZ6OEVlWEZmeUtQTnpoTHhaU0FidApHekpyR25VVzJVTWlhTXlCUUFhZkw2SjkzSlcwSVNwbnpEbkFRYkl3Z0FGK0swOCtPUFR2RytCQXk3TndvdTRQCkRSNlVhcEVDZ1lFQTBWNHIzeUs2Q3VEVGRaQmtkMDdOMiszWldMeFVuYmJkSlZ5T2RoYzdlaXBsLzJUSDh2aDMKZjBJRFBlaThBTW9nb3pyb2RSRnZMKzdoT0JDYnZnVWRQeDJ0cU12SzlIQThTWEZ2ZVJrUUJrNkRaUzRSWVFyZgpvN0JpRVpycDR5dFhxbHEzQUFaT29YYUhNcUFSMkZwODNJRVNNUmxON0wxS1hPdzdJeUpXam5JPQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
kind: ConfigMap
metadata:
creationTimestamp: "2020-08-17T07:50:09Z"
name: kubelet-cm
namespace: default
resourceVersion: "1480064"