K8S—单节点部署—etcd数据库(1)
一.etcd群集
etcd是CoreOS团队于为2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于go语言开发。
etcd群集属于无中心化集群,应用于区块链技术
二.etcd作为服务发现系统的特点
简单:安装配置简单,而且提供了HTTP进行交互,使用也很简单
安全:支持SSL证书验证
快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作
可靠:采用raft算法,实现分布式数据的可用性和一致性
三.etcd的特征
1.一个强一致性、高可用的服务存储目录
2.具有注册服务和健康服务健康状况的机制:用户可以在etcd中注册服务,并且对注册的服务配置key TTL,定时保持服务的心跳以达到监控健康状态的效果
3.一种查找和连接服务的机制:通过在etcd指定的主题下注册的服务业能在对应的主题下查找到。为了确保连接,我们可以在每个服务器器上部署一个proxy模式的etcd,这样就可以确保访问etcd集群的服务都能够互相连接。
四.部署etcd数据库
角色 |
ip |
组件 |
master |
192.168.88.11 |
kube-apiserver、kube-controller-manager、kube-scheduler、etcd |
node1 |
192.168.88.13 |
kubelet、kube-proxy、docker、flnanel、etcd |
node2 |
192.168.88.14 |
kubelet、kube-proxy、docker、flannel、etcd |
1.修改网卡,以第一台master为例
配置网络环境:
service network restart ‘重启网络’
ping www.baidu.com ‘测试网络是否通’
systemctl stop NetworkManager
systemctl disable NetworkManager ‘防止重启虚拟机IP地址变化’
iptables -F ‘清空防火墙规则’
setenforce 0 ‘关闭核心防护’
2.创建k8s目录,编写证书,签名,密钥脚本
[root@localhost ~]# mkdir k8s
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg k8s 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]# cd k8s/
[root@localhost k8s]# ls
etcd-cert.sh etcd.sh
3.定义ca证书的配置文件
[root@localhost k8s]# vim etcd-cert.sh
cat > ca-config.json <<EOF
{
"signing": {
"default": {
"expiry": "87600h" //定义使用时长
},
"profiles": {
"www": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth", //表示server,client可以用ca进行验证
"client auth"
]
}
}
}
}
EOF
cat > ca-csr.json <<EOF //实现证书签名
{
"CN": "etcd CA",
"key": { //定义算法和长度
"algo": "rsa",
"size": 2048
},
"names": [ //定义名称
{
"C": "CN",
"L": "Beijing",
"ST": "Beijing"
}
]
}
EOF
cfssl gencert -initca ca-csr.json | cfssljson -bare ca - //生成ca证书和私钥
#-----------------------
cat > server-csr.json <<EOF //指定etcd三个节点的通信验证
{
"CN": "etcd",
"hosts": [ //三个节点的地址
"192.168.88.11",
"192.168.88.13",
"192.168.88.14"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing"
}
]
}
EOF
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server //使用cfssl工具生成证书
</