k8s二进制(ETCD的部署安装)

news2024/11/29 6:30:17
角色ip组件
k8s-master192.168.11.169kube-apiserver,kube-controller-manager,kube-scheduler,etcd
k8s-node1192.168.11.164kubelet,kube-proxy,docker,etcd
k8s-node2192.168.11.166kubelet,kube-proxy,docker,etcd

1、为etcd签发证书

1、证书的下载(任意机器上执行都可以)

#工作目录
mkdir -vp /usr/local/kubernetes/{etcd,cfssl}
#进入带cfssl证书目录下
mkdir -vp /opt/etcd/{bin,ssl,cfg}
cd /usr/local/kubernetes/cfssl

#github二进制包下载地址:https://github.com/cloudflare/cfssl/releases
#wget https://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssl_1.6.1_linux_amd64
#wget https://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssljson_1.6.1_linux_amd64
#wget https://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssl-certinfo_1.6.1_linux_amd64

# 生成证书
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
# 利用Json生成证书
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
# 查看证书信息的工具
https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
#其他版本下载地址:https://github.com/cloudflare/cfssl/tags
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
#\cp -R  cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64 /usr/local/bin/
#mv cfssl_linux-amd64 /usr/local/bin/cfssl
#mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
#mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo
\cp -R cfssl_linux-amd64 /usr/local/bin/cfssl
\cp -R cfssljson_linux-amd64 /usr/local/bin/cfssljson
\cp -R cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo

#查看版本信息
cfssl version
Version: 1.2.0
Revision: dev
Runtime: go1.6

2、生成自签证书颁发机构(CA)

在这里插入图片描述

1、配置CA证书请求文件

cd /usr/local/kubernetes/etcd
#创建ca-csr.json
cat > ca-csr.json <<"EOF"
{
  "CN": "kubernetes",
  "key": {
      "algo": "rsa",
      "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "Beijing",
      "L": "Beijing",
      "O": "kubemsb",
      "OU": "CN"
    }
  ],
  "ca": {
          "expiry": "87600h"
  }
}
EOF

2、生成CA

cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
#查看是否生成成功
ls *pem ca*csr
#显示ca-key.pem ca.pem这2个文件即生成成功

3、配置ca证书策略

#创建ca-config.json
cat > ca-config.json << EOF
{
  "signing": {
    "default": {
      "expiry": "87600h"
    },
    "profiles": {
      "kubernetes": {
         "expiry": "87600h",
         "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ]
      }
    }
  }
}
EOF
  • server auth 表示client可以对使用该ca对server提供证书进行验证
  • client auth 表示server可以使用该ca对client提供的证书进行验证
    在这里插入图片描述

3、使用自签CA 签发Etcd HTTPS 证书

1、创建证书申请文件

cd /usr/local/kubernetes/etcd
cat > etcd-csr.json << EOF
{
	"CN": "etcd",
	"hosts": [
		"127.0.0.1",
		"192.168.11.169",
		"192.168.11.166",
		"192.168.11.164"
	],
	"key": {
		"algo": "rsa",
		"size": 2048
	},
	"names": [{
		"C": "CN",
		"ST": "Beijing",
		"L": "Beijing",
		"O": "kubemsb",
		"OU": "CN"
	}]
}
EOF

以上ip修改为自己集群环境的ip

2、生成证书

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes etcd-csr.json | cfssljson -bare etcd
#查看证书是否生成成功
ls etcd*pem

在这里插入图片描述

2、部署etcd集群

1、下载etcd

cd /usr/local/kubernetes/etcd/
#下载etcd文件
wget https://github.com/etcd-io/etcd/releases/download/v3.5.9/etcd-v3.5.9-linux-amd64.tar.gz
#wget https://github.com/etcd-io/etcd/releases/download/v3.5.2/etcd-v3.5.2-linux-amd64.tar.gz
#系统对应的版本https://github.com/etcd-io/etcd/releases/download/v3.5.7/etcd-v3.5.7-linux-amd64.tar.gz
#解压缩
tar zxvf etcd-v3.5.2-linux-amd64.tar.gz
#将下载下来的二进制可执行文件复制到etcd的工作目录中(用于复制到其他服务器上,部署使用)
\cp -R etcd-v3.5.2-linux-amd64/{etcd,etcdctl} /opt/etcd/bin

核心是复制etcd,etcdctl可执行文件到指定目录中,进行后续统一的远程传递。以及etcd集群的搭建

2、创建etcd.conf配置文件

cat > /opt/etcd/cfg/etcd.conf << EOF
#[Member]
ETCD_NAME="etcd-1"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
#填写当前节点的ip地址即可
ETCD_LISTEN_PEER_URLS="https://192.168.11.169:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.11.169:2379,http://127.0.0.1:2379"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.11.169:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.11.169:2379"
#配置所有etcd集群对应的ip服务配置项
ETCD_INITIAL_CLUSTER="etcd-1=https://192.168.11.169:2380,etcd-2=https://192.168.11.166:2380,etcd-3=https://192.168.11.164:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
EOF
  • 配置配置选项说明
ETCD_NAME:节点名称,集群中唯一
ETCD_DATA_DIR:数据目录
ETCD_LISTEN_PEER_URLS:集群通信监听地址
ETCD_LISTEN_CLIENT_URLS:客户端访问监听地址
ETCD_INITIAL_ADVERTISE_PEER_URLS:集群通告地址
ETCD_ADVERTISE_CLIENT_URLS:客户端通告地址
ETCD_INITIAL_CLUSTER:集群节点地址
ETCD_INITIAL_CLUSTER_TOKEN:集群Token
ETCD_INITIAL_CLUSTER_STATE:加入集群的当前状态,new 是新集群,existing 表示加入已有集群

3、systemd 管理etcd

cat > /usr/lib/systemd/system/etcd.service << EOF
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile=/opt/etcd/cfg/etcd.conf
ExecStart=/opt/etcd/bin/etcd \
--cert-file=/opt/etcd/ssl/etcd.pem \
--key-file=/opt/etcd/ssl/etcd-key.pem \
--peer-cert-file=/opt/etcd/ssl/etcd.pem \
--peer-key-file=/opt/etcd/ssl/etcd-key.pem \
--trusted-ca-file=/opt/etcd/ssl/ca.pem \
--peer-trusted-ca-file=/opt/etcd/ssl/ca.pem \
--peer-client-cert-auth \
--client-cert-auth \
--logger=zap
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF

4、拷贝生成的证书到ssl工作目录下

cd /usr/local/kubernetes/etcd
#复制ca办法机构和证书文件到etcd的ssl目录下准备生成etcd集群
\cp -R /usr/local/kubernetes/etcd/ca*.pem etcd*.pem  /opt/etcd/ssl/
cd /opt/etcd
tree .
[root@k8s-master1 etcd]# tree .
.
├── bin
│   ├── etcd
│   └── etcdctl
├── cfg
│   └── etcd.conf
└── ssl
    ├── ca-key.pem
    ├── ca.pem
    ├── etcd-key.pem
    └── etcd.pem

3 directories, 7 files
[root@k8s-master1 etcd]#

5、将节点etcd-1上的文件拷贝到节点2、3上

  • 说明
    1、 etcd-1上面的文件是已经生成好的,直接传输到需要部署etcd的服务器上即可
    2、一定记得修改对应的ip配置等信息
    3、节点etcd-2和etcd-3文件一直,需要更改为自己的ip地址

1、复制文件

#在master其他节点创建工作目录
#mkdir -vp /opt/etcd
#节点1复制到节点2上
scp -r /opt/etcd/* root@192.168.11.166:/opt/etcd
scp /usr/lib/systemd/system/etcd.service root@192.168.11.166:/usr/lib/systemd/system/
#节点1复制到节点3上
scp -r /opt/etcd/* root@192.168.11.164:/opt/etcd
scp /usr/lib/systemd/system/etcd.service root@192.168.11.164:/usr/lib/systemd/system/

在这里插入图片描述

2、修改对应的ip地址

vi /opt/etcd/cfg/etcd.conf
#[Member]
ETCD_NAME="etcd-1" # 修改此处,节点2 改为etcd-2,节点3 改为etcd-3
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
#将192.168.11.169修改为当前服务器的ip地址
ETCD_LISTEN_PEER_URLS="https://192.168.11.169:2380" # 修改此处为当前服务器IP
ETCD_LISTEN_CLIENT_URLS="https://192.168.11.169:2379" # 修改此处为当前服务器IP
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.11.169:2380" # 修改此处为当前服务器IP
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.11.169:2379" # 修改此处为当前服务器IP
ETCD_INITIAL_CLUSTER="etcd-1=https://192.168.11.169:2380,etcd-2=https://192.168.11.166:2380,etcd-3=https://192.168.11.164:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

6、启动并设置开机启动

节点都执行启动命令

systemctl daemon-reload
#启动etcd
systemctl start etcd
#开机启动
systemctl enable etcd
#查看启动状态
systemctl status etcd

在这里插入图片描述

7、记录错误

1、某一台服务一直启动不起起来

request sent was ignored (cluster ID mismatch: remote[9e5055697e

解决办法是:在配置的ETCD_DATA_DIR删除下面的文件

8、集群状态查看

  • 里面的ip由于做了很多次、ip修改为自己的正确ip

1、验证etcd集群状态

ETCDCTL_API=3 /opt/etcd/bin/etcdctl --write-out=table --cacert=/opt/etcd/ssl/ca.pem \
--cert=/opt/etcd/ssl/etcd.pem --key=/opt/etcd/ssl/etcd-key.pem \
--endpoints=https://192.168.11.173:2379,https://192.168.11.174:2379,https://192.168.11.175:2379 endpoint health

在这里插入图片描述

2、集群状态性能

ETCDCTL_API=3 /opt/etcd/bin/etcdctl --write-out=table --cacert=/opt/etcd/ssl/ca.pem \
--cert=/opt/etcd/ssl/etcd.pem --key=/opt/etcd/ssl/etcd-key.pem \
--endpoints=https://192.168.11.173:2379,https://192.168.11.174:2379,https://192.168.11.175:2379 check perf

在这里插入图片描述

3、集群状态成员列表

ETCDCTL_API=3 /opt/etcd/bin/etcdctl --write-out=table --cacert=/opt/etcd/ssl/ca.pem \
--cert=/opt/etcd/ssl/etcd.pem --key=/opt/etcd/ssl/etcd-key.pem \
--endpoints=https://192.168.11.173:2379,https://192.168.11.174:2379,https://192.168.11.175:2379 member list

在这里插入图片描述

4、查看集群状态(主从状态)

ETCDCTL_API=3 /opt/etcd/bin/etcdctl --write-out=table --cacert=/opt/etcd/ssl/ca.pem \
--cert=/opt/etcd/ssl/etcd.pem --key=/opt/etcd/ssl/etcd-key.pem \
--endpoints=https://192.168.11.173:2379,https://192.168.11.174:2379,https://192.168.11.175:2379 endpoint status

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1192154.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双十一剁手节,MobPush助力各大电商平台提前锁定潜力用户

一年一度的购物狂欢节双十一还未到来&#xff0c;各大电商平台却早已摩拳擦掌跃跃欲试。据统计&#xff0c;10月31日晚8点&#xff0c;京东百亿补贴日开场不到4分钟&#xff0c;京东百亿补贴频道成交额破亿&#xff0c;抖音商城整体GMV较去年双11同期提升200%&#xff0c;支付用…

SPRINGBOOT整合CXF发布WEB SERVICE和客户端调用(用户和密码验证)

主要分为客户端和服务端 服务端 pom配置 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.3</version><relativePath/> <!-- lookup parent fro…

loading动效实现

在站上闲逛发现一个非常有意思的loading效果&#xff0c;跟着大佬仿写了一下Vue版本的。 https://blog.csdn.net/tianjian4592/article/details/44538605 直接放源码 <script setup> import {ref, defineProps, watch} from "vue";const props defineProps({…

三菱FX3U系列-定位指令

目录 一、简介 二、指令形式 1、相对定位[DRVI、DDRVI] 2、绝对定位[DRVA、DDRVA] 三、总结 一、简介 定位指令用于控制伺服电机或步进电机的位置移动。可以通过改变脉冲频率和脉冲数量来控制电机的移动速度和移动距离&#xff0c;同时还可以指定移动的方向。 二、指令形…

YOLOv5检测界面-PyQt5实现

1.将detect.py运用到界面 要将 YOLOv5 的检测结果与 PyQt 界面结合&#xff0c;你需要进行一些额外的步骤。以下是一个简单的示例代码&#xff0c;展示如何使用 YOLOv5 进行目标检测并在 PyQt 界面中显示结果。 首先&#xff0c;确保你已经安装了必要的库&#xff1a; pip …

C++初阶(九)内存管理

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、C/C内存分布1、选择题2、填空题3、sizeof 和 strlen 区别&#xff1f;4、总结 二、 C语言…

『Nacos』 入门教程

前言 本文为 Nacos 平台快速入门教程&#xff0c;本文将会使用通俗易懂的语言手把手带您了解、使用 Nacos 平台&#xff0c;适合未接触过 Nacos 的初学者 官方手册&#xff1a;Nacos | Nacos 官方仓库&#xff1a;alibaba/nacos 版本&#xff1a;2.X 本文示例代码仓库&#xf…

Power Automate-时间戳转化为时区时间

点击编辑 在两个步骤之间再插入一个新步骤&#xff0c;添加操作 在内置里点击日期时间 点击转换时区 下面再修改为已转换的时间

「Verilog学习笔记」4位数值比较器电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 这里要注意题目的“门级描述方式”&#xff0c;所以我们只能使用基本门电路&#xff1a;&,|,!,^,^~。 具体实现思路&#xff1a;通过真值表得出Y0 Y1 Y2的逻辑表达…

【腾讯云 HAI域探秘】探索AI绘画之路:利用腾讯云HAI服务打造智能画家

目录 前言1 使用HAI服务作画的步骤1.1 注册腾讯云账户1.2 创建算力服务器1.3 进入模型管理界面1.4 汉化界面1.5 探索AI绘画 2 模型参数的含义和调整建议2.1 模型参数的含义和示例2.2 模型参数的调整建议 3 调整参数作画的实践和效果3.1 实践说明3.2 实践效果13.3 实践效果23.4 …

电梯用电量-第10届蓝桥杯国赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第8讲。 电梯用电量&#x…

闪站侠洗衣洗鞋管理系统app小程序开发;

闪站侠洗护软件系统为您提供全面的洗衣洗鞋解决方案&#xff0c;系统多门店&#xff0c;多网点。为您开通公中号小程序&#xff0c;并与顺丰、天猫、抖音、美团点评等第三方平台紧密连接。 我们解决洗衣工厂/门店的五大问题&#xff1a; 一、效率 从门店收衣到工厂出库&#xf…

解决GitHub不能访问

1&#xff1a;ping github.com,得到可以解析的地址 2&#xff1a;在host文件里面添加地址&#xff08;记事本打开&#xff09;。 3&#xff1a;可以添加稳定的地址&#xff08;记得地址前加“#”&#xff09; #140.82.121.3 # GitHub #140.82.114.4 # GitHub #140.82.112.4 …

如何构建新一代实时湖仓?袋鼠云基于数据湖的探索升级之路

在之前的实时湖仓系列文章中&#xff0c;我们已经介绍了实时湖仓对于当前企业数字化转型的重要性&#xff0c;实时湖仓的功能架构设计&#xff0c;以及实时计算和数据湖结合的应用场景。 在本篇文章中&#xff0c;将介绍袋鼠云数栈在构建实时湖仓系统上的探索与落地实践&#…

html实现竖直步骤条

1、问题描述 最近碰到一个需求&#xff0c;要把审批流程改为竖直步骤条的形式。本来想直接抄网上的&#xff0c;但是网上给的要么是水平步骤条&#xff0c;要么是集成在框架里的&#xff0c;要么就是人家写的太复杂了&#xff0c;js&#xff0c;css一大堆。 2、我的代码 代码下…

【沁恒 CH32V208 开发板免费试用】+ U盘/ SD NAND读写与多功能数码相框

CH32V208继承了沁恆产品一贯的传统&#xff0c;即U盘的读写功能。这使得尽管CH32V208的闪存要比CH32V307的小一倍&#xff0c;但有了U盘读写功能的支持就可有效地缓解用户对存储空间的需求。它除了支持U盘的读取&#xff0c;还支持对CS SD NAND (贴片式TF卡/SD卡) 这类器件的使…

小黑子—springMVC:第一章 请求处理与响应数据

springMVC入门1.0 1、小黑子的springMVC基础1.1 SpringMVC概述1.2 SpringMVC快速入门1.3 Controller中直接注入spring中维护的Bean1.4 SpringMVC关键组件浅析 2、SpringMVC的请求处理2.1 请求映射路径配置2.2 请求数据的接收2.2.1 键值对方式接收数据2.2.1 - I RquestParam属性…

Linux Hadoop平台伪分布式安装(Hive on Spark)

&#x1f4d4;Linux Hadoop 伪分布式安装(Hive on Spark) 安装目录 1. JDK2. Hadoop3. MysqlHive3.1 Mysql8安装3.2 Hive安装 4. Spark4.1 Maven安装4.2 Scala安装4.3 Spark编译并安装 5. Zookeeper6. HBase 版本概要&#xff1a; jdk&#xff1a; jdk-8u391-linux-x64.tar.gz…

浅析SR隧道路径批量构造方法

为什么要仿真PCE LSP下发隧道路径&#xff1f; 在大型的多区域网络中&#xff0c;路径计算非常复杂。在某些场景下&#xff0c;为了完成路径计算&#xff0c;需要在控制器上部署特殊的计算组件&#xff0c;并需要不同区域中的节点之间协作。这使得网元在进行路径计算时效率低&…

局部路由守卫path守卫

局部路由守卫path守卫 path守卫&#xff08;beforeEnter&#xff09; 代码位置&#xff1a;path守卫代码写在route对象中&#xff08;index.js文件&#xff09;beforeEnter是一个函数&#xff0c;参数上没有回调函数beforeEnter有三个参数&#xff1a; to参数&#xff1a;to是…