3. 镜像搭建Etcd

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了3. 镜像搭建Etcd脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

镜像部署ETCD

kubernetes 系统使用 etcd 数据库存储所有数据,该数据库是很好的学习范例,此处不展开相关资料。

使用的变量

#IPADR=100.69.218.95 当前部署的机器 IP
#对外暴露端口2379 通信端口2380

部署步骤

创建证书

为了保证通信安全,客户端(如 etcdctl) 与 etcd 集群、组件之间的通信使用TLS进行加密。 在CFssldir目录下创建证书文件。 创建 etcd 证书签名请求:

$ cat > etcd-csr.JSON <<EOF
{
  "CN": "etcd",
  "hosts": [
    "127.0.0.1",
    "100.69.218.95"
  ],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "BeiJing",
      "L": "BeiJing",
      "O": "k8s",
      "OU": "System"
    }
  ]
}
EOF

生成 etcd 证书和私钥

$ cfssl gencert -ca=/root/cfssldir/ca.PEm 
  -ca-key=/root/cfssldir/ca-key.pem 
  -config=/root/cfssldir/ca-config.json 
  -PRofile=kubernetes etcd-csr.json | cfssljson -bare etcd
$ ls etcd*
etcd.csr  etcd-csr.json  etcd-key.pem etcd.pem
#在根目录下创建用于部署etcd的文件,并拷贝证书到该目录
$ mkdir -p /root/etcddockerfile
$ cp  ca.pem etcd.pem etcd-key.pem /root/etcddockerfile

etcd部署

创建Dockerfile与docker-entrypoint.sh文件用于创建镜像

$ cd /root/etcddockerfile
$ docker pull harbor.cmft.COM/kubernetes1.18/etcd-amd64:3.2.18 #若从外网环境下拉取镜像可选择gcr.io官方拉取
$ vim docker-entrypoint.sh
#!/bin/sh
ETCD_CMD=" etcd --name etcd0 --data-dir /data/k8s/etcd/data 
--cert-file etcd.pem 
--key-file etcd-key.pem 
--trusted-ca-file ca.pem 
--peer-cert-file etcd.pem 
--peer-key-file etcd-key.pem 
--peer-trusted-ca-file ca.pem 
--peer-client-cert-auth 
--client-cert-auth 
--listen-client-urls https://0.0.0.0:2379  
--advertise-client-urls https://127.0.0.1:2379 
--listen-peer-urls https://0.0.0.0:2380 
--inITial-cluster etcd0=https://127.0.0.1:2380 
--initial-cluster-token my-etcd0 
--initial-advertise-peer-urls https://127.0.0.1:2380 "
echo -e "Running '$ETCD_CMD'nBEgin ETCD OUTPUTn"
exec $ETCD_CMD
  • 指定 etcd 的工作目录和数据目录为 /data/k8s/etcd/data,需在启动服务前创建这个目录;
  • 为了保证通信安全,需要指定 etcd 的公私钥(cert-filekey-file)、Peers 通信的公私钥和 CA 证书(peer-cert-filepeer-key-filepeer-trusted-ca-file)、客户端的CA证书(trusted-ca-file);
  • 由于docker的网络环境,监听端口地址listen-client-urls必须为 https://0.0.0.0:2379
$ vim Dockerfile
From harbor.cmft.com/kubernetes1.18/etcd-amd64:3.2.18
MaiNTAINER  linyx002
RUN mkdir -p /data/k8s/etcd/data 
    mkdir -p /data/k8s/etcd/wal 
    mkdir -p /kubernetes/network
COPY  etcd-key.pem /
COPY  etcd.pem /
COPY  ca.pem /
COPY docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]
  • 目录/kubernetes/network为后续部署flannel网络时的必要目录。

接下来创建镜像并启动etcd,进行功能验证

$ docker build -t harbor.cmft.com/kubernetes1.18/etcd-amd64:3.2.18 . #后面有个点
#看到成功构建信息后执行以下命令
$docker run -d  -p 2379:2379 -p 2380:2380 --name="etcd0" harbor.cmft.com/kubernetes1.18/etcd-amd64:3.2.18
#进入容器内部查看etcd状态
$ docker exec -it etcd0 sh
#执行如下命令
ETCDCTL_API=3 etcdctl 
  --cACERt=ca.pem 
  --cert=etcd.pem 
  --key=etcd-key.pem 
  endpoint health
  #返回以下命令时成功
127.0.0.1:2379 is healthy: successfully committed proposal: took = 1.013236ms

  • -p 2379:2379 -p 2380:2380表示绑定docker端口与本机端口
  • 若发生错误,可使用exit命令退出容器并使用 docker LOGs etcd0命令查看日志

脚本宝典总结

以上是脚本宝典为你收集整理的3. 镜像搭建Etcd全部内容,希望文章能够帮你解决3. 镜像搭建Etcd所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。