etcd

一分钟看懂Docker的网络模式和跨主机通信

不打扰是莪最后的温柔 提交于 2019-12-18 18:34:31
文章转载自:http://www.a-site.cn/article/169899.html Docker的四种网络模式Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0... Docker的四种网络模式 Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。 从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。可以通过brctl show命令查看。 bridge模式是docker的默认网络模式,不写--net参数,就是bridge模式。使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。 bridge模式如下图所示: 演示: #docker run -tid --net=bridge -

第3篇K8S集群部署

喜欢而已 提交于 2019-12-18 13:47:08
一、利用ansible部署kubernetes准备: 集群介绍 本系列文档致力于提供快速部署高可用k8s集群的工具,并且也努力成为k8s实践、使用的参考书;基于二进制方式部署和利用ansible-playbook实现自动化:既提供一键安装脚本,也可以分步执行安装各个组件,同时讲解每一步主要参数配置和注意事项;二进制方式部署有助于理解系统各组件的交互原理和熟悉组件启动参数,有助于快速排查解决实际问题。 版本组件 kubernetes v1.9.7 etcd v3.3.4 docker 18.03.0-ce calico/node:v3.0.6 calico/cni:v2.0.5 calico/kube-controllers:v2.0.4 centos 7.3+ 集群规划和基础参数设定 1、高可用集群所需节点配置如下: 部署节点 x1 : 运行这份 ansible 脚本的节点  # 部署节点:运行ansible 脚本的节点 etcd节点 x3 : 注意etcd集群必须是1,3,5,7...奇数个节点 master节点 x1 : 运行集群主要组件 node节点 x3 : 真正应用部署的节点,根据需要增加机器配置和节点数 2、在部署节点准备ansible:使用ansible的doker环境启动 (1)下载内部源配置脚本 (2)下载并安装docker wget download

从零开始入门 K8s | etcd 性能优化实践

ⅰ亾dé卋堺 提交于 2019-12-18 08:17:56
作者 | 陈星宇(宇慕) 阿里云基础技术中台技术专家 本文整理自 《CNCF x Alibaba 云原生技术公开课》 第 17 讲。 导读 :etcd 是容器云平台用于存储关键元信息的组件。阿里巴巴使用 etcd 已经有 3 年的历史, 在今年 双11 过程中它又一次承担了关键角色,接受了 双11 大压力的检验。本文作者从 etcd 性能背景出发,带领我们了解了 etcd server 端性能优化及 etcd client 使用最佳实践,希望能够为大家运行一个稳定而且高效的 etcd 集群提供帮助。 一、etcd 简要介绍 etcd 诞生于 CoreOs 公司,使用 Golang 语言开发,是一个分布式 KeyValue 存储引擎。我们可以利用 etcd 来作为分布式系统元数据的存储 数据库 ,存储系统里面重要的元信息。etcd 同样也被各大公司广泛使用。 下图为 etcd 的基本架构 如上所示,一个集群有三个节点:一个 Leader 和两个 Follower。每个节点通过 Raft 算法同步数据,并通过 boltdb 存储数据。当一个节点挂掉之后,另外的节点会自动选举出来一个 Leader,保持整个集群的高可用特性。Client 可以通过连接任意一个节点完成请求。 二、理解 etcd 性能 首先我们来看一张图: 上图是一个标准的 etcd 集群架构简图。可以将 etcd

使用Helm简化K8S应用管理

萝らか妹 提交于 2019-12-17 19:18:21
一、背景介绍 在使用纯手工维护yaml文件方式完成内网开发和两套测试环境和现网生成环境的核心微服务pod化之后。发现主要痛点如下: 1、工作负载相关的yaml文件维护量巨大,且易出错。(目前内网共有77个工作负载) 2、研发人员对工作负载配置改动的需求比较频繁,例如修改jvm相关参数,增加initcontainer、修改liveness、readiness探针、亲和性与反亲和性配置等,这类的配置严重同质化。 3、每个namespace都存在环境变量、configmap、rbac、pv\pvc解耦类的配置,如果对应的配置未提前创建,则后续创建的工作负载无法正常工作。 随着第二阶段各平台模块的微服务化改造工作的推进,预计每个namespace会分别增加30-40个工作负载,因此需要维护的yaml文件将急剧扩展,手工维护已不现实。因此使用helm来维护k8s应用被提上议事日程。 关于helm的配置文件语法及服务端配置请参考官网手册: https://helm.sh/docs/ 二、需求分析 1、公共配置类 Configmap 每个namespace至少有两个configmap,其中center-config存储了各个环境的mysql、mongodb、redis等基础公共服务的IP、用户名和密码、连接池配置信息等,我们通过集中配置解耦做到代码编译一次镜像,各个环境都能运行。 hb-lan

K8S集群tls证书管理

大城市里の小女人 提交于 2019-12-17 18:21:34
在前文介绍的k8s master高可用实践方案中,需要对kube-apiserver的证书进行更新,加入VIP和从节点的IP,然后重新下发证书。回顾K8S集群整个搭建过程中,最容易让人懵圈的也就是配置证书环节,因此本文对K8S集群所用到的证书进行梳理一下。 一、根证书 ca.pem 根证书公钥文件 ca-key.pem 根证书私钥文件 ca.csr 证书签名请求,用于交叉签名或重新签名 ca-config.json 使用cfssl工具生成其他类型证书需要引用的配置文件 ca.pem用于签发后续其他的证书文件,因此ca.pem文件需要分发到集群中的每台服务器上去。 证书生成命令,默认生成的证书有效期5年 # echo '{"CN":"CA","key":{"algo":"rsa","size":2048}}' | cfssl gencert -initca - | cfssljson -bare ca - # echo '{"signing":{"default":{"expiry":"43800h","usages":["signing","key encipherment","server auth","client auth"]}}}' > ca-config.json 二、flannel证书 证书生成命令,默认生成的证书有效期5年 # cfssl gencert -ca=

从零开始入门 K8s | etcd 性能优化实践

房东的猫 提交于 2019-12-17 11:07:44
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 作者 | 陈星宇(宇慕) 阿里云基础技术中台技术专家 本文整理自 《CNCF x Alibaba 云原生技术公开课》 第 17 讲。 导读 :etcd 是容器云平台用于存储关键元信息的组件。阿里巴巴使用 etcd 已经有 3 年的历史, 在今年 双11 过程中它又一次承担了关键角色,接受了 双11 大压力的检验。本文作者从 etcd 性能背景出发,带领我们了解了 etcd server 端性能优化及 etcd client 使用最佳实践,希望能够为大家运行一个稳定而且高效的 etcd 集群提供帮助。 一、etcd 简要介绍 etcd 诞生于 CoreOs 公司,使用 Golang 语言开发,是一个分布式 KeyValue 存储引擎。我们可以利用 etcd 来作为分布式系统元数据的存储数据库,存储系统里面重要的元信息。etcd 同样也被各大公司广泛使用。 下图为 etcd 的基本架构 如上所示,一个集群有三个节点:一个 Leader 和两个 Follower。每个节点通过 Raft 算法同步数据,并通过 boltdb 存储数据。当一个节点挂掉之后,另外的节点会自动选举出来一个 Leader,保持整个集群的高可用特性。Client 可以通过连接任意一个节点完成请求。 二、理解 etcd 性能 首先我们来看一张图:

kubeasz部署k8s

旧街凉风 提交于 2019-12-17 09:14:31
1部署 1.0)集群规划 hostnamectl set-hostname master01 hostnamectl set-hostname master02 hostnamectl set-hostname node01 hostnamectl set-hostname node02 vi /etc/hosts 192.168.198.154 master01 192.168.198.155 master02 192.168.198.156 node01 192.168.198.157 node02 scp /etc/hosts scp /etc/hosts root@master02:/etc/hosts scp /etc/hosts root@node01:/etc/hosts scp /etc/hosts root@node02:/etc/hosts ssh-keygen -t rsa ssh-copy-id -i .ssh/id_rsa.pub root@master01 ssh-copy-id -i .ssh/id_rsa.pub root@master02 ssh-copy-id -i .ssh/id_rsa.pub root@node01 ssh-copy-id -i .ssh/id_rsa.pub root@node02 1.1)阿里云epel源 wget

k8s集群的搭建之三:flannel

ぐ巨炮叔叔 提交于 2019-12-17 06:39:44
一介绍 flannel是CoreOS提供用于解决Dokcer集群跨主机通讯的覆盖网络工具。它的主要思路是:预先留出一个网段,每个主机使用其中一部分,然后每个容器被分配不同的ip;让所有的容器认为大家在同一个直连的网络,底层通过UDP/VxLAN等进行报文的封装和转发。flannel是Overlay网络的一种,也是将源数据包封装在另一种网络包里面进行路由转发和通信,目前已经支持UDP,VXLAN,host-gw,AWS,VPC,GCE路由等级传输,推荐 vxlan或者host-gw 二搭建(这里以两台为例) 2.1 分配网段,封装类型为vxlan,高效,稳定(master上执行) etcdctl --ca-file=/etc/etcd/ssl/etcd-root-ca.pem --cert-file=/etc/etcd/ssl/etcd.pem --key-file=/etc/etcd/ssl/etcd-key.pem \ --endpoints=https://192.168.137.66:2379,https://192.168.137.16:2379 set /coreos.com/network/config '{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}} 查看分配的结果: [root@k8s

Kubernetes学习-基础架构

三世轮回 提交于 2019-12-16 21:54:19
kubectl是一个Kubernetes提供的客户端工具,是用于操作kubernetes集群的命令行接口,通过利用kubectl的各种命令可以实现各种功能,是在使用kubernetes中非常常用的工具,该工具内部就是对Kubernetes API的调用。 kubecfg是一个命令行客户端,连接到master来管理kubenetes集群 注: 在新版Kubernetes中,所有的操作命令都整合至 kubectl,包括kubecfg、 kubectl.sh、kubecfg.sh等 基础组成架构:Master+Node 1,Master    Master节点上面主要由四个模块组成: APIServer 、 scheduler 、 controller manager 、 etcd 。      APIServer 。APIServer负责对外提供RESTful的Kubernetes API服务,它是系统管理指令的统一入口,任何对资源进行增删改查的操作都要交给APIServer处理后再提交给etcd。kubectl是直接和APIServer交互的。 提供了资源对象的唯一操作入口,其他所有组件都必须通过它提供的API来操作资源数据,只有API Server与存储通信,其他模块通过API Server访问集群状态。 实现集群故障检测和恢复的自动化工作,负责执行各种控制器,主要有: 第一

Golang 在电商即时通讯服务建设中的实践

扶醉桌前 提交于 2019-12-16 11:07:10
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 马蜂窝技术原创文章,更多干货请搜索公众号:mfwtech ​即时通讯(IM)功能对于电商平台来说非常重要,特别是旅游电商。 从商品复杂性来看,一个旅游商品可能会包括用户在未来一段时间的衣、食、住、行等方方面面;从消费金额来看,往往单次消费额度较大;对目的地的陌生、在行程中可能的问题,这些因素使用户在购买前、中、后都存在和商家沟通的强烈需求。可以说,一个好用的 IM 可以在一定程度上对企业电商业务的 GMV 起到促进作用。 本文我们将结合马蜂窝旅游电商 IM 服务的发展历程,重点介绍基于 Go 的 IM 重构,希望可以给有相似问题的朋友一些借鉴。 Part.1 技术背景和问题 与广义上的即时通讯不同,电商各业务线有其特有业务逻辑,如客服聊天系统的客人分配逻辑、敏感词检测逻辑等,这些往往要耦合进通信流程中。随着接入业务线越来越多,即时通讯服务冗余度会越来越高。同时整个消息链路追溯复杂,服务稳定性很受业务逻辑的影响。 之前我们 IM 应用中的消息推送主要基于轮询技术,消息轮询模块的长连接请求是通过 php-fpm 挂载在阻塞队列上实现。当请求量较大时,如果不能及时释放 php-fpm 进程,对服务器的性能消耗很大。 为了解决这个问题,我们曾用 OpenResty+Lua 的方式进行改造,利用 Lua