ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

3. 镜像搭建Etcd

2021-10-04 17:00:30  阅读:182  来源: 互联网

标签:key file Etcd -- ca pem 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 OUTPUT\n"
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命令查看日志

标签:key,file,Etcd,--,ca,pem,etcd,镜像,搭建
来源: https://www.cnblogs.com/linyxBlog/p/15366704.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有