Kubernetes单节点集群部署----etcd数据库
一:介绍etcd
etcd是一个采用HTTP协议的健/值对存储系统,它是一个分布式和功能层次配置系统,可用于构建服务发现系统、用于共享配置和服务发现。提供了可靠的数据持久化特性,是安全的并且文档也十分齐全。由GO语言实现。
1、etcd主要提供的能力
-
提供存储以及获取数据的接口,它通过协议保证 Etcd 集群中的多个节点数据的强一致性。用于存储元信息以及共享配置。
-
提供监听机制,客户端可以监听某个key或者某些key的变更,用于监听和推送变更。
-
提供key的过期以及续约机制,客户端通过定时刷新来实现续约,用于集群监控以及服务注册发现。
-
提供原子的CAS(Compare-and-Swap)和 CAD(Compare-and-Delete)支持。用于分布式锁以及leader选举。
2、工作原理
etcd使用Raft协议来维护集群内各个节点状态的一致性。简单说,etcd集群是一个分布式系统,由多个节点相互通信构成整体对外服务,每个节点都存储了完整的数据,并且通过Raft协议保证每个节点维护的数据是一致的。
二:搭建etcd数据库
相关软件包可自行下载,链接:https://pan.baidu.com/s/1UahM8C6Nc5CwUaaQpLHY0Q
提取码:q52e
三台虚拟机:master、node01、node02
每台虚拟机都要先配置相对应的静态IP地址。
以一台为例:
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# service network restart ‘重启网络’
[root@localhost ~]# ping www.baidu.com ‘测试网络是否通’
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# systemctl disable NetworkManager ‘防止重启虚拟机IP地址变化’
[root@localhost ~]# iptables -F ‘清空防火墙规则’
[root@localhost ~]# setenforce 0 ‘关闭核心防护’
(在master节点配置
)
1、 ETCD之间通信都是经过加密的,所以要创建CA证书, 要下载认证工具(cfssl工具)
[root@localhost ~]# mkdir k8s
[root@localhost ~]# cd k8s/
[root@localhost k8s]# vim cfssl.sh
curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl
curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson
curl -L https://pkg.cfssl.