脚本宝典收集整理的这篇文章主要介绍了3. 镜像搭建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
创建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
,需在启动服务前创建这个目录;cert-file
和key-file
)、Peers 通信的公私钥和 CA 证书(peer-cert-file
、peer-key-file
、peer-trusted-ca-file
)、客户端的CA证书(trusted-ca-file);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,请注明来意。