当前位置: 首页 > news >正文

【云原生 · Kubernetes】kubernetes v1.23.3 二进制部署(三)

5 部署 etcd 集群

etcd 是基于 Raft 的分布式 KV 存储系统,由 CoreOS 开发,常用于服务发现、共享配置以及并发控制(如 leader 选举、分布式锁等)。
kubernetes 使用 etcd 集群持久化存储所有 API 对象、运行数据。

etcd 集群节点名称和 IP 如下:

集群节点名称IP
k8s-master-1192.168.2.175
k8s-master-2192.168.2.176
k8s-master-3192.168.2.178

注意:

  1. 如果没有特殊指明,本文档的所有操作均在qist 节点上执行

5.1 下载和分发 etcd 二进制文件

cd /opt/k8s/work
wget https://github.com/etcd-io/etcd/releases/download/v3.5.2/etcd-v3.5.2-linuxamd64.tar.gz
tar -xvf tcd-v3.5.2-linux-amd64.tar.gz

分发二进制文件到集群所有节点:

cd /opt/k8s/work
scp -r etcd-v3.5.2-linux-amd64/etcd* root@192.168.2.175:/apps/etcd/bin
scp -r etcd-v3.5.2-linux-amd64/etcd* root@192.168.2.176:/apps/etcd/bin
scp -r etcd-v3.5.2-linux-amd64/etcd* root@192.168.2.177:/apps/etcd/bin

5.2 创建 etcd 证书和私钥

  • 创建etcd服务证书
  • 创建证书签名请求:
cat > /opt/k8s/cfssl/etcd/etcd-server.json << EOF
{
  "CN": "etcd",
  "hosts": [
    "127.0.0.1",
    "192.168.2.175","192.168.2.176","192.168.2.177",
    "k8s-master-1","k8s-master-2","k8s-master-3"
],
"key": {
  "algo": "rsa",
  "size": 2048
},
"names": [
  {
        "C": "CN",
        "ST": "GuangDong",
		"L": "GuangZhou",
		"O": "k8s",
		"OU": "Qist"
    }
  ]
}
EOF

生成证书和私钥:

cfssl gencert \
    -ca=/opt/k8s/cfssl/pki/etcd/etcd-ca.pem \
    -ca-key=/opt/k8s/cfssl/pki/etcd/etcd-ca-key.pem \
    -config=/opt/k8s/cfssl/ca-config.json \
    -profile=kubernetes \
    /opt/k8s/cfssl/etcd/etcd-server.json | \
    cfssljson -bare /opt/k8s/cfssl/pki/etcd/etcd-server
  • 创建etcd节点证书

192.168.2.175节点

cat > /opt/k8s/cfssl/etcd/k8s-master-1.json << EOF
{
  "CN": "etcd",
  "hosts": [
    "127.0.0.1",
    "192.168.2.175",
    "k8s-master-1"
],
"key": {
    "algo": "rsa",
    "size": 2048
},
"names": [
  {
        "C": "CN",
		"ST": "GuangDong",
		"L": "GuangZhou",
		"O": "k8s",
		"OU": "Qist"
    }
  ]
}
EOF

生成证书和私钥:

cfssl gencert \
    -ca=/opt/k8s/cfssl/pki/etcd/etcd-ca.pem \
	-ca-key=/opt/k8s/cfssl/pki/etcd/etcd-ca-key.pem \
	-config=/opt/k8s/cfssl/ca-config.json \
	-profile=kubernetes \
	/opt/k8s/cfssl/etcd/k8s-master-1.json | \
	cfssljson -bare /opt/k8s/cfssl/pki/etcd/etcd-member-k8s-master-1

192.168.2.176节点

cat > /opt/k8s/cfssl/etcd/k8s-master-2.json << EOF
{
  "CN": "etcd",
  "hosts": [
	"127.0.0.1",
	"192.168.2.176",
	"k8s-master-2"
],
192.168.2.176节点
"key": {
  "algo": "rsa",
  "size": 2048
},
"names": [
  {
		"C": "CN",
		"ST": "GuangDong",
		"L": "GuangZhou",
		"O": "k8s",
		"OU": "Qist"
	}
  ]
}
EOF

生成证书和私钥:

cfssl gencert \
	-ca=/opt/k8s/cfssl/pki/etcd/etcd-ca.pem \
	-ca-key=/opt/k8s/cfssl/pki/etcd/etcd-ca-key.pem \
	-config=/opt/k8s/cfssl/ca-config.json \
	-profile=kubernetes \
	/opt/k8s/cfssl/etcd/k8s-master-2.json | \
	cfssljson -bare /opt/k8s/cfssl/pki/etcd/etcd-member-k8s-master-2

192.168.2.177 节点

cat > /opt/k8s/cfssl/etcd/k8s-master-3.json << EOF
{
  "CN": "etcd",
  "hosts": [
    "127.0.0.1",
    "192.168.2.177",
"k8s-master-3"
],
"key": {
	"algo": "rsa",
	"size": 2048
},
"names": [
	{
		"C": "CN",
		"ST": "GuangDong",
		"L": "GuangZhou",
		"O": "k8s",
		"OU": "Qist"
	}
  ]
}
EOF

生成证书和私钥:

cfssl gencert \
		-ca=/opt/k8s/cfssl/pki/etcd/etcd-ca.pem \
		-ca-key=/opt/k8s/cfssl/pki/etcd/etcd-ca-key.pem \
		-config=/opt/k8s/cfssl/ca-config.json \
		-profile=kubernetes \
		/opt/k8s/cfssl/etcd/etcd-client.json | \
		cfssljson -bare /opt/k8s/cfssl/pki/etcd/etcd-client

分发生成的证书和私钥到各 etcd 节点:

# 分发server 证书
scp -r /opt/k8s/cfssl/pki/etcd/etcd-server* root@192.168.2.175:/apps/etcd/ssl
scp -r /opt/k8s/cfssl/pki/etcd/etcd-server* root@192.168.2.176:/apps/etcd/ssl
scp -r /opt/k8s/cfssl/pki/etcd/etcd-server* root@192.168.2.177:/apps/etcd/ssl
# 分发192.168.2.175 节点证书
scp -r /opt/k8s/cfssl/pki/etcd/etcd-member-k8s-master-1*
root@192.168.2.175:/apps/etcd/ssl
# 分发192.168.2.176 节点证书
scp -r /opt/k8s/cfssl/pki/etcd/etcd-member-k8s-master-2*
root@192.168.2.176:/apps/etcd/ssl
# 分发192.168.2.177 节点证书
scp -r /opt/k8s/cfssl/pki/etcd/etcd-member-k8s-master-3*
root@192.168.2.175:/apps/etcd/ssl
# 分发客户端证书到K8S master 节点 kube-apiserver 连接etcd 集群使用
scp -r /opt/k8s/cfssl/pki/etcd/etcd-client* root@192.168.2.175:/apps/k8s/ssl/etcd/
scp -r /opt/k8s/cfssl/pki/etcd/etcd-client* root@192.168.2.176:/apps/k8s/ssl/etcd/
scp -r /opt/k8s/cfssl/pki/etcd/etcd-client* root@192.168.2.177:/apps/k8s/ssl/etcd/
  • WorkingDirectory 、 --data-dir :指定工作目录和数据目录为${ETCD_DATA_DIR},需在启动服务前创建这个目录;
  • –wal-dir :指定 wal 目录,为了提高性能,一般使用 SSD 或者和 --data-dir 不同的磁盘;
  • –name :指定节点名称,当 --initial-cluster-state 值为 new 时, --name 的参数值必须位于 --initial-cluster 列表中;
  • –cert-file 、 --key-file :etcd server 与 client 通信时使用的证书和私钥;
  • –trusted-ca-file :签名 client 证书的 CA 证书,用于验证 client 证书;
  • –peer-cert-file 、 --peer-key-file :etcd 与 peer 通信使用的证书和私钥;
  • –peer-trusted-ca-file :签名 peer 证书的 CA 证书,用于验证 peer 证书;

5.3 创建etcd 运行用户

k8s-master-1 k8s-master-2 k8s-master-3 节点上执行

  • 创建etcd用户
useradd etcd -s /sbin/nologin -M
  • etcd 目录给用户权限
chown -R etcd:etcd /apps/etcd
[root@k8s-master-3 ~]# ls -la /apps/etcd/
total 4
drwxr-xr-x 7 etcd etcd 64 Feb 10 20:32 .
drwxr-xr-x. 8 root root 85 Aug 26 18:54 ..
drwxr-xr-x 3 etcd etcd 117 Feb 10 20:28 bin
drwxr-xr-x 2 etcd etcd 18 Feb 10 20:33 conf
drwxr-xr-x 3 etcd etcd 26 Aug 26 12:57 data
drwxr-xr-x 2 etcd etcd 4096 Aug 26 12:58 ssl

5.4 启动 etcd 服务

k8s-master-1 k8s-master-2 k8s-master-3 节点上执行

# 全局刷新service
systemctl daemon-reload
# 设置etcd 开机启动
systemctl enable etcd
#重启etcd
systemctl restart etcd
  • 必须先创建 etcd 数据目录和工作目录;
  • etcd 进程首次启动时会等待其它节点的 etcd 加入集群,命令 systemctl start etcd 会卡住一段时 间,为正常现象;

5.5 检查启动结果

k8s-master-1 k8s-master-2 k8s-master-3 节点上执行

systemctl status etcd|grep Active
[root@k8s-master-1 conf]# systemctl status etcd|grep Active
Active: active (running) since Fri 2022-02-11 13:49:37 CST; 4h 5min ago
[root@k8s-master-2 ~]# systemctl status etcd|grep Active
Active: active (running) since Fri 2022-02-11 13:49:36 CST; 4h 4min ago
[root@k8s-master-3 ~]# systemctl status etcd|grep Active
Active: active (running) since Fri 2022-02-11 13:49:36 CST; 4h 5min ago

期待下次的分享,别忘了三连支持博主呀~
我是 念舒_C.ying ,期待你的关注~💪💪💪

相关文章:

  • 微服务项目:尚融宝(13)(前端平台:搭建管理平台前端程序)
  • 【C++】模板初阶,了解函数模板和类模板的使用一些可能出现的问题
  • 微服务项目:尚融宝(14)(前端平台:尚融宝管理系统路由配置)
  • 中国电子用柔性阻隔膜行业产销需求与应用规模预测报告2022-2028年
  • C/C++面经嵌入式面经软件开发面经<26/30>-- 操作系统(五)
  • C/C++面经嵌入式面经软件开发面经<28/30>-- 单片机相关(一)
  • [iOS]-NSTimer与循环引用的理解
  • SpringCloudAlibaba2.2.6.RELEASE集成Gateway并实现JWT鉴权
  • Alevel经济知识点讲解:effects of deflation
  • 安装Docker后的一些配置
  • 智能驾驶功能软件平台设计规范第三部分:预测功能服务接口
  • 网课搜题公众号在线制作
  • Linux性能优化思路和方法
  • 什么是数据仓库?
  • 01|一条SQL查询语句是如何查询的?
  • 【5+】跨webview多页面 触发事件(二)
  • 30秒的PHP代码片段(1)数组 - Array
  • export和import的用法总结
  • Just for fun——迅速写完快速排序
  • JWT究竟是什么呢?
  • Koa2 之文件上传下载
  • Linux下的乱码问题
  • Python学习之路16-使用API
  • Redis 懒删除(lazy free)简史
  • RxJS: 简单入门
  • TypeScript实现数据结构(一)栈,队列,链表
  • Zsh 开发指南(第十四篇 文件读写)
  • 分布式熔断降级平台aegis
  • 服务器从安装到部署全过程(二)
  • 回流、重绘及其优化
  • 记一次删除Git记录中的大文件的过程
  • 力扣(LeetCode)21
  • 利用DataURL技术在网页上显示图片
  • 微服务核心架构梳理
  • C# - 为值类型重定义相等性
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • #NOIP 2014# day.2 T2 寻找道路
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (arch)linux 转换文件编码格式
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (二)linux使用docker容器运行mysql
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (翻译)terry crowley: 写给程序员
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)ssm高校实验室 毕业设计 800008
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (力扣)1314.矩阵区域和
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (一)RocketMQ初步认识
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • .net framework profiles /.net framework 配置
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法