etcd

为微服务撸一个简约而不简单的配置中心

烂漫一生 提交于 2020-12-22 23:43:51
毫不犹豫的说,现代高速发展的互联网造就了一批又一批的网络红人,这一批批网红又极大的催生了特定平台的一大波流量,但是留给了程序员却是一地鸡毛,无论是运维还是开发,每天都会担心服务器崩溃,程序down机。还是怀念以前那些单机结构呀,甚至有点嫉妒那些做内网几乎没有访问量的应用的程序员,不用加班,不用提心吊胆,更不用每年买霸王洗发露。 提到单机架构,在互联网应用中肯定是吃不开的,流量高峰冲击的你可以怀疑人生。单机升级集群,带来的不止是技术上的挑战,在顶住流量高峰,迎合业务的同时,也引入了配置的复杂性。这也是我今天要谈的主题:配置管理。在单机时代,无论是什么语言,java也好,c#也罢,一个配置文件足以。随着所谓微服务这个看似能解决一切问题的方案诞生,同时也引入了更加复杂的配置问题:服务的信息,服务的各种参数,配置更新问题等。可想而知,假如你的服务有100台服务器,修改一个配置项,利用单体架构逐个更新的方式是一个多么蛋疼的事情,传统的配置文件方式已经无法满足开发人员对于配置管理的要求: 安全性。配置信息如果随代码一起发布,容易造成配置泄露。 实时性。修改配置,传统的单机架构必须重启服务才能生效。 局限性。无法支持动态调整,像最普通的日志开关功能,也不能做到。 环境区分。传统的配置文件方式,很难区分生产,开发,测试环境。 配置修改记录问题。静态配置文件方式,很难追踪这个配置文件的修改记录。

kubernetes概述-介绍、组件、架构

此生再无相见时 提交于 2020-12-19 04:18:59
前言 kubernetes项目的github地址: https://github.com/ https://github.com/kubernetes/kubernetes kubernetes的官方站点: https://kubernetes.io/ https://kubernetes.io/docs/ kubernetes基本介绍 1.kubernetes是什么? Kubernetes是一个开源的容器管理平台,简称k8s,用于管理多个主机上的容器化应用程序;提供应用程序的快速部署,维护和扩展的基本机制;Kubernetes提供了应用程序的快速部署、扩缩容,升级的能力,利用service可以实现服务注册和发现以及转发,通过ingress可以实现七层负载均衡等功能;Kubernetes这个名字源于希腊语,意思是舵手或飞行员。谷歌在2014年开放了Kubernetes项目.Kubernetes建立在谷歌拥有大量运行生产工作量的十五年经验的基础上,结合了社区中的最佳创意和实践,社区活跃度很高。 2.kubernetes容器编排工具的优势 1)灵活部署 kubernetes支持在多种平台部署,支持私有云,公有云,混合云下部署 2)安全高效 rbac 3)负载均衡 service四层负载均衡 ingress七层负载均衡 3.kubernetes的功能 1)多租户网络隔离

【Kubernetes系列】第1篇 架构及组件介绍

社会主义新天地 提交于 2020-12-19 04:04:39
1. Kubernetes简介 Kubernetes是谷歌开源的容器集群管理系统,是Google多年大规模容器管理技术Borg的开源版本,主要功能包括: 基于容器的应用部署、维护和滚动升级 负载均衡和服务发现 跨机器和跨地区的集群调度 自动伸缩 无状态服务和有状态服务 广泛的Volume支持 插件机制保证扩展性 Kubernetes发展非常迅速,已经成为容器编排领域的领导者。 2. Kubernetes 架构及组件介绍 2.1 kubernetes 架构 Kubernetes架构如图所示: Kubernetes主要由以下几个核心组件构成: etcd 保存整个集群的状态; apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制; controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等; scheduler 负责资源的调度,按照预定的调度策略将实例(Pod)调度到相应的主机上; kubelet 负责维护容器的生命周期,同时也负责存储卷和网络的管理; container runtime 负责镜像管理以及容器的真正执行,在我们系统中指的是Docker kube-proxy 负责为应用提供集群内部的服务发现和负载均衡 推荐的插件 helm - kubernetes包管理工具 kube-dns/coreDNS

kubeadm安装集群系列-2.Master高可用

徘徊边缘 提交于 2020-12-18 03:44:04
Master高可用安装 VIP负载均衡可以使用haproxy+keepalive实现,云上用户可以使用对应的ULB实现 准备kubeadm-init.yaml文件 1 apiVersion: kubeadm.k8s.io/v1beta2 2 bootstrapTokens: 3 - groups: 4 - system:bootstrappers:kubeadm:default-node-token 5 token: k60p22.go0fadibgqm2xcx8 6 ttl: 24h0m0s 7 usages: 8 - signing 9 - authentication 10 kind: InitConfiguration 11 localAPIEndpoint: 12 advertiseAddress: 10.8.31.84 13 bindPort: 6443 14 nodeRegistration: 15 criSocket: /var/run/dockershim.sock 16 name: k8s-test-master-1 17 taints: 18 - effect: NoSchedule 19 key: node-role.kubernetes.io/master 20 --- 21 apiServer: 22 timeoutForControlPlane:

k8s之配置flanneld网络

守給你的承諾、 提交于 2020-12-17 08:07:57
Flannel是Overlay网络的一种,也是将源数据包封装在另一种网络包里面进行路由转发和通信,目前已经支持UDP、VXLAN、AWS VPC和GCE路由等数据转发方式。 Flannel通过给每台宿主机分配一个子网的方式为容器提供虚拟网络,它基于Linux TUN/TAP,使用UDP封装IP包来创建overlay网络,并借助etcd维护网络的分配情况。 去官网下载相应二进制包:https://github.com/coreos/flannel/releases 解压之后得到两个文件:flanneld和mk-docker-opts .sh 将其复制到flanel的专属目录中。这里我们统一放在/opt/kubernetes/bin下面。 通过以下文件来配置flannel的配置文件 cat <<EOF >/opt/kubernetes/cfg/flanneld FLANNEL_OPTIONS="--etcd-endpoints=${ETCD_ENDPOINTS} \ -etcd-cafile=/opt/kubernetes/ssl/ca.pem \ -etcd-certfile=/opt/ kubernetes /ssl/server.pem \ -etcd-keyfile=/opt/ kubernetes /ssl/server-key.pem" EOF 注意: ${ETCD

K8s二进制部署-flanneld报(Couldn‘t fetch network config)

心不动则不痛 提交于 2020-12-17 07:56:15
1、报错提示 将网络配置信息写入了ETCD中,启动flanneld测试时一直报错,具体报错如下: [root@master1 ~]# tail -100f /var/log/messages Dec 15 23:39:22 localhost flanneld: E1215 23:39:22.688405 31176 main.go:382] Couldn't fetch network config: 100: Key not found (/coreos.com) [10] Dec 15 23:39:23 localhost flanneld: timed out Dec 15 23:39:23 localhost flanneld: E1215 23:39:23.701707 31176 main.go:382] Couldn't fetch network config: 100: Key not found (/coreos.com) [10] Dec 15 23:39:24 localhost flanneld: timed out Dec 15 23:39:24 localhost flanneld: E1215 23:39:24.717330 31176 main.go:382] Couldn't fetch network config: 100: Key not

从分布式一致性到共识机制(二)Raft算法

瘦欲@ 提交于 2020-12-17 07:55:39
春秋五霸说开 春秋五霸,是指东周春秋时期相继称霸主的五个诸侯,“霸”,意为霸主,即是诸侯之领袖。 典型的比如齐桓公,晋文公,春秋时期诸侯国的称霸,与今天要讨论的Raft算法很像。 一、更加直观的Raft算法 Raft 适用于一个管理日志一致性的协议,相比于 Paxos 协议 Raft 更易于理解和去实现它。 为了提高理解性,Raft 将一致性算法分为了几个部分,包括领导选取(leader selection)、日志复制(log replication)、安全(safety),并且使用了更强的一致性来减少了必须需要考虑的状态。 1.解决什么问题 分布式存储系统通常通过维护多个副本来提高系统的availability,带来的代价就是分布式存储系统的核心问题之一:维护多个副本的一致性。 Raft协议基于复制状态机(replicated state machine),即一组server从相同的初始状态起,按相同的顺序执行相同的命令,最终会达到一直的状态,一组server记录相同的操作日志,并以相同的顺序应用到状态机。 Raft有一个明确的场景,就是管理复制日志的一致性。 如图,每台机器保存一份日志,日志来自于客户端的请求,包含一系列的命令,状态机会按顺序执行这些命令。 一致性算法管理来自客户端状态命令的复制日志,保证状态机处理的日志中的命令的顺序都是一致的,因此会得到相同的执行结果。 2

kubernetes(k8s)集群安装calico

*爱你&永不变心* 提交于 2020-12-17 04:26:13
添加hosts解析 cat /etc/hosts 10.39.7.51 k8s-master-51 10.39.7.57 k8s-master-57 10.39.7.52 k8s-master-52 下载calico wget http: //docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/hosted/calico.yaml 下载所需镜像 # 建议下载后 推到自己的镜像仓库 [root@k8s-master- 51 ~] # cat calico.yaml |grep image image: quay.io/calico/ node:v3. 2.4 image: quay.io/calico/ cni:v3. 2.4 image: quay.io/calico/kube- controllers:v3. 2.4 配置etcd的ip etcd_endpoints: "https://10.39.7.51:2379,https://10.39.7.52:2379,https://10.39.7.57:2379" 根据注释添加相关值 # If you're using TLS enabled etcd uncomment the following. # You must also

centos7部署kubernetes详细部署步骤

别来无恙 提交于 2020-12-16 04:25:10
一、前期准备 1、首先准备至少两台虚拟机,可以使用VMware Workstation Pro部署两台虚拟机。我这里准备两台如下: 192.168.78.128 k8s-master 192.168.78.129 k8s-node 其中一台作为集群管理主机,一台为node主机。 2、设置主机的名称,方便部署时区别节点。 hostnamectl set-hostname k8s-master hostnamectl set-hostname k8s-node1 3、master主机和node主机需要关闭的内容(必须执行的操作,在两台主机上执行如下命令即可) systemctl stop firewalld 关闭防火墙 setenforce 0 关闭selinux ntpdate ntp1.aliyun.com 配置时间同步 swapoff -a 临时关闭swap 4、在vim /etc/hosts下面配置 master的配置: 192.168.78.128 k8s-master 192.168.78.128 etcd 192.168.78.128 registry 192.168.78.129 k8s-node1 node配置: 192.168.78.128 k8s-master 192.168.78.128 etcd 192.168.78.129 registry 192.168

架构师都该懂的 CAP 定理

痴心易碎 提交于 2020-12-12 19:53:34
面对可能出现的网络延迟,不可预估的请求流量等情况,设计一个分布式系统,我们通常围绕系统高可用,数据一致性的目标去规划和实现,想要完全实现这个目标,却并非易事。由此,分布式系统领域诞生了一个基本定理,即 CAP 定理,用于指导分布式系统的设计,从系统高可用,数据一致性,网络容错三个角度将分布式系统的特性抽成一个分区容错一致性模型。这样一来,让系统设计者只需根据业务场景特点,进行权衡设计适合业务场景的分区容错一致性模型即可,很大程度简化了分布式系统设计的难度。 也因此,CAP 定理是架构师所必须要掌握的内容,它影响着架构师对分布式系统的技术选型,技术决策。既然如此重要,接下来,我们就一起学习下 CAP 定理吧。 什么是 CAP CAP 定理最初是由加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在 2000 年的 ACM PODC 上提出的一个猜想,也因此被叫做布鲁尔定理。后来在 2002 年,麻省理工学院的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)发表了 CAP 定理的证明,让它成为分布式系统领域公认的一个定理。 CAP 定理指出了,在一个跨区域网络连接,共享数据的分布式系统中,一致性(Consistency),可用性(Availability)和分区容错性(Partition Tolerance)