kubernetes环境搭建(1) 一一 etcd集群搭建

来源:互联网 发布:网络搞笑剧有哪些 编辑:程序博客网 时间:2024/05/17 05:12

kubernetes环境搭建(1) 一一 etcd集群搭建


  1. 环境准备,首先准备多台linux操作系统,我这里是使用vmware创建的四台linux操作系统(ubuntu14.04):
    • 192.168.9.125 master-core
    • 192.168.9.126
    • 192.168.9.127
    • 192.168.9.128
  2. 在线安装etcd:
    (1). 需要在每台机子上执行,获取最新的安装包文件;
# wget https://github.com/coreos/etcd/releases/download/v2.2.4/etcd-v2.2.4-linux-amd64.tar.gz
  • (2). 解压安装包,并将启动文件cp到usr/bin目录下;
# tar -xzvf etcd-v2.2.4-linux-amd64.tar.gz# cd etcd-v2.2.4-linux-amd64# cp etcd etcdctl /usr/bin
-- *在每个节点上执行以上操作即可,这样安装过程就完成了,接下来就是最主要的就是集群的搭建,在搭建之前我们首先来了解一些关于etcd启动时的参数说明,这对我们搭建集群有很大的帮助;*

3. etcd集群搭建,etcd的集群部署方式有三种,分别是静态配置,etcd自发现模式,及DNS发现模式,我们就分别做一下了解:

(1). 首先,我们来了解一下静态配置模式:

   静态配置模式很好理解,就是在每个节点上部署之前,我们先规划好,每个节点的etcdIP在部署的时候,我们要以参数的形式告诉别的etcd我们这个集群中有几个节点,其他节点的ip分别是多少,我们监听的端口是多少,这样就可以保证几个节点之间能够互相了解:
 # etcd -name infra3 -initial-advertise-peer-urls  http://192.168.2.128:2380 \  -listen-peer-urls http://192.168.2.128:2380 \  -initial-cluster-token etcd-cluster-1 \  -initial-cluster infra0=http://192.168.2.125:2380,infra1=http://192.168.2.126:2380,infra2=http://192.168.2.127:2380,infra3=http://192.168.2.128:2380 \  -initial-cluster-state new  >> /usr/local/kubernete_test/logs/etcd.log 2>&1 &

– 说明: 下来我们分别对以上的每个参数做一下介绍:

  • -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在启动时真的很烦人,需要我们输入一大堆的参数(其实不输入这些参数也是可以启动的,但是只能我们自己来玩,要搭建正规的集群,这些参数我们当然必须了解的)。

    (2). etcd自发现模式,静态模式的缺点很明显,就是我们在部署etcd集群时必须知道具体的每个节点,有没有更智能一点的部署方式呢?答案肯定是有的:

     通过自发现的方式启动etcd集群需要事先准备一个etcd集群。如果你已经有一个etcd集群,首先你可以执行如下命令设定集群的大小,假设为3.   
    #  curl -X PUT http://myetcd.local/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83/_config/size -d value=3
     然后你要把这个url地址http://myetcd.local/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83作为-discovery参数来启动etcd。节点会自动使用http://myetcd.local/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83目录进行etcd的注册和发现服务。    所以最终你在某个机器上启动etcd的命令如下:
#  etcd -name infra0 -initial-advertise-peer-urls http://10.0.1.10:2380 \  -listen-peer-urls http://10.0.1.10:2380 \  -discovery http://myetcd.local/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83
   如果你本地没有可用的etcd集群,etcd官网提供了一个可以公网访问的etcd存储地址。你可以通过如下命令得到etcd服务的目录,并把它作为-discovery参数使用:
  # curl http://discovery.etcd.io/new?size=3 
  同样的,当你完成了集群的初始化后,这些信息就失去了作用。当你需要增加节点时,需要使用etcdctl来进行操作。  为了安全,请务必每次启动新etcd集群时,都使用新的discovery token进行注册。另外,如果你初始化时启动的节点超过了指定的数量,多余的节点会自动转化为Proxy模式的etcd。

(3). DNS自发现模式:

 (a) 开启DNS服务器上SRV记录查询,并添加相应的域名记录,使得查询到的结果类似如下。
   # dig +noall +answer SRV _etcd-server._tcp.example.com_etcd-server._tcp.example.com. 300 IN   SRV 0 0 2380 infra0.example.com._etcd-server._tcp.example.com. 300 IN   SRV 0 0 2380 infra1.example.com._etcd-server._tcp.example.com. 300 IN   SRV 0 0 2380 infra2.example.com. 
 (b) 分别为各个域名配置相关的A记录指向etcd核心节点对应的机器IP。使得查询结果类似如下。
# dig +noall +answer infra0.example.com infra1.example.com infra2.example.cominfra0.example.com. 300 IN  A   10.0.1.10infra1.example.com. 300 IN  A   10.0.1.11infra2.example.com. 300 IN  A   10.0.1.12
 (c)做好了上述两步DNS的配置,就可以使用DNS启动etcd集群了。配置DNS解析的url参数为-discovery-srv,其中某一个节点地启动命令如下:
    #  etcd -name infra0 \-discovery-srv example.com \-initial-advertise-peer-urls http://infra0.example.com:2380 \-initial-cluster-token etcd-cluster-1 \-initial-cluster-state new \-advertise-client-urls http://infra0.example.com:2379 \-listen-client-urls http://infra0.example.com:2379 \-listen-peer-urls http://infra0.example.com:2380
原创粉丝点击