首页 > 其他分享 >ETCD集群安装

ETCD集群安装

时间:2023-08-24 14:23:27浏览次数:38  
标签:etcd ca pem 集群 https ETCD 安装 localhost

一、证书类型介绍

client certificate 用于通过服务器验证客户端。例如etcdctl,etcd proxy,fleetctl或docker客户端。

server certificate 由服务器使用,并由客户端验证服务器身份。例如docker服务器或kube-apiserver。

peer certificate 由 etcd 集群成员使用,供它们彼此之间通信使用。

二、证书生成

1、cfssl 安装

下载 cfssl,命令如下:

  1. [root@localhost etcd]# wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
  2. [root@localhost etcd]# mv cfssl_linux-amd64 /usr/bin/cfssl

2、cfssljson 安装

  1. [root@localhost etcd]# wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
  2. [root@localhost etcd]# mv cfssljson_linux-amd64 /usr/bin/cfssljson 

3、添加可执行权限

  1. [root@localhost etcd]# chmod +x /usr/bin/{cfssl,cfssljson}

4、配置CA选项

  1. [root@localhost etcd]# mkdir etcd-ca-gen
  2. [root@localhost etcd]# cd etcd-ca-gen
  3. [root@localhost etcd]# cat > ca-config.json << EOF
  4. {
  5. "signing": {
  6. "default": {
  7. "expiry": "43800h"
  8. },
  9. "profiles": {
  10. "server": {
  11. "expiry": "43800h",
  12. "usages": [
  13. "signing",
  14. "key encipherment",
  15. "server auth",
  16. "client auth"
  17. ]
  18. },
  19. "client": {
  20. "expiry": "43800h",
  21. "usages": [
  22. "signing",
  23. "key encipherment",
  24. "client auth"
  25. ]
  26. },
  27. "peer": {
  28. "expiry": "43800h",
  29. "usages": [
  30. "signing",
  31. "key encipherment",
  32. "server auth",
  33. "client auth"
  34. ]
  35. }
  36. }
  37. }
  38. }
  39. EOF
  40. [root@localhost etcd]# cat > ca-csr.json <<EOF
  41. {
  42. "CN": "WAE Etcd CA",
  43. "key": {
  44. "algo": "rsa",
  45. "size": 2048
  46. },
  47. "names": [
  48. {
  49. "C": "CN",
  50. "L": "FJ",
  51. "ST": "Xia Men"
  52. }
  53. ]
  54. }
  55. EOF

5、生成CA证书

  1. [root@localhost etcd]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca -#将会生成以下几个文件:
  2. ca-key.pem
  3. ca.csr
  4. ca.pem

6、生成服务器端证书

  1. [root@localhost etcd]# cat > server.json <<EOF
  2. {
  3. "CN": "WAE Etcd Server",
  4. "hosts": [
  5. "etcd1-com-hakim.com",
  6. "etcd2-com-hakim.com",
  7. "etcd3-com-hakim.com",
  8. "etcd4-com-hakim.com",
  9. "etcd5-com-hakim.com"
  10. ],
  11. "key": {
  12. "algo": "rsa",
  13. "size": 2048
  14. },
  15. "names": [
  16. {
  17. "C": "CN",
  18. "L": "FJ",
  19. "ST": "Xia Men"
  20. }
  21. ]
  22. }
  23. EOF
  24. [root@localhost etcd]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=server server.json | cfssljson -bare server

7、生成对等证书

  1. $ cp server.json member.json
  2. $ cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=peer member.json | cfssljson -bare member

8、生成客户端证书

  1. [root@localhost etcd]# cat > client.json <<EOF
  2. {
  3. "CN": "client",
  4. "hosts": [""],
  5. "key": {
  6. "algo": "rsa",
  7. "size": 2048
  8. },
  9. "names": [
  10. {
  11. "C": "CN",
  12. "L": "FJ",
  13. "ST": "Xia Men"
  14. }
  15. ]
  16. }
  17. EOF
  18. [root@localhost etcd]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client client.json | cfssljson -bare client

9、保存证书和密钥

将所有 pem 文件复制到 /etc/etcd/etcd-ca/ 目录下,命令如下:

  1. [root@localhost etcd]# mkdir /etc/etcd/etcd-ca/
  2. [root@localhost etcd]# cp *.pem /etc/etcd/etcd-ca/     #注意:把证书拷贝到所有etcd节点,且目录结构相同

三、配置Etcd

1、下载及配置目录

  1. [root@localhost]# tar xvf etcd-v3.4.27-linux-amd64.tar.gz -C /opt
  2. [root@localhost]#  cp etcd etcdctl /usr/bin/
  3. [root@localhost]# chmod 755 /usr/bin/{etcd,etcdctl}
  4. [root@localhost]# mkdir /data/etcd -p         #创建数据目录
  5. [root@localhost]#  mkdir /var/lib/etcd          #创建工作目录

2、创建集群配置文件

第一台配置

[root@localhost]#  cat /etc/etcd/etcd.conf

# [member]
ETCD_NAME=k8s-master01
ETCD_DATA_DIR="/data/etcd/"
ETCD_LISTEN_PEER_URLS="https://192.168.1.87:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.1.87:2379,https://127.0.0.1:2379"
#[cluster]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.1.87:2380"
ETCD_INITIAL_CLUSTER="k8s-master01=https://192.168.1.87:2380,k8s-master02=https://192.168.1.85:2380,k8s-master03=https://192.168.1.91:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="smartgo"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.1.87:2379"
#[security]
ETCD_CERT_FILE="/etc/etcd/etcd-ca/server.pem"
ETCD_KEY_FILE="/etc/etcd/etcd-ca/server-key.pem"
ETCD_CLIENT_CERT_AUTH="true"
ETCD_TRUSTED_CA_FILE="/etc/etcd/etcd-ca/ca.pem"
ETCD_AUTO_TLS="true"
ETCD_PEER_CERT_FILE="/etc/etcd/etcd-ca/member.pem"
ETCD_PEER_KEY_FILE="/etc/etcd/etcd-ca/member-key.pem"
ETCD_PEER_CLIENT_CERT_AUTH="true"
ETCD_PEER_TRUSTED_CA_FILE="/etc/etcd/etcd-ca/ca.pem"
ETCD_PEER_AUTO_TLS="true"

第二台配置

# [member]
ETCD_NAME=k8s-master02
ETCD_DATA_DIR="/data/etcd/"
ETCD_LISTEN_PEER_URLS="https://192.168.1.85:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.1.85:2379,https://127.0.0.1:2379"
#[cluster]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.1.85:2380"
ETCD_INITIAL_CLUSTER="k8s-master01=https://192.168.1.87:2380,k8s-master02=https://192.168.1.85:2380,k8s-master03=https://192.168.1.91:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="smartgo"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.1.85:2379"
#[security]
ETCD_CERT_FILE="/etc/etcd/etcd-ca/server.pem"
ETCD_KEY_FILE="/etc/etcd/etcd-ca/server-key.pem"
ETCD_CLIENT_CERT_AUTH="true"
ETCD_TRUSTED_CA_FILE="/etc/etcd/etcd-ca/ca.pem"
ETCD_AUTO_TLS="true"
ETCD_PEER_CERT_FILE="/etc/etcd/etcd-ca/member.pem"
ETCD_PEER_KEY_FILE="/etc/etcd/etcd-ca/member-key.pem"
ETCD_PEER_CLIENT_CERT_AUTH="true"
ETCD_PEER_TRUSTED_CA_FILE="/etc/etcd/etcd-ca/ca.pem"
ETCD_PEER_AUTO_TLS="true"

第三台配置

# [member]
ETCD_NAME=k8s-master03
ETCD_DATA_DIR="/data/etcd/"
ETCD_LISTEN_PEER_URLS="https://192.168.1.91:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.1.91:2379,https://127.0.0.1:2379"
#[cluster]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.1.91:2380"
ETCD_INITIAL_CLUSTER="k8s-master01=https://192.168.1.87:2380,k8s-master02=https://192.168.1.85:2380,k8s-master03=https://192.168.1.91:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="smartgo"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.1.91:2379"
#[security]
ETCD_CERT_FILE="/etc/etcd/etcd-ca/server.pem"
ETCD_KEY_FILE="/etc/etcd/etcd-ca/server-key.pem"
ETCD_CLIENT_CERT_AUTH="true"
ETCD_TRUSTED_CA_FILE="/etc/etcd/etcd-ca/ca.pem"
ETCD_AUTO_TLS="true"
ETCD_PEER_CERT_FILE="/etc/etcd/etcd-ca/member.pem"
ETCD_PEER_KEY_FILE="/etc/etcd/etcd-ca/member-key.pem"
ETCD_PEER_CLIENT_CERT_AUTH="true"
ETCD_PEER_TRUSTED_CA_FILE="/etc/etcd/etcd-ca/ca.pem"
ETCD_PEER_AUTO_TLS="true"

3、制作etcd启动文件

[root@localhost]# cat /usr/lib/systemd/system/etcd.service

[Unit]
Description=Etcd Server
After=network.target
[Service]
Type=notify
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/bin/etcd
restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target

[root@localhost]#systemctl daemon-reload

[root@localhost]#systemctl start etcd

[root@localhost]#systemctl status etcd

部署etcd错误总结

1、conflicting environment variable "ETCD_NAME" is shadowed by corresponding command-line flag (either unset environment variable or disable flag)

原因:ETCD3.4版本会自动读取环境变量的参数,所以EnvironmentFile文件中有的参数,不需要再次在ExecStart启动参数中添加,二选一,如同时配置,会触发以下类似报错

etcd: conflicting environment variable "ETCD_NAME" is shadowed by corresponding command-line flag (either unset environment variable or disable flag)

解决:剔除ExecStart中和配置文件重复的内容即可

2、Failed at step CHDIR spawning /usr/bin/etcd: No such file or directory

原因:etcd.service服务配置文件中设置的工作目录WorkingDirectory=/var/lib/etcd/必须存在,否则会报以上错误

3、http 与 https 之间不能切换,由于刚开始创建时配置文件中写的是http,后修改为https,所以集群一直报错

先通过 http 建立了 cluster,然后再用自签证书 https 来建立,这样就会报错:

error "tls: first record does not look like a TLS handshake"

经过验证:无论是从 http => https,还是从 https => http 的切换都会报这个错,因为一旦建立 cluster 成功,则把连接的协议(http/https) 写入到 etcd 存储里了,不能再更改连接协议。

解决:如果真正遇到需要切换协议,可尝试下面方式

  • 允许删除数据:删除后重新建立 cluster     本文中rm -rf  /data/etcd/*

标签:etcd,ca,pem,集群,https,ETCD,安装,localhost
From: https://www.cnblogs.com/cnyw/p/17654010.html

相关文章

  • Ubuntu22隐藏上方的状态栏(hide top bar):安装hide top bar这个GNOME插件
    参考链接:https://techithings.hashnode.dev/ubuntu-how-to-hide-top-bar-and-side-bar具体步骤1.安装extensionmanger这个软件sudoapt-getupdatesudoapt-getinstallgnome-shell-extension-manager-y2.打开软件extension-manager3.点击browse,搜索hidetopbar这个插......
  • secure boot造成Ubuntu nvidia显卡驱动安装失败
    1.驱动安装教程驱动安装可参考:[1] Linux安装Nvidia显卡驱动+CUDA+cuDNN+PyTorch这个教程,在关闭secureboot的主机上安装是没问题的,但是如果是默认开启的主机(特别是台式机),就会造成一些问题。2.secureboot是什么secureboot是2012年出现的Windows8预装电脑里的UEFI功能,目前......
  • Docker 安装 OpenResty教程
    Docker部署1.拉取镜像PSC:\Users\Administrator>dockerpullopenresty/openresty2.启动openrestyPSC:\Users\Administrator>dockerrun-d--nameopenresty-p9000:80openresty/openresty3.创建挂载目录PSC:\Users\Administrator>mkdir-p/docker/openre......
  • 要构建此项目,必须安装以下工作负载: wasm-tools
    要构建此项目,必须安装以下工作负载:wasm-tools要安装这些工作负载,请运行以下命令:dotnetworkloadrestore AdminAPP C:\ProgramFiles\dotnet\sdk\7.0.306\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.ImportWorkloads.targets 38在项目的目录cmd运行命令dotnetwor......
  • ceph-18.2.0版本编译安装
    从ceph出了最新版本后,网上没有查到相关的编译安装文档,本人自己测试了一下,暂时以一台服务器作为样本来部署,具体环境如下1. 操作系统:ubuntu-server版本22.042.磁盘:外挂2个20GB的裸盘3.ceph版本18.2.0,下载路径如下https://download.ceph.com/tarballs/操作步骤:1. 解压......
  • win7 安装高版本node
    目前nodejs最高支持13.14版本的msi安装包安装。官方历史版本下载:https://nodejs.org/zh-cn/download/releases/。如果想使用msi安装更高级的版本系统提示Windows版本不支持。   解决方法:1、先在系统安装一个13.14版本,记得安装路径。2、在官网下载想要安装......
  • HadoopYarn模式集群安装
    Hadoop集群安装步骤1.Hadoop集群安装1.1环境说明集群:三台Linux机器(SUSE);JDK1.8(提前下载好对应的tar.gz)Hadoop2.7.2(提前下载好对应的tar.gz)以下所有配置需要在每个主机上进行,但按照本文配置,可配置一个以后复制过去,完全相同,不用修改。1.2同步时......
  • pip或者pip3安装软件,使用国内的镜像源?
    使用pip3或者pip安装软件,默认使用的是python官方的镜像,如果遇到速度慢,或者超时的情况,可以考虑使用国内的镜像源。 如下:清华大学镜像源(Tuna):  https://pypi.tuna.tsinghua.edu.cn/simplepipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplepackage-name  ......
  • Windows + Linux 双系统详细安装步骤
    对于新手来说,学习Linux系统有多种方式选择,可以选择虚拟机、可以选择直接安装Linux系统,下面主要和大家分享一下通过直接安装Linux系统的方法。 U盘启动盘的制作准备一个8G以上的U盘(其实4G就足够),备份资料,后面会对U盘进行格式化。然后去ubuntu的官网下载你想要安装......
  • 【SDE】Centos7 离线安装 Postgresql 12 并配置 sde
    使用ArcGIS10.9.1对应的Postgresql12.7rpm包postgresql12-12.7-1PGDG.rhel7.x86_64.rpmpostgresql12-contrib-12.7-1PGDG.rhel7.x86_64.rpmpostgresql12-libs-12.7-1PGDG.rhel7.x86_64.rpmpostgresql12-server-12.7-1PGDG.rhel7.x86_64.rpmlibicu-50.2-4.el7_7.x......