centos7 ETCD安裝(轉(zhuǎn))

原文地址:https://blog.csdn.net/wenwst/article/details/79851235

ETCD安裝

服務(wù)器準備

ETCD集群我們這里使用三臺獨立服務(wù)器安裝昔字。如果是生產(chǎn)環(huán)境,服務(wù)器足夠的話喧枷,最好用獨立服務(wù)器,當(dāng)然聘芜,也可以和別的服務(wù)安裝在一起歇拆。但是我們在這里使用獨立服務(wù)器择浊。這樣也更好理解原理,配置也更為清晰捣域。

首先啼染,我們要對服務(wù)器做一些初始化的配置。比如服務(wù)名配置焕梅,IP配置迹鹅,系統(tǒng)更新等。

0001…..服務(wù)器初始配置

yds-dev-svc01-etcd01 主機名配置

[root@localhost ~]# hostnamectl 
   Static hostname: yds-dev-svc01-etcd01
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 86551c512ea14b06a9eaf8ad100e7973
           Boot ID: 5b698ae318804cbfb578302d563bee36
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-693.el7.x86_64
      Architecture: x86-64

配置完成后贞言,重新登錄一下

yds-dev-svc01-etcd01 IP地址配置
修改網(wǎng)絡(luò)配置文件

[root@yds-dev-svc01-etcd01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
UUID=7d6fb2ed-364c-415f-9b02-0e54436ff1ec
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.3.50
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
DNS1=192.168.3.10
DNS2=114.114.114.114

查看網(wǎng)絡(luò)配置信息徒欣。

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:7c:79:54 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.50/24 brd 192.168.3.255 scope global ens32
       valid_lft forever preferred_lft forever
    inet6 fe80::9cd:60a3:99e2:48ff/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::fbd2:5239:fe68:ea3d/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::2a36:8b76:9a1d:7d50/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever

yds-dev-svc01-etcd02 主機名配置

[root@localhost ~]# hostnamectl set-hostname yds-dev-svc01-etcd02
[root@localhost ~]# hostnamectl 
   Static hostname: yds-dev-svc01-etcd02
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 86551c512ea14b06a9eaf8ad100e7973
           Boot ID: 80402b905e324612812f2e03dc6d6949
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-693.el7.x86_64
      Architecture: x86-64

配置完成后,重新登錄一下
yds-dev-svc01-etcd02 IP地址配置
修改網(wǎng)絡(luò)配置文件

[root@yds-dev-svc01-etcd02 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
UUID=7d6fb2ed-364c-415f-9b02-0e54436ff1ec
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.3.51
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
DNS1=192.168.3.10
DNS2=114.114.114.114

查看網(wǎng)絡(luò)配置信息蜗字。

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:42:a8:9d brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.51/24 brd 192.168.3.255 scope global ens32
       valid_lft forever preferred_lft forever
    inet6 fe80::9cd:60a3:99e2:48ff/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::fbd2:5239:fe68:ea3d/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::2a36:8b76:9a1d:7d50/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever

yds-dev-svc01-etcd03 主機名配置

[root@localhost ~]# hostnamectl set-hostname yds-dev-svc01-etcd03
[root@localhost ~]# hostnamectl 
   Static hostname: yds-dev-svc01-etcd03
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 86551c512ea14b06a9eaf8ad100e7973
           Boot ID: 509a0b69f26c41d2bc4e3ba18dba4c39
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-693.el7.x86_64
      Architecture: x86-64

配置完成后打肝,重新登錄一下

修改網(wǎng)絡(luò)配置文件

[root@yds-dev-svc01-etcd03 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
UUID=7d6fb2ed-364c-415f-9b02-0e54436ff1ec
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.3.52
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
DNS1=192.168.3.10
DNS1=114.114.114.114

查看網(wǎng)絡(luò)配置信息。

[root@yds-dev-svc01-etcd03 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:ae:06:3e brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.52/24 brd 192.168.3.255 scope global ens32
       valid_lft forever preferred_lft forever
    inet6 fe80::9cd:60a3:99e2:48ff/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::fbd2:5239:fe68:ea3d/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::2a36:8b76:9a1d:7d50/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever

yds-dev-svc01-etcd01 系統(tǒng)更新
執(zhí)行以下命令

[root@yds-dev-svc01-etcd01 ~]# yum install -y epel-release; yum update -y 
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.sohu.com
 * epel: mirrors.sohu.com
 * extras: mirrors.sohu.com
 * updates: mirrors.cn99.com
Package epel-release-7-11.noarch already installed and latest version
Nothing to do
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.sohu.com
 * epel: mirrors.sohu.com
 * extras: mirrors.sohu.com
 * updates: mirrors.cn99.com
No packages marked for update

yds-dev-svc01-etcd02 系統(tǒng)更新
執(zhí)行以下命令

[root@yds-dev-svc01-etcd02 ~]# yum install -y epel-release; yum update -y 
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.sohu.com
 * epel: mirror01.idc.hinet.net
 * extras: mirrors.sohu.com
 * updates: mirrors.aliyun.com
Package epel-release-7-11.noarch already installed and latest version
Nothing to do
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.sohu.com
 * epel: mirror01.idc.hinet.net
 * extras: mirrors.sohu.com
 * updates: mirrors.aliyun.com
No packages marked for update

yds-dev-svc01-etcd03 系統(tǒng)更新
執(zhí)行以下命令

[root@yds-dev-svc01-etcd03 ~]# yum install -y epel-release ; yum update -y 
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirror01.idc.hinet.net
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Package epel-release-7-11.noarch already installed and latest version
Nothing to do
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirror01.idc.hinet.net
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
No packages marked for update

yds-dev-svc01-etcd01 關(guān)閉selinux

setenforce  0 
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux 
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config 
sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/sysconfig/selinux 
sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/selinux/config 
getenforce

yds-dev-svc01-etcd02 關(guān)閉selinux

setenforce  0 
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux 
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config 
sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/sysconfig/selinux 
sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/selinux/config 
getenforce

yds-dev-svc01-etcd03 關(guān)閉selinux

setenforce  0 
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux 
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config 
sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/sysconfig/selinux 
sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/selinux/config 
getenforce

yds-dev-svc01-etcd01 關(guān)閉交換分區(qū)swap

swapoff -a 
sed -i 's/.*swap.*/#&/' /etc/fstab
cat /etc/fstab

yds-dev-svc01-etcd02 關(guān)閉交換分區(qū)swap

swapoff -a 
sed -i 's/.*swap.*/#&/' /etc/fstab
cat /etc/fstab

yds-dev-svc01-etcd03 關(guān)閉交換分區(qū)swap

swapoff -a 
sed -i 's/.*swap.*/#&/' /etc/fstab
cat /etc/fstab

yds-dev-svc01-etcd01 設(shè)置內(nèi)核

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p /etc/sysctl.conf

執(zhí)行效果

[root@yds-dev-svc01-etcd01 ~]# cat <<EOF >  /etc/sysctl.d/k8s.conf
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> EOF
[root@yds-dev-svc01-etcd01 ~]# sysctl -p /etc/sysctl.conf
[root@yds-dev-svc01-etcd01 ~]# 

yds-dev-svc01-etcd02 設(shè)置內(nèi)核

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p /etc/sysctl.conf

執(zhí)行效果

[root@yds-dev-svc01-etcd02 ~]# cat <<EOF >  /etc/sysctl.d/k8s.conf
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> EOF
[root@yds-dev-svc01-etcd02 ~]# sysctl -p /etc/sysctl.conf
[root@yds-dev-svc01-etcd02 ~]# 

yds-dev-svc01-etcd02 設(shè)置內(nèi)核

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p /etc/sysctl.conf

執(zhí)行效果

[root@yds-dev-svc01-etcd03 ~]# cat <<EOF >  /etc/sysctl.d/k8s.conf
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> EOF
[root@yds-dev-svc01-etcd03 ~]# sysctl -p /etc/sysctl.conf
[root@yds-dev-svc01-etcd03 ~]# sysctl -p
[root@yds-dev-svc01-etcd03 ~]# 

0002…..ETCD環(huán)境配置
yds-dev-svc01-etcd01 設(shè)置ETCD環(huán)境
復(fù)制執(zhí)行以下命令:

cat <<EOF >>  /etc/hosts
192.168.3.50  yds-dev-svc01-etcd01
192.168.3.51  yds-dev-svc01-etcd02
192.168.3.52  yds-dev-svc01-etcd03
EOF
cat <<EOF >>  ~/.bash_profile
export NODE_NAME=yds-dev-svc01-etcd01
export NODE_IP=192.168.3.50
export NODE_IPS="192.168.3.50 192.168.3.51 192.168.3.52"
export ETCD_NODES=yds-dev-svc01-etcd01=https://192.168.3.50:2380,yds-dev-svc01-etcd02=https://192.168.3.51:2380,yds-dev-svc01-etcd03=https://192.168.3.52:2380
EOF
source ~/.bash_profile
echo $NODE_NAME
echo $NODE_IP
echo $NODE_IPS
echo $ETCD_NODES

yds-dev-svc01-etcd02 設(shè)置ETCD環(huán)境
復(fù)制執(zhí)行以下命令:

cat <<EOF >>  /etc/hosts
yds-dev-svc01-etcd01 192.168.3.50
yds-dev-svc01-etcd02 192.168.3.51
yds-dev-svc01-etcd03 192.168.3.52
EOF
cat <<EOF >>  ~/.bash_profile
export NODE_NAME=yds-dev-svc01-etcd02
export NODE_IP=192.168.3.51
export NODE_IPS="192.168.3.50 192.168.3.51 192.168.3.52"
export ETCD_NODES=yds-dev-svc01-etcd01=https://192.168.3.50:2380,yds-dev-svc01-etcd02=https://192.168.3.51:2380,yds-dev-svc01-etcd03=https://192.168.3.52:2380
EOF
source ~/.bash_profile

yds-dev-svc01-etcd03 設(shè)置ETCD環(huán)境
復(fù)制執(zhí)行以下命令:

cat <<EOF >>  /etc/hosts
yds-dev-svc01-etcd01 192.168.3.50
yds-dev-svc01-etcd02 192.168.3.51
yds-dev-svc01-etcd03 192.168.3.52
EOF
cat <<EOF >>  ~/.bash_profile
export NODE_NAME=yds-dev-svc01-etcd03
export NODE_IP=192.168.3.52
export NODE_IPS="192.168.3.50 192.168.3.51 192.168.3.52"
export ETCD_NODES=yds-dev-svc01-etcd01=https://192.168.3.50:2380,yds-dev-svc01-etcd02=https://192.168.3.51:2380,yds-dev-svc01-etcd03=https://192.168.3.52:2380
EOF
source ~/.bash_profile

0003…..ETCD證書配置
此部分可以在自己的電腦上面執(zhí)行挪捕,也可以只在yds-dev-svc01-etcd01中執(zhí)行粗梭。在這里,我們在yds-dev-svc01-etcd01在執(zhí)行级零。

  • 安裝證書生成工具 *
yum install -y wget 
mkdir /tmp/key
cd /tmp/key

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
chmod +x cfssl_linux-amd64
mv cfssl_linux-amd64 /usr/local/bin/cfssl

wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
chmod +x cfssljson_linux-amd64
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson

wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod +x cfssl-certinfo_linux-amd64
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
  • 創(chuàng)建 CA 配置文件 *

創(chuàng)建CA文件:
signing: 表示該證書可用于簽名其它證書断医;生成的 ca.pem 證書中 CA=TRUE;
server auth: 表示 client 可以用該 CA 對 server 提供的證書進行驗證;
client auth: 表示 server 可以用該 CA 對 client 提供的證書進行驗證;

cat >  ca-config.json <<EOF
{
"signing": {
"default": {
  "expiry": "87600h"
},
"profiles": {
  "kubernetes": {
    "usages": [
        "signing",
        "key encipherment",
        "server auth",
        "client auth"
    ],
    "expiry": "87600h"
  }
}
}
}
EOF

這里可以根據(jù)你的需要修改CN和O。
“CN”:Common Name奏纪,kube-apiserver 從證書中提取該字段作為請求的用戶名 (User Name)鉴嗤;瀏覽器使用該字段驗證網(wǎng)站是否合法;
“O”:Organization序调,kube-apiserver 從證書中提取該字段作為請求用戶所屬的組 (Group)醉锅;

cat >  ca-csr.json <<EOF
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
  "C": "CN",
  "ST": "chengdu",
  "L": "chengdu",
  "O": "k8s",
  "OU": "System"
}
]
}
EOF
  • 生成 CA 證書和私鑰 *
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
ls ca*
  • 創(chuàng)建 etcd 證書簽名請求 *

hosts 字段指定授權(quán)使用該證書的 etcd 節(jié)點 IP;
每個節(jié)點IP 都要在里面 或者 每個機器申請一個對應(yīng)IP的證書

cat > etcd-csr.json <<EOF
{
  "CN": "etcd",
  "hosts": [
    "127.0.0.1",
    "192.168.3.50",
    "192.168.3.51",
    "192.168.3.52"
  ],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "chengdu",
      "L": "chengdu",
      "O": "k8s",
      "OU": "System"
    }
  ]
}
EOF

生成 etcd 證書和私鑰

cfssl gencert -ca=ca.pem \
  -ca-key=ca-key.pem \
  -config=ca-config.json \
  -profile=kubernetes etcd-csr.json | cfssljson -bare etcd
ls etcd*

以上證書生產(chǎn)完成发绢。為了安全起見硬耍,需要將生成的證書及配置文件進行備份。

在yds-dev-svc01-etcd01边酒,yds-dev-svc01-etcd02经柴,yds-dev-svc01-etcd03中創(chuàng)建/etc/etcd/ssl目錄

mkdir -p /etc/etcd/ssl

將生成etcd證書復(fù)制到各個etcd安裝目錄中

cp etcd.pem etcd-key.pem  ca.pem /etc/etcd/ssl/
scp -r /etc/etcd/ssl/* root@yds-dev-svc01-etcd02:/etc/etcd/ssl/
scp -r /etc/etcd/ssl/* root@yds-dev-svc01-etcd03:/etc/etcd/ssl/

下載ETCD安裝文件
我們在這里使用的ETCD版本為3.2.18,如果你在安裝的時候墩朦,也可以使用這個版本坯认,當(dāng)然,也可以使用更高的版本或其他版本。
在yds-dev-svc01-etcd01中下載ETCD牛哺,下載完成后陋气,復(fù)制安裝文件到y(tǒng)ds-dev-svc01-etcd02和yds-dev-svc01-etcd03中。

cd /tmp
wget https://github.com/coreos/etcd/releases/download/v3.2.18/etcd-v3.2.18-linux-amd64.tar.gz
tar -xvzf etcd-v3.2.18-linux-amd64.tar.gz
cd etcd-v3.2.18-linux-amd64
cp etcd* /usr/local/bin/
scp etcd* root@yds-dev-svc01-etcd02:/usr/local/bin/
scp etcd* root@yds-dev-svc01-etcd03:/usr/local/bin/

創(chuàng)建 etcd 的 systemd unit 文件

先創(chuàng)建ETCD工作目錄

mkdir -p /var/lib/etcd

如果沒有配置這個目錄荆隘,會現(xiàn)現(xiàn)Failed at step CHDIR spawning /usr/local/bin/etcd: No such file or directory的錯誤信息。
在各個服務(wù)器執(zhí)行以下命令創(chuàng)建systemd unit文件赴背。
因為在命令中包含變量椰拒,這些變量我們在前面已經(jīng)創(chuàng)建了,為了保險凰荚,我們再檢查一下:

echo ${NODE_NAME}
echo ${NODE_IP}
echo ${ETCD_NODES}

生成ETCD配置文件
這里生成的配置文件有: /etc/etcd/etcd-key.conf, /etc/etcd/etcd.conf
網(wǎng)上大部分是把這兩個配置文件和systemd unit文件存放在一起, 也可以參考這樣的方法燃观,看個人習(xí)慣。
/etc/etcd/etcd-key.conf:存放我們證書的配置信息便瑟。
/etc/etcd/etcd.conf:存放ETCD集群的配置信息缆毁。

cat > /etc/etcd/etcd-key.conf <<EOF
ETCD_KEY='--cert-file=/etc/etcd/ssl/etcd.pem --key-file=/etc/etcd/ssl/etcd-key.pem --peer-cert-file=/etc/etcd/ssl/etcd.pem --peer-key-file=/etc/etcd/ssl/etcd-key.pem --trusted-ca-file=/etc/etcd/ssl/ca.pem --peer-trusted-ca-file=/etc/etcd/ssl/ca.pem'
EOF
cat > /etc/etcd/etcd.conf <<EOF
ETCD_NAME='--name=${NODE_NAME}'
DATA_DIR='--data-dir=/var/lib/etcd'
INITIAL_CLUSTER_STATE='--initial-cluster-state=new'
INITIAL_CLUSTER_TOKEN='--initial-cluster-token=etcd-cluster-0'
INITIAL_ADVERTISE_PEER_URLS='--initial-advertise-peer-urls=https://${NODE_IP}:2380'
LISTEN_PEER_URLS='--listen-peer-urls=https://${NODE_IP}:2380'
LISTEN_CLIENT_URLS='--listen-client-urls=https://${NODE_IP}:2379,http://127.0.0.1:2379'
ADVERTISE_CLIENT_URLS='--advertise-client-urls=https://${NODE_IP}:2379'
INITIAL_CLUSTER='--initial-cluster=${ETCD_NODES}'
EOF

創(chuàng)建/etc/systemd/system/etcd.service

[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
Documentation=https://github.com/coreos

[Service]
Type=notify
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
EnvironmentFile=-/etc/etcd/etcd-key.conf
ExecStart=/usr/local/bin/etcd \
    $ETCD_NAME \
    $DATA_DIR \
    $INITIAL_CLUSTER_STATE \
    $INITIAL_CLUSTER_TOKEN \
    $INITIAL_ADVERTISE_PEER_URLS \
    $LISTEN_PEER_URLS \
    $LISTEN_CLIENT_URLS \
    $ADVERTISE_CLIENT_URLS \
    $INITIAL_CLUSTER \
    $ETCD_KEY

Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

參數(shù)說明:
WorkingDirectory: ETCD工作目錄

開放2379和2380端口
如果沒有開啟,ETCD可能無法啟動到涂。

firewall-cmd --add-port=2379/tcp --permanent
firewall-cmd --add-port=2379/tcp --permanent
firewall-cmd --reload

啟動 etcd 服務(wù)

systemctl daemon-reload 
systemctl enable etcd 
systemctl start etcd 
systemctl status etcd

驗證ETCD服務(wù)

 etcdctl \
  --endpoints=https://${NODE_IP}:2379  \
  --ca-file=/etc/etcd/ssl/ca.pem \
  --cert-file=/etc/etcd/ssl/etcd.pem \
  --key-file=/etc/etcd/ssl/etcd-key.pem \
  cluster-health

返回如下信息就表示我們配置的ETCD集群正常:

member 4f0deb6feb86262a is healthy: got healthy result from https://192.168.3.51:2379
member 88ccd3107db11e1e is healthy: got healthy result from https://192.168.3.50:2379
member a7363df6be39715b is healthy: got healthy result from https://192.168.3.52:2379
cluster is healthy

以上脊框,我們完成了ETCD的配置工作,但是践啄,如果我們要將ETCD在生產(chǎn)環(huán)境中使用浇雹,還需要對ETCD做備份。

ETCD備份

數(shù)據(jù)備份的重要性這里不詳說了屿讽。只能說昭灵,非常重要。
要了解etcd的備份伐谈,我們可以先看下以下連接.
https://github.com/coreos/etcd/blob/master/Documentation/v2/admin_guide.md#disaster-recovery

備份ETCD集群有兩種方式: ETCD內(nèi)置的snapshot和volume snapshot烂完。

ETCD內(nèi)置的快照(snapshot)備份非常簡單∷锌茫可以使用使用命令“etcdctl snapshot save”或者直接保存member/snap/db抠蚣。

API3備份
我們剛創(chuàng)建的ETCD集群生成快照命令如下,執(zhí)行下面的命令履澳,會在當(dāng)前生成一個snapshotdb文件柱徙。

ETCDCTL_API=3  etcdctl \
     --endpoints=https://${NODE_IP}:2379 \
     --cacert=/etc/etcd/ssl/ca.pem \
     --cert=/etc/etcd/ssl/etcd.pem \
     --key=/etc/etcd/ssl/etcd-key.pem \
     snapshot save snapshotdb
ETCDCTL_API=3  etcdctl \
    --endpoints=https://${NODE_IP}:2379 \
    --cacert=/etc/etcd/ssl/ca.pem \
    --cert=/etc/etcd/ssl/etcd.pem \
    --key=/etc/etcd/ssl/etcd-key.pem \
    --write-out=table snapshot status snapshotdb

API3備份恢復(fù)

yds-dev-svc01-etcd01 中執(zhí)行:

ETCDCTL_API=3 etcdctl snapshot restore snapshot.db \
  --name yds-dev-svc01-etcd01 \
  --initial-cluster ${ETCD_NODES} \
  --initial-cluster-token etcd-cluster-0 \
  --cert-file=/etc/etcd/ssl/etcd.pem \
  --key-file=/etc/etcd/ssl/etcd-key.pem \
  --peer-cert-file=/etc/etcd/ssl/etcd.pem \
  --peer-key-file=/etc/etcd/ssl/etcd-key.pem \
  --trusted-ca-file=/etc/etcd/ssl/ca.pem \
  --peer-trusted-ca-file=/etc/etcd/ssl/ca.pem \
  --initial-advertise-peer-urls http://192.168.3.50:2380

ETCDCTL_API=3 etcdctl snapshot restore snapshot.db \
  --name yds-dev-svc01-etcd02 \
  --initial-cluster ${ETCD_NODES} \
  --initial-cluster-token etcd-cluster-0 \
  --cert-file=/etc/etcd/ssl/etcd.pem \
  --key-file=/etc/etcd/ssl/etcd-key.pem \
  --peer-cert-file=/etc/etcd/ssl/etcd.pem \
  --peer-key-file=/etc/etcd/ssl/etcd-key.pem \
  --trusted-ca-file=/etc/etcd/ssl/ca.pem \
  --peer-trusted-ca-file=/etc/etcd/ssl/ca.pem \
  --initial-advertise-peer-urls http://192.168.3.51:2380

ETCDCTL_API=3 etcdctl snapshot restore snapshot.db \
  --name yds-dev-svc01-etcd03 \
  --initial-cluster ${ETCD_NODES} \
  --initial-cluster-token etcd-cluster-0 \
  --cert-file=/etc/etcd/ssl/etcd.pem \
  --key-file=/etc/etcd/ssl/etcd-key.pem \
  --peer-cert-file=/etc/etcd/ssl/etcd.pem \
  --peer-key-file=/etc/etcd/ssl/etcd-key.pem \
  --trusted-ca-file=/etc/etcd/ssl/ca.pem \
  --peer-trusted-ca-file=/etc/etcd/ssl/ca.pem \
  --initial-advertise-peer-urls http://192.168.3.52:2380


API2備份
備份命令:

etcdctl backup --data-dir /var/lib/etcd --backup-dir /tmp/etcd_backup

備份恢復(fù):

etcd -data-dir=/tmp/etcd_backup -force-new-cluster

未完成的部分: ETCD監(jiān)控和ETCD調(diào)優(yōu)。這兩部分會在整篇文章寫完后再寫奇昙。

以上配置有什么問題护侮,請留言,會即時更改储耐。感謝各位老鐵羊初。

文檔組成(會更據(jù)編寫時調(diào)整):

  • 1. ETCD集群安裝 – 完成
  • 2. apiserver高可用安裝 — 完成
  • 3. node中docker安裝及配置
  • 4. Docker倉庫安裝
  • 5. Kubernetes安裝
  • 6. Kubernetes中Jenkins安裝
  • 7. Kubernetes中日志收集Graylog2安裝
  • 8. Kubernetes中日志收集flume安裝
  • 9. Kubernetes監(jiān)控prometheus安裝
  • 10. Kubernetes監(jiān)控grafana安裝

你的支持,是筆者最大的動力:


這里寫圖片描述

</article>

版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載长赞。 https://blog.csdn.net/wenwst/article/details/79851235

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末晦攒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子得哆,更是在濱河造成了極大的恐慌脯颜,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贩据,死亡現(xiàn)場離奇詭異栋操,居然都是意外死亡,警方通過查閱死者的電腦和手機饱亮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門矾芙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人近上,你說我怎么就攤上這事剔宪。” “怎么了壹无?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵葱绒,是天一觀的道長。 經(jīng)常有香客問我斗锭,道長哈街,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任拒迅,我火速辦了婚禮骚秦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘璧微。我一直安慰自己作箍,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布前硫。 她就那樣靜靜地躺著胞得,像睡著了一般。 火紅的嫁衣襯著肌膚如雪屹电。 梳的紋絲不亂的頭發(fā)上阶剑,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音危号,去河邊找鬼牧愁。 笑死,一個胖子當(dāng)著我的面吹牛外莲,可吹牛的內(nèi)容都是我干的猪半。 我是一名探鬼主播兔朦,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼磨确!你這毒婦竟也來了沽甥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤乏奥,失蹤者是張志新(化名)和其女友劉穎摆舟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邓了,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡恨诱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了驶悟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胡野。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡材失,死狀恐怖痕鳍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情龙巨,我是刑警寧澤笼呆,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站旨别,受9級特大地震影響诗赌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜秸弛,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一铭若、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧递览,春花似錦叼屠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至儿捧,卻和暖如春荚坞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背菲盾。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工颓影, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人懒鉴。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓瞭空,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子咆畏,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容

  • from http://www.infoq.com/cn/articles/etcd-interpretation...
    小樹苗苗閱讀 13,939評論 3 38
  • 安裝k8s Master高可用集群 主機 角色 組件 172.18.6.101 K8S Master Kubele...
    jony456123閱讀 8,042評論 0 9
  • 2017.12.13 是鄭州的初雪啊。 街道上飄著零零星星的小雪花 帶著興奮與激動下樓看雪 還以為和去年的初雪一樣...
    余生22閱讀 149評論 0 0
  • 姍姍來遲的不是你 是這晚秋 這仿佛最后的一別 杏葉飄零,連同 看向你的目光一起落下 醉不了的不是這杯中酒 是這深夜...
    念奴嬌雪閱讀 258評論 7 9
  • 昨天下了一天雨悯蝉,下班騎車帶兒子回家。碰到亂穿馬路的行人仅颇,急剎受神,車子滑倒,兒子和我都摔在地上魏颓,車還壓在兒子身上...
    小孬0792閱讀 285評論 0 0