etcd

docker etcd 环境搭建

自作多情 提交于 2019-12-05 20:30:38
etcd 是用 golang 编写,raft 协议实现的分布式高可靠的 kv 存储系统,常用来作为配置共享和服务注册发现,Kubernetes 就使用 etcd 来保存整个集群的状态 etcd 主要关注以下四点: 简单: 定义良好,面向用户的 api (使用 grpc) 安全: 可选的 tls 用户认证方式 快速: 支持每秒 10000 次的写入 可靠: raft 协议实现分布式 搭建 etcd 服务 version: "3.5" services: etcd: hostname: etcd image: bitnami/etcd:3 deploy: replicas: 1 restart_policy: condition: on-failure # ports: # - "2379:2379" # - "2380:2380" # - "4001:4001" # - "7001:7001" user: root volumes: - "/var/docker/etcd/data:/opt/bitnami/etcd/data" environment: - "ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379" - "ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379" - "ETCD_LISTEN_PEER

使用kubeadm搭建高可用k8s v1.16.3集群

一笑奈何 提交于 2019-12-05 19:39:28
目录 1、部署环境说明 2、集群架构及部署准备工作 2.1、集群架构说明 2.2、修改hosts及hostname 2.3、其他准备 3、部署keepalived 3.1、安装 3.2、配置 3.3、启动和检查 4、部署haproxy 4.1、安装 4.2、配置 4.3、启动和检查 5、安装docker 5.1、安装 5.2、配置 5.3、启动 6、安装kubeadm,kubelet和kubectl 6.1、添加阿里云k8s的yum源 6.2、安装 6.3、配置kubectl自动补全 7、安装master 7.1、创建kubeadm配置文件 7.2、初始化master节点 7.3、按照提示配置环境变量 7.4、查看集群状态 8、安装集群网络 8.1、获取yaml 8.2、安装 8.3、检查 9、其他节点加入集群 9.1、master加入集群 9.2、node加入集群 9.3、集群后续扩容 10、集群缩容 11、安装dashboard 11.1、部署dashboard 11.2、创建service account并绑定默认cluster-admin管理员集群角色 11.3、使用token登录到dashboard界面 1、部署环境说明 本文通过kubeadm搭建一个高可用的k8s集群,kubeadm可以帮助我们快速的搭建k8s集群

基于Helm和Operator的K8S应用管理的分享

旧巷老猫 提交于 2019-12-05 19:15:32
本文由3月7日晚李平辉,Rancher Labs 研发工程师所做的技术分享整理而成。 李平辉熟悉应用容器化解决方案设计和实施,熟悉持续集成方案,关注并参与K8S生态的发展,负责Rancher中国区持续集成服务研发。 搜索微信号RancherLabsChina,添加Rancher小助手为好友,可加入官方技术交流群,实时参加下一次分享~ 大家好,今天我们分享的内容是基于Helm和Operator的K8S应用管理。我们知道,Kubernetes基于服务粒度提供了多种资源描述类型。描述一个应用系统尤其是微服务架构系统,需要组合使用大量的Kubernetes资源。针对有状态应用,常常还需要复杂的运维管理操作以及更多的领域知识。 今晚的分享就将介绍如何用Helm这一Kubernetes应用包管理的社区主导方案来简化应用的部署管理,如何制作应用模板以及打造Kubernetes版应用商店,以及如何利用operator自动化应用的运维。 我们知道在K8S社区里面,根据不同的领域,分成了不同的兴趣小组,英文叫SIG。今晚的话题属于APP这个领域。它们是为了解决K8S的应用管理里面的一些问题而生的。 一、Helm 让我们从零开始吧。比如说我们现在已经部署了一个K8S的集群。不管是用GKE或者是EKS,都不是难事,因为现在部署K8S已经不是以前那么麻烦的事情了。然后我们做了应用的容器化。接下来

安装k8s集群(亲测)

不想你离开。 提交于 2019-12-05 18:13:58
先安装一台虚拟机,然后进行克隆,因为前面的步骤都是一样的,具体代码如下: Last login: Mon Nov 25 00:40:34 2019 from 192.168.180.1 ##安装依赖包 [root@master ~]# yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.163.com * extras: mirrors.163.com * updates: mirrors.huaweicloud.com base | 3.6 kB 00:00 docker-ce-stable | 3.5 kB 00:00 extras | 2.9 kB 00:00 k8s | 1.4 kB 00:00 updates | 2.9 kB 00:00 软件包 conntrack-tools-1.4.4-5.el7_7.2.x86_64 已安装并且是最新版本 软件包 ntpdate-4.2.6p5-29.el7.centos.x86_64

ETCD:客户端v3

烈酒焚心 提交于 2019-12-05 17:48:28
原文地址: etcd/clientv3 etcd/clientv3 是v3版本的Go etcd官方客户端 安装 go get go.etcd.io/etcd/clientv3 开始 创建客户端使用 clientv3.New : cli, err := clientv3.New(clientv3.Config{ Endpoints: []string{"localhost:2379", "localhost:22379", "localhost:32379"}, DialTimeout: 5 * time.Second, }) if err != nil { // handle error! } defer cli.Close() etcd v3使用 gRPC 进行远程程序调用,并且 clientv3 使用 grpc-go 连接etcd。确保在使用完客户端后关闭它,如果客户端没有关闭,连接将会有泄漏的 goroutines 。指定超时时间,通过 context.WithTimeout 使用APIs: ctx, cancel := context.WithTimeout(context.Background(), timeout) resp, err := cli.Put(ctx, "sample_key", "sample_value") cancel() if err != nil

go操作etcd

爱⌒轻易说出口 提交于 2019-12-05 17:44:26
etcd是近几年比较火热的一个开源的、分布式的键值对数据存储系统,提供共享配置、服务的注册和发现,本文主要介绍etcd的安装和使用。 etcd etcd介绍 etcd 是使用Go语言开发的一个开源的、高可用的分布式key-value存储系统,可以用于配置共享和服务的注册和发现。 类似项目有zookeeper和consul。 etcd具有以下特点: 完全复制:集群中的每个节点都可以使用完整的存档 高可用性:Etcd可用于避免硬件的单点故障或网络问题 一致性:每次读取都会返回跨多主机的最新写入 简单:包括一个定义良好、面向用户的API(gRPC) 安全:实现了带有可选的客户端证书身份验证的自动化TLS 快速:每秒10000次写入的基准速度 可靠:使用Raft算法实现了强一致、高可用的服务存储目录 etcd应用场景 服务发现 服务发现要解决的也是分布式系统中最常见的问题之一,即在同一个分布式集群中的进程或服务,要如何才能找到对方并建立连接。本质上来说,服务发现就是想要了解集群中是否有进程在监听 udp 或 tcp 端口,并且通过名字就可以查找和连接。 配置中心 将一些配置信息放到 etcd 上进行集中管理。 这类场景的使用方式通常是这样:应用在启动的时候主动从 etcd 获取一次配置信息,同时,在 etcd 节点上注册一个 Watcher 并等待,以后每次配置有更新的时候,etcd

ETCD:etcd网关

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

ETCD:基于角色的访问控制

我是研究僧i 提交于 2019-12-05 16:51:27
原文地址: Role-based access control 总览 身份验证已添加到etcd 2.1中。 etcd v3 API略微修改了身份验证功能的API和用户界面,以更好地适应新的数据模型。本指南旨在帮助用户在etcd v3中设置基本身份验证和基于角色的访问控制。 特殊用户和角色 有一个特殊用户 root ,一个特殊角色 root 。 用户 root 在激活身份验证之前,必须创建对 etcd 具有完全访问权限的 root 用户。 root 用户的想法是出于管理目的:管理角色和普通用户。 root 用户必须具有 root 角色,并且可以在 etcd 中进行任何更改。 角色 root 可以将角色 root 授予除 root 用户之外的任何用户。 具有 root 角色的用户既具有全局读写访问权限,又具有更新集群的身份验证配置的权限。 此外, root 角色授予常规集群维护的特权,包括修改集群成员资格,对存储进行碎片整理以及拍摄快照。 用户的工作方式 etcdctl 的 user 子命令处理与用户帐户有关的所有事情。 可以通过以下方式找到用户列表: $ etcdctl user list 通过以下方式创建新用户: $ etcdctl user add myusername 创建新用户将提示您输入新密码。 当给出选项 --interactive=false 时

ETCD:TLS

橙三吉。 提交于 2019-12-05 16:51:25
原文地址: TLS etcd支持用于客户端到服务器以及对等方(服务器到服务器/集群)通信的自动TLS以及通过客户端证书的身份验证. 要启动并运行,首先要获得一个成员的CA证书和签名密钥对。 建议为集群中的每个成员创建并签名一个新的密钥对。 为了方便起见, cfssl 工具提供了一个简单的接口来生成证书,我们在 此处 提供了使用该工具的示例。 或者,尝试使用本指南 生成自签名密钥对 。 基本设置 etcd通过命令行参数或环境变量采用了几种与证书相关的配置选项: 客户端到服务器的通信: --cert-file=<path> :用于SSL/TLS 与 etcd的连接的证书。设置此选项后,advertise-client-urls可以使用HTTPS模式。 --key-file=<path> :证书的密钥。 必须未加密。 --client-cert-auth :设置此选项后,etcd将检查所有传入的HTTPS请求以查找由受信任CA签名的客户端证书,不提供有效客户端证书的请求将失败。 如果启用了身份验证,则证书将为“公用名”字段指定的用户名提供凭据。 --trusted-ca-file=<path> :受信任的证书颁发机构。 --auto-tls :使用自动生成的自签名证书进行与客户端的TLS连接。 对等节点(服务器到服务器/集群)间的通信: 对等节点选项的工作方式与客户端到服务器的选项相同:

ETCD:etcdctl

笑着哭i 提交于 2019-12-05 16:51:22
原文地址: etcdctl etcdctl 是 etcd 的命令行客户端。 默认情况下,master分支上使用v3 API。 对于v2 API,请确保设置环境变量 ETCDCTL_API = 2 。 另请参见 READMEv2 。 如果使用的是v3.4之前的发行版,请将 ETCDCTL_API = 3 设置为使用v3 API。 全局参数(例如 dial-timeout , cacert , --cert , --key )可以通过环境变量设置。 ETCDCTL_DIAL_TIMEOUT=3s ETCDCTL_CACERT=/tmp/ca.pem ETCDCTL_CERT=/tmp/cert.pem ETCDCTL_KEY=/tmp/key.pem 使用 ETCDCTL_ 前缀标志的字符串,将所有字母都转换为大写字母,并用下划线( _ )替换破折号( - )。 请注意,前缀为 ETCDCTL_ 的环境变量只能与 etcdctl 全局标志一起使用。 同样,环境变量 ETCDCTL_API 是仅在 etcdctl 内部使用的特殊情况变量。 键值对命令 PUT [选项] PUT用指定的键分配指定的值。 如果键已经包含一个值,则将其覆盖。 RPC:Put 选项 lease --附加到密钥的租约ID(以十六进制表示)。 prev-kv --返回修改前的前一个键值对。 ignore-value