etcd

etcd集群部署与遇到的坑(转)

那年仲夏 提交于 2020-05-02 06:07:50
原文 https://www.cnblogs.com/breg/p/5728237.html etcd集群部署与遇到的坑 在k8s集群中使用了etcd作为数据中心,在实际操作中遇到了一些坑。今天记录一下,为了以后更好操作。 ETCD参数说明 —data-dir 指定节点的数据存储目录,这些数据包括节点ID,集群ID,集群初始化配置,Snapshot文件,若未指定—wal-dir,还会存储WAL文件; —wal-dir 指定节点的was文件的存储目录,若指定了该参数,wal文件会和其他数据文件分开存储。 —name 节点名称 —initial-advertise-peer-urls 告知集群其他节点url. — listen-peer-urls 监听URL,用于与其他节点通讯 — advertise-client-urls 告知客户端url, 也就是服务的url — initial-cluster-token 集群的ID — initial-cluster 集群中所有节点 节点迁移 在生产环境中,不可避免遇到机器硬件故障。当遇到硬件故障发生的时候,我们需要快速恢复节点。ETCD集群可以做到在不丢失数据的,并且不改变节点ID的情况下,迁移节点。 具体办法是: 1)停止待迁移节点上的etc进程; 2)将数据目录打包复制到新的节点; 3)更新该节点对应集群中peer url

米兰的小铁匠/resty-gateway

人盡茶涼 提交于 2020-05-01 10:21:01
resty-gateway github: https://github.com/fengjx/resty-gateway 基于openresty + etcd实现的网关服务 依赖 resty.roundrobin lua-resty-jit-uuid lua-resty-etcd lua-resty-http lua-typeof 整体架构 服务启动时,将自己的节点信息注册到etcd,包括:服务名称、ip、端口 网关服务从etcd监听服务节点信息,保存到缓存中,从客户端请求的url中提取服务名称,通过服务名称查找节点信息,将请求转发到后端服务 todo 服务发现,动态路由 自动生成requestId,方便链路跟踪 动态ip防火墙 限流器 用户登录认证 接口协议加解密 文档 详细文档查看: https://blog.fengjx.com/openresty/gateway/ 来源: oschina 链接: https://my.oschina.net/u/4352984/blog/4260632

etcd迁移存储目录

ぃ、小莉子 提交于 2020-04-30 08:37:20
背景:最近在Azure上自建原生k8s集群,然后很不稳定有时雪崩,日志一直报如下, 网上查了很多资料说是etcd数据存储磁盘io影响etcd查查询慢。确实我这块存储盘是hdd,于是打算迁到ssd盘试下还会不会有这种情况。 etcdserver: read-only range request took too long with etcd 3.2.24 #70082 issue: https://github.com/kubernetes/kubernetes/issues/70082 迁移方法: 关闭服务并拷贝数据库文件到新的目录下 [root@node1 ~]# systemctl stop etcd [root@node1 ~]# cp -ar /data/etcd/ /var/lib/ [root@node1 ~]# ll /var/lib/etcd/ total 0 drwx------. 4 root root 29 Apr 28 05:54 member   2. 修改etcd.env文件新数据目录 [root@node1 ~]# vim /etc/etcd.env # Environment file for etcd v3.3.12 ETCD_DATA_DIR=/var/lib/etcd   3.修改启动参数 [root@node1 ~]# vim /usr

kubernetes实战(二十六):kubeadm 安装 高可用 k8s 1.16.x dashboard 2.x

偶尔善良 提交于 2020-04-28 18:55:26
1、基本配置   基本配置、内核升级、基本服务安装参考https://www.cnblogs.com/dukuan/p/10278637.html,或者参考《再也不踩坑的Kubernetes实战指南》第一章第一节 2、Kubernetes组件安装   所有节点安装Kubeadm、Kubectl、kubelet yum install -y kubeadm- 1.16 . 0 - 0 .x86_64 kubectl- 1.16 . 0 - 0 .x86_64 kubelet- 1.16 . 0 - 0 .x86_64   所有节点启动Docker [root@k8s-master01 ~]# systemctl enable -- now docker Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/ docker.service. [root@k8s -master01 ~ ]# docker version Client: Version: 17.09 . 1 - ce API version: 1.32 Go version: go1. 8.3 Git commit: 19e2cf6 Built: Thu Dec

Docker Consul

梦想的初衷 提交于 2020-04-28 10:22:57
Docker Consul 工具 一、Consul 理论知识 1.1、Consul 简介 Consul 是一个支持多数据中心分布式高可用的 服务发现 和 配置共享 的服务软件,由 HashiCorp 公司用 Go 语言开发,基于 Mozilla Public License 2.0 的协议进行开源。 主要特性: Consul 支持健康检查,并允许 HTTP 、GRPC 和 DNS 协议调用 API 存储键值对。 一致性协议采用 Raft 算法,用来保证服务的高可用。 使用 GOSSIP 协议管理成员和广播消息, 并且支持 ACL 访问控制。 consul的实例叫agent,agent有两种运行模式:server和client 。 官方建议每个Consul Cluster数据中心至少有3个或以上的运ServerModeAgentClie节 点不限。 1.2、Consul 使用场景 Docker 容器的注册与配置共享 Coreos 实例的注册与配置共享 SaaS 应用的配置共享、服务发现和健康检查。 vitess 集群 与 confd 服务集成,动态生成 nginx 和 haproxy 配置文件 1.3、Consul 优势 市面现在有很多类似的软件比如:zookeeper 、Etcd、doozerd、eureka,Consul 相比这些软件有什么优势呢? Consul 的优势有那几点:

15、基于consul+consul-template+registrator+nginx实现自动服务发现

无人久伴 提交于 2020-04-28 03:33:07
一、架构图 二、组件介绍 1、Registrator Registrator:一个由Go语言编写的,针对docker使用的,通过检查本机容器进程在线或者停止运行状态,去注册服务的工具。所以我们要做的实验,所有的工具都是在docker上运行的,就是因为registrator是通过检查docker容器的状态来判断服务状态的,这样就和我们的代码实现完全解耦了,对上层透明化,无感知。它有如下特点 通过docker socket直接监听容器event,根据容器启动/停止等event来注册/注销服务 每个容器的每个exposed端口对应不同的服务 支持可插拔的registry backend,默认支持Consul, etcd and SkyDNS 自身也是docker化的,可以容器方式启动 用户可自定义配置,如服务TTL(time-to-live)、服务名称、服务tag等 2、consul Consul在这里用来做 docker 实例的注册与配置共享。 特点: 一致性协议采用 Raft 算法,比Paxos算法好用. 使用 GOSSIP 协议管理成员和广播消息, 并且支持 ACL 访问控制. 支持多数据中心以避免单点故障,内外网的服务采用不同的端口进行监听。而其部署则需要考虑网络延迟, 分片等情况等.zookeeper 和 etcd 均不提供多数据中心功能的支持. 健康检查. etcd 没有的.

Docker+Jenkins持续集成环境(4):使用etcd+confd实现容器服务注册与发现

半城伤御伤魂 提交于 2020-04-28 02:57:12
前面我们已经通过jenkins+docker搭建了基本的持续集成环境,实现了服务的自动构建和部署,但是,我们遇到一个问题,jenkins构建出来的镜像部署后,需要通过ip:port去访问,有什么更好的方法吗?肯定是通过域名啊!前提是你注册一个域名,或者修改机器hosts文件。 本文介绍通过引入etcd+confd实现部署服务的自动注册,自动生成nginx配置文件,实现每个服务独立域名访问。 配置域名 假设你的域名是: example.com,那么我们可以规划 dev.$servicename.example.com作为开发环境, test.$servicename.example.comz作为服务的测试环境。 配置步骤: 首先将*.example.com 指向一台nginx服务器 增加vhost配置文件,假设86.6,86.8,86.11 是docker swarm集群中的机器,服务的名称为allinoneservice,那么我们可以增加一个配置文件nginx_vhosts/service.conf: upstream test_service_allinoneservice { server 192.168.86.11:10091; server 192.168.86.6:10091; server 192.168.86.8:10091; } server { listen 80

Kubernetes安装配置指南(二进制安装)

↘锁芯ラ 提交于 2020-04-27 15:25:58
以二进制文件方式安装Kubernetes集群 k8s下载地址: https://github.com/kubernetes/kubernetes/releases wget https://dl.k8s.io/v1.14.0/kubernetes-server-linux-amd64.tar.gz wget https://dl.k8s.io/v1.14.0/kubernetes-client-linux-amd64.tar.gz wget https://dl.k8s.io/v1.14.0/kubernetes-node-linux-amd64.tar.gz wget https://github.com/etcd-io/etcd/releases/download/v3.3.13/etcd-v3.3.13-linux-amd64.tar.gz Master上安装etcd、kube-apiserver、kube-controller-manager、kube-scheduler服务 1.etcd服务 下载etcd二进制包,解压,将etcd、etcdctl文件复制到/usr/bin/目录。 设置systemd配置文件: [root@common etcd]# cat /usr/lib/systemd/system/etcd.service [Unit] Description

二进制安装部署kubernetes集群---超详细教程

霸气de小男生 提交于 2020-04-26 07:44:05
本文收录在 容器技术学习系列文章总目录 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的 网盘 中,需要的可以打赏博主一杯咖啡钱,然后私密博主,博主会很快答复呦~ 00.组件版本和配置策略 00-01.组件版本 Kubernetes 1.10.4 Docker 18.03.1-ce Etcd 3.3.7 Flanneld 0.10.0 插件: Coredns Dashboard Heapster (influxdb 、 grafana) Metrics-Server EFK (elasticsearch 、 fluentd 、 kibana) 镜像仓库: docker registry harbor 00-02.主要配置策略 kube-apiserver : 使用 keepalived 和 haproxy 实现 3 节点高可用; 关闭非安全端口 8080 和匿名访问; 在安全端口 6443 接收 https 请求; 严格的认证和授权策略 (x509 、 token 、 RBAC) ; 开启 bootstrap token 认证,支持 kubelet TLS bootstrapping ; 使用 https 访问 kubelet 、 etcd ,加密通信; kube-controller-manager :

K8S

北城余情 提交于 2020-04-24 02:34:55
Kubernetes 编排系统 分类: 容器/虚拟化 1.1 Kubernetes简介 1.1.1 什么是Kubernetes Kubernetes (通常称为K8s,K8s是将8个字母“ubernete”替换为“8”的缩写) 是用于 自动部署、扩展和管理容器化( containerized )应用程序的开源系统 。Google设计并捐赠给Cloud Native Computing Foundation(今属Linux基金会)来使用的。 它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具, 包括Docker等。CNCF于2017年宣布首批Kubernetes认证服务提供商(KCSPs),包含IBM、MIRANTIS、华为、inwinSTACK迎栈科技等服务商。 1.1.2 Kubernetes发展史 Kubernetes (希腊语"舵手" 或 "飞行员") 由Joe Beda,Brendan Burns和Craig McLuckie创立,并由其他谷歌工程师,包括Brian Grant和Tim Hockin进行加盟创作,并由谷歌在2014年首次对外宣布 。它的开发和设计都深受谷歌的Borg系统的影响,它的许多顶级贡献者之前也是Borg系统的开发者。在谷歌内部,Kubernetes的原始代号曾经是Seven,即星际迷航中友好的Borg(博格人