etcd

ETCD:词汇表

你离开我真会死。 提交于 2019-11-26 12:26:27
原文地址: 词汇表 本文档定义了etcd文档,命令行和源代码中使用的各种术语。 Alarm 每当集群需要操作员干预以保持可靠性时,etcd服务器都会发出警报。 Authentication 身份验证管理etcd资源的用户访问权限。 Client 客户端连接到etcd集群以发出服务请求,例如获取键值对,写入数据或监视更新。 Cluster 集群由几个成员组成。 每个成员中的节点均遵循Raft共识协议来复制日志。 集群从成员那里接收提议,将它们提交并应用于本地存储。 Compaction 在给定修订之前,压缩会丢弃所有etcd事件历史记录和取代的密钥。 它用于回收etcd后端数据库中的存储空间。 Election etcd集群在其成员之间举行选举,以选择一名领导人作为Raft共识协议的一部分。 Endpoint 指向etcd服务或资源的URL。 Key 用户定义的标识符,用于在etcd中存储和检索用户定义的值。 Key range 包含单个键,所有x的词法间隔(例如a <x <= b)或大于给定键的所有键的一组键。 Keyspace etcd集群中所有键的集合。 Lease 短期可再生合同,在合同到期时会删除与其相关的密钥。 Member 参与为etcd集群提供服务的逻辑etcd服务器。 Modification Revision 保留对给定密钥的最后一次写入的第一个修订版。 Peer

ETCD:在容器中运行etcd集群

牧云@^-^@ 提交于 2019-11-26 12:26:21
原文地址: Docker container 以下指南显示了如何使用 静态引导过程 在rkt和Docker上运行etcd。 rkt 运行单节点的etcd 以下rkt run命令将在端口2379上公开etcd客户端API,并在端口2380上公开对等API。 配置etcd时使用主机IP地址。 export NODE1=192.168.1.21 信任CoreOS App签名密钥 。 sudo rkt trust --prefix quay.io/coreos/etcd # gpg key fingerprint is: 18AD 5014 C99E F7E3 BA5F 6CE9 50BD D3E0 FC8A 365E 运行etcd v3.2版本或指定其他发行版本。 sudo rkt run --net=default:IP=${NODE1} quay.io/coreos/etcd:v3.2 -- -name=node1 -advertise-client-urls=http://${NODE1}:2379 -initial-advertise-peer-urls=http://${NODE1}:2380 -listen-client-urls=http://0.0.0.0:2379 -listen-peer-urls=http://${NODE1}:2380 -initial

ETCD:etcd网关

倖福魔咒の 提交于 2019-11-26 12:25:55
原文地址: L4 gateway 什么是etcd网关 etcd网关是一个简单的TCP代理,可将网络数据转发到etcd集群。网关是无状态且透明的; 它既不会检查客户端请求,也不会干扰群集响应。 网关支持多个etcd服务器端点,并采用简单的循环策略。 它仅路由到可用端点,并向其客户端隐藏故障。 将来可能会支持其他重试策略,例如加权轮询。 什么时候使用etcd网关 每个访问etcd的应用程序必须首先具有etcd集群客户端端点的地址。 如果同一服务器上的多个应用程序访问相同的etcd集群,则每个应用程序仍需要知道etcd集群的广播的客户端端点。 如果将etcd集群重新配置为具有不同的端点,则每个应用程序可能还需要更新其端点列表。 这种大规模的重新配置既乏味又容易出错。 etcd网关通过充当稳定的本地端点来解决此问题。 典型的etcd网关配置是,每台计算机运行一台网关,侦听本地地址,并且每个etcd应用程序都连接到其本地网关。 结果只是网关需要更新其端点,而不是更新每个应用程序。 总之,为了自动传播集群端点更改,etcd网关在为访问同一etcd集群的多个应用程序服务的每台机器上运行。 什么时候不该使用etcd网关 提升性能 该网关不是为提高etcd群集性能而设计的。 它不提供缓存,监视合并或批处理。 etcd团队正在开发一种缓存代理,旨在提高群集的可伸缩性。 在集群管理系统运行时

ETCD:多机上的集群

倾然丶 夕夏残阳落幕 提交于 2019-11-26 12:25:21
原文地址: cluster on multiple machines 总览 启动一个集群静态的要求是每一个集群中的成员需要知道其他成员的位置。在许多情况下,集群成员的IP可能无法提前知道。在这种情况下,etcd集群可以在发现服务的帮助下进行启动。 一旦etcd集群已经启动,添加或移除成员可以通过 运行时重新配置 。在运行时重新配置之前,为了更好地理解设计,我们建议读 运行时重新配置设计文档 。 这篇引导etcd集群的启动将包括以下机制: 静态 etcd发现 DNS发现 每种引导机制都将用于创建具有以下详细信息的三台计算机etcd集群: Name Address Hostname infra0 10.0.1.10 infra0.example.com infra1 10.0.1.11 infra1.example.com infra2 10.0.1.12 infra2.example.com 静态 集群的成员,在启动之前它们的地址和集群的大小,我们可以通过设置 initial-cluster 参数使用离线的启动配置。每一个机器将会通过以下的环境变量或命令行获得配置信息: ETCD_INITIAL_CLUSTER="infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380,infra2=http://10.0.1.12:2380

ETCD:单机单节点

故事扮演 提交于 2019-11-26 12:18:51
原文地址: Setting up local clusters 设置单节点集群 对于测试环境与开发环境,最快速与简单的方式是配置一个本地集群。对于生产环境,参考 集群 部分。 本地单节点集群 启动一个集群 运行以下命令来部署一个单节点的etcd集群: $ ./etcd ... 如果 etcd 二进制文件不在当前工作目录,那可能位于 $GOPATH/bin/etcd 或者是 /usr/local/bin/etcd .合适地运行命令。 运行的 etcd 成员在 localhost:2379 监听客户端的请求。 与集群进行交互 使用 etcdctl 与运行中的集群进行交互操作 1. 例子:在集群中存储一个键值对: $ ./etcdctl put foo bar OK 如果 OK 被打印在控制台,说明已经成功存储Key-Value对。 2. 获取键 foo 对应的值: $ ./etcdctl get foo bar 如果 bar 被返回,说明与 etcd 集群的交互操作和期望中的相同。 本地多节点集群 启动一个集群 在 etcd 的 git 仓库中存在一个 Procfile 文件提供一种简单的方式可以对本地多节点集群进行配置。在启动多节点集群之前,将工作目录导向 etcd 的根目录并执行以下操作: 1. 安装`goreman`控制基于`Procfile`的应用: ``` $ go get

k8s学习01-----what is k8s?

假装没事ソ 提交于 2019-11-26 07:41:28
简介 1、Kubernetes代码托管在GitHub上: https://github.com/kubernetes/kubernetes/ 。 2、Kubernetes是一个 开源的,容器集群管理系统 ,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了 应用部署,规划,更新,维护的一种机制 。通过Kubernetes你可以: 快速部署应用 快速扩展应用 无缝对接新的应用功能 节省资源,优化硬件资源的使用 3、Kubernetes一个核心的特点就是能够 自主的管理容器 来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务),管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,Kubernetes也系统提升工具以及人性化方面,让用户能够方便的部署自己的应用(就像canary deployments)。 4、现在Kubernetes着重于 不间断的服务状态 (比如web服务器或者缓存服务器)和原生云平台应用(Nosql),在不久的将来会支持各种生产云平台中的各种服务,例如,分批,工作流,以及传统数据库。 5、在Kubenetes中, 所有的容器均在Pod中运行

K8S集群Master高可用实践

杀马特。学长 韩版系。学妹 提交于 2019-11-26 04:47:39
本文将在前文基础上介绍k8s集群的高可用实践,一般来讲,k8s集群高可用主要包含以下几个内容: 1、etcd集群高可用 2、集群dns服务高可用 3、kube-apiserver、kube-controller-manager、kube-scheduler等master组件的高可用 其中etcd实现的办法较为容易,具体实现办法可参考前文: https://blog.51cto.com/ylw6006/2095871 集群dns服务高可用,可以通过配置dns的pod副本数为2,通过配置label实现2个副本运行在在不同的节点上实现高可用。 kube-apiserver服务的高可用,可行的方案较多,具体介绍可参考文档: https://jishu.io/kubernetes/kubernetes-master-ha/ kube-controller-manager、kube-scheduler等master组件的高可用相对容易实现,运行多份实例即可。 一、环境介绍 master节点1: 192.168.115.5/24 主机名:vm1 master节点2: 192.168.115.6/24 主机名:vm2 VIP地址: 192.168.115.4/24 (使用keepalived实现) Node节点1: 192.168.115.6/24 主机名:vm2 Node节点2: 192.168

kubeadm源码分析

筅森魡賤 提交于 2019-11-26 03:03:27
k8s离线安装包 三步安装,简单到难以置信 kubeadm源码分析 说句实在话,kubeadm的代码写的真心一般,质量不是很高。 几个关键点来先说一下kubeadm干的几个核心的事: kubeadm 生成证书在/etc/kubernetes/pki目录下 kubeadm 生成static pod yaml配置,全部在/etc/kubernetes/manifasts下 kubeadm 生成kubelet配置,kubectl配置等 在/etc/kubernetes下 kubeadm 通过client go去启动dns kubeadm init 代码入口 cmd/kubeadm/app/cmd/init.go 建议大家去看看cobra 找到Run函数来分析下主要流程: 如果证书不存在,就创建证书,所以如果我们有自己的证书可以把它放在/etc/kubernetes/pki下即可, 下文细看如果生成证书 if res, _ := certsphase.UsingExternalCA(i.cfg); !res { if err := certsphase.CreatePKIAssets(i.cfg); err != nil { return err } 创建kubeconfig文件 if err := kubeconfigphase.CreateInitKubeConfigFiles

etcd upgrade

浪子不回头ぞ 提交于 2019-11-26 02:53:46
etcd 2.3升级到3.0, v2数据转v3 主: systemctl stop etcd etcdctl backup --data-dir=/home/data --backup-dir=/home/etcd20181217 恢复: 1、复制数据,启动etcd cp -r etcd20181217 /var/lib/etcd etcd --data-dir=/var/lib/etcd --force-new-cluster 2、v2转v3 pkill etcd export ETCDCTL_API=3 etcdctl migrate --data-dir /var/lib/etcd systemctl start etcd etcdctl get / --prefix --keys-only 已经显示数据 来源: 51CTO 作者: wangchangjin95 链接: https://blog.51cto.com/11578535/2331633

Kebernetes 学习总结(15) K8s多master

白昼怎懂夜的黑 提交于 2019-11-26 02:51:47
Kubernetes v1.13版本发布后,kubeadm才正式进入GA,可以生产使用。本人历经了线下环境 和线上阿里环境 使用kubeadm方式部署了多master kubernetes集群。版本采用v1.14.2,将线下 过程分享给朋友们,如下(不喜勿喷) 本例环境如下 说明:etcd集群最少需要3台,而且必须保持两个正常运行。故本例中如果三台master有两台同时故障时,将导致cluster 不可用。 1、前提条件 关闭selinux 、关闭firewalld 、关闭swap(swapoff -a)、互相解析(/etc/hosts)、时间同步、互信免密。 设置时间同步时可使用 tzselect 命令选择正确的时区; 安装ntpdate命令, yum -y install ntp ntpdate ; 使用ntpdate与线上时间服务器同步时钟,ntpdate cn.pool.ntp.org; 2、修改内核参数 cat <<EOF >> /etc/sysctl.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_nonlocal_bind = 1 net.ipv4.ip_forward = 1 vm.swappiness=0 EOF