二进制部署K8S集群

news2025/6/10 9:50:42

目录

一、架构图

二、部署步骤

1、实验环境

2、操作系统初始化配置

3、部署 docker引擎

4、部署 etcd 集群

5、部署 Master 组件


一、架构图

二、部署步骤

1、实验环境

服务器类型IP地址
master192.168.80.5
node01192.168.80.8
node02192.168.80.9

2、操作系统初始化配置

#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

#关闭selinux
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

#关闭swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab

#根据规划设置主机名
hostnamectl set-hostname master01
hostnamectl set-hostname node01
hostnamectl set-hostname node02

#在master添加hosts
cat >> /etc/hosts << EOF
192.168.80.5 master01
192.168.80.7 master02
192.168.80.8 node01
192.168.80.9 node02
EOF

#调整内核参数
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF

sysctl --system

#时间同步
yum install ntpdate -y
ntpdate time.windows.com

3、部署 docker引擎

*所有node节点部署docker引擎
yum install -y yum-utils device-mapper-persistent-data lvm2 
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
yum install -y docker-ce docker-ce-cli containerd.io

systemctl start docker.service
systemctl enable docker.service 

4、部署 etcd 集群

在master01节点上操作

#准备cfssl证书生成工具
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/local/bin/cfssljson
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/local/bin/cfssl-certinfo

chmod +x /usr/local/bin/cfssl*

#生成Etcd证书
mkdir /opt/k8s
cd /opt/k8s/

#上传 etcd-cert.sh 和 etcd.sh 到 /opt/k8s/ 目录中
chmod +x etcd-cert.sh etcd.sh

#创建用于生成CA证书、etcd 服务器证书以及私钥的目录
mkdir /opt/k8s/etcd-cert
mv etcd-cert.sh etcd-cert/
cd /opt/k8s/etcd-cert/
./etcd-cert.sh			#生成CA证书、etcd 服务器证书以及私钥

ls
ca-config.json  ca-csr.json  ca.pem        server.csr       server-key.pem
ca.csr          ca-key.pem   etcd-cert.sh  server-csr.json  server.pem

#上传 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目录中,启动etcd服务
https://github.com/etcd-io/etcd/releases/download/v3.4.9/etcd-v3.4.9-linux-amd64.tar.gz

cd /opt/k8s/
tar zxvf etcd-v3.4.9-linux-amd64.tar.gz
ls etcd-v3.4.9-linux-amd64
Documentation  etcd  etcdctl  README-etcdctl.md  README.md  READMEv2-etcdctl.md

#创建用于存放 etcd 配置文件,命令文件,证书的目录
mkdir -p /opt/etcd/{cfg,bin,ssl}

cd /opt/k8s/etcd-v3.4.9-linux-amd64/
mv etcd etcdctl /opt/etcd/bin/
cp /opt/k8s/etcd-cert/*.pem /opt/etcd/ssl/

cd /opt/k8s/
./etcd.sh etcd01 192.168.80.5 etcd02=https://192.168.80.8:2380,etcd03=https://192.168.80.9:2380
#进入卡住状态等待其他节点加入,这里需要三台etcd服务同时启动,如果只启动其中一台后,服务会卡在那里,直到集群中所有etcd节点都已启动,可忽略这个情况

#可另外打开一个窗口查看etcd进程是否正常
ps -ef | grep etcd

#把etcd相关证书文件、命令文件和服务管理文件全部拷贝到另外两个etcd集群节点
scp -r /opt/etcd/ root@192.168.80.8:/opt/
scp -r /opt/etcd/ root@192.168.80.9:/opt/
scp /usr/lib/systemd/system/etcd.service root@192.168.80.8:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/etcd.service root@192.168.80.9:/usr/lib/systemd/system/

在node01节点上操作

vim /opt/etcd/cfg/etcd
#[Member]
ETCD_NAME="etcd02"											#修改
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.80.8:2380"			#修改
ETCD_LISTEN_CLIENT_URLS="https://192.168.80.8:2379"		#修改

#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.80.8:2380"		#修改
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.80.8:2379"				#修改
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.80.5:2380,etcd02=https://192.168.80.8:2380,etcd03=https://192.168.80.9:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

#启动etcd服务
systemctl start etcd
systemctl enable etcd
systemctl status etcd

在node02节点上操作

vim /opt/etcd/cfg/etcd
#[Member]
ETCD_NAME="etcd03"											#修改
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.80.9:2380"			#修改
ETCD_LISTEN_CLIENT_URLS="https://192.168.80.9:2379"		#修改

#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.80.9:2380"		#修改
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.80.9:2379"				#修改
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.80.5:2380,etcd02=https://192.168.80.8:2380,etcd03=https://192.168.80.9:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

#启动etcd服务
systemctl start etcd
systemctl enable etcd
systemctl status etcd

检查etcd群集状态和查看成员列表

ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.80.5:2379,https://192.168.80.8:2379,https://192.168.80.9:2379" endpoint health --write-out=table

ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.80.5:2379,https://192.168.80.8:2379,https://192.168.80.9:2379" --write-out=table member list

5、部署 Master 组件

在master01节点上操作

#上传 master.zip 和 k8s-cert.sh 到 /opt/k8s 目录中,解压 master.zip 压缩包
cd /opt/k8s/
unzip master.zip
chmod +x *.sh

#创建kubernetes工作目录
mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs} -p

#创建用于生成CA证书、相关组件的证书和私钥的目录
mkdir /opt/k8s/k8s-cert
mv /opt/k8s/k8s-cert.sh /opt/k8s/k8s-cert
cd /opt/k8s/k8s-cert/
vim k8s-cert.sh
./k8s-cert.sh				#生成CA证书、相关组件的证书和私钥

ls *pem
admin-key.pem  apiserver-key.pem  ca-key.pem  kube-proxy-key.pem  
admin.pem      apiserver.pem      ca.pem      kube-proxy.pem

#复制CA证书、apiserver相关证书和私钥到 kubernetes工作目录的 ssl 子目录中
cp ca*pem apiserver*pem /opt/kubernetes/ssl/

#上传 kubernetes-server-linux-amd64.tar.gz 到 /opt/k8s/ 目录中,解压 kubernetes 压缩包
#下载地址:https://github.com/kubernetes/kubernetes/blob/release-1.20/CHANGELOG/CHANGELOG-1.20.md
#注:打开链接你会发现里面有很多包,下载一个server包就够了,包含了Master和Worker Node二进制文件。

cd /opt/k8s/
tar zxvf kubernetes-server-linux-amd64.tar.gz

#复制master组件的关键命令文件到 kubernetes工作目录的 bin 子目录中
cd /opt/k8s/kubernetes/server/bin
cp kube-apiserver kubectl kube-controller-manager kube-scheduler /opt/kubernetes/bin/
ln -s /opt/kubernetes/bin/* /usr/local/bin/

#创建 bootstrap token 认证文件,apiserver 启动时会调用,然后就相当于在集群内创建了一个这个用户,接下来就可以用 RBAC 给他授权
cd /opt/k8s/
vim token.sh
#!/bin/bash
BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')
cat > /opt/kubernetes/cfg/token.csv <<EOF
${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
EOF

chmod +x token.sh
./token.sh

cat /opt/kubernetes/cfg/token.csv

#二进制文件、token、证书都准备好后,开启 apiserver 服务
cd /opt/k8s/
./apiserver.sh 192.168.80.5 https://192.168.80.5:2379,https://192.168.80.8:2379,https://192.168.80.9:2379

#检查进程是否启动成功
ps aux | grep kube-apiserver

netstat -natp | grep 6443   #安全端口6443用于接收HTTPS请求,用于基于Token文件或客户端证书等认证


#启动 scheduler 服务
cd /opt/k8s/
./scheduler.sh
ps aux | grep kube-scheduler

#启动 controller-manager 服务
./controller-manager.sh
ps aux | grep kube-controller-manager



#生成kubectl连接集群的kubeconfig文件
./admin.sh

#通过kubectl工具查看当前集群组件状态
kubectl get cs

 

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

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

相关文章

【C++】类和对象--类的6个默认成员函数

目录1.类的6个默认成员函数2.构造函数2.1概念2.2特性3.析构函数3.1概念3.2特性4.拷贝构造函数4.1概念4.2特征5.赋值运算符重载5.1运算符重载5.2赋值运算符重载5.3前置和后置重载5.4流插入和流提取运算符重载6.const成员7.取地址重载和const取地址操作符重载1.类的6个默认成员函…

“搜索大战”正式打响,微软发布ChatGPT版搜索引擎和浏览器

微软公司宣布推出由ChatGPT支持的最新版本Bing&#xff08;必应&#xff09;搜索引擎和Edge浏览器&#xff0c;今天上线&#xff0c;免费使用&#xff01; 自去年开始&#xff0c;Stable Diffusion、ChatGPT 等 AI 工具的横空出世&#xff0c;貌似在告诉人们“AI 正在准备重塑整…

常见的编程语言有哪些?

一、编程语言定义 编程语言的定义是指主要用于人和计算机之间通信的语言&#xff0c;它既能够让程序员能够准确的定义计算机所需数据&#xff0c;也能让计算机精准的识别人的意图。 二、编程语言排行榜以上排名信息来源于Tiobe公司公布的编程语言排行榜&#xff0c;近两年由于大…

【学习笔记】Nginx学习

Nginx是高性能的HTTP和反向代理的web服务器&#xff0c;占用内存小&#xff0c;处理高并发连接强&#xff0c;处理静态文件好耗费内存少但是不支持Java语言&#xff0c;Java程序只能通过与Tomcat配合完成正向代理客户端无法直接访问目标服务器&#xff0c;而是通过向代理服务器…

微信小程序 Springboot英语在线学习助手系统 uniapp

四六级助手系统用户端是基于微信小程序端&#xff0c;管理员端是基于web端&#xff0c;本系统是基于java编程语言&#xff0c;mysql数据库&#xff0c;idea开发工具&#xff0c; 系统分为用户和管理员两个角色&#xff0c;其中用户可以注册登陆小程序&#xff0c;查看英语四六级…

Java后端项目IDEA配置代码规范检查,使用checkStyle实现

最近的Java后端项目想实现代码的规范检查&#xff0c;调研了一圈&#xff0c;终于找到了简单的方式实现&#xff1a;以下是常见的几种方案&#xff1a; 1、在客户端做 git hook&#xff0c;主要是用 pre-commit 这个钩子。前端项目中常见的 husky 就是基于此实现的。但缺点也很…

Revit过滤器怎么用?过滤可见性操作方法

一、Revit中关于项目传递“可见性中设置的过滤器规则”的方法 设计院结构专业给机电专业提资&#xff0c;为了对于净高有一个直观快捷的表达&#xff0c;结构专业工程师就可以利用Revit可见性(快捷键&#xff1a;VV)中的过滤器来给本专业的梁、板相对标高用颜色进行区分&#x…

python爬虫工程师 | 都会遇到的反爬手段,详细展示低难度反爬

在爬虫实战过程中&#xff0c;常见的反爬手段如下所示。 IP 地址限制&#xff1a;网站可以检测爬虫的 IP 地址&#xff0c;并限制爬虫访问。User-Agent 限制&#xff1a;网站可以通过检测请求头中的 User-Agent 来识别爬虫。Referrer 限制&#xff1a;网站可以通过检测请求头中…

TCO-PNB ester,1438415-89-4 ,反式环辛烯对硝基苯酯,可用于标记蛋白质

TCO-PNB ester&#xff0c;TCO-PNB&#xff0c;反式环辛烯-对硝基苯酯 &#xff0c;反式环辛烯对硝基苯酯&#xff0c;TCO-PNB酯产品结构式&#xff1a;产品规格&#xff1a;1.CAS号&#xff1a;1438415-89-4 2.分子式&#xff1a;C15H17NO53.分子量&#xff1a;291.34.包装规格…

[python入门㊶] - python写入文件

目录 ❤ 写入空文件&#xff08;覆盖&#xff09; ❤ 写入多行 ❤ 在原有文件上添加内容 保存数据的最简单的方式之一是将其写入到文件中❤ 写入空文件&#xff08;覆盖&#xff09; # codingUTF-8 filename test_text.txt with open(filename, w) as file_object:file_o…

怎么做室内导航?室内导航图用什么做的?

目前大多数的图资系统提供的室内地图多为静态信息&#xff0c;并没有随时间空间改变而更新的能力&#xff0c;在现有技术中缺乏一种展示室内真实场景的室内地图生成方法。由于室内的环境空间信息会因为时空迁变而有所不同&#xff0c;因此&#xff0c;如何以更快速且低成本的方…

Python深度学习实战PyQt5布局管理项目示例详解

本文具体介绍基本的水平布局、垂直布局、栅格布局、表格布局和进阶的嵌套布局和容器布局&#xff0c;最后通过案例带小白创建一个有型的图形布局窗口布局管理就是管理图形窗口中各个部件的位置和排列。图形窗口中的大量部件也需要通过布局管理&#xff0c;对部件进行整理分组、…

Qt 5 架构和特点

Qt 5 模块构架&#xff1a; 模块&#xff1a;功能&#xff1a;Qt CoreQt 5 的核心类库&#xff0c;每个模块都建立在Core上Qt GUI图形用户界面开发的最基础的类库Qt Widgets提供c用户界面部件&#xff08;是对Qt GUI的拓展&#xff09;Qt SQL对数据库进行操作Qt Multimedia、…

windows 上编译 cpu 版本的 ncnn

windows 上编译 cpu 版本的 ncnn 从 发布页面 下载最新的完整的 ncnn 代码包&#xff0c;即 -full-source 后缀的文件。以及 protobuf 的代码包&#xff08;用于生成 caffe2ncnn 和 onnx2ncnn 工具&#xff09;。 我下载的 20221128 版本的 ncnn 和 3.11.2 版本的 protobuf。…

C语言经典编程题100例(1-20)

1、练习2-1 Programming in C is fun!本题要求编写程序&#xff0c;输出一个短句“Programming in C is fun!”。输入格式:本题目没有输入。输出格式:在一行中输出短句“Programming in C is fun!”。代码&#xff1a;#include<stdio.h> int main() {printf("Progra…

https之数字证书分析

写在前面 当我们要给网站配置https时&#xff0c;都需要申请 一个数字证书&#xff0c;然后将数字证书配置在网站上&#xff0c;如下可能配置: <Connector port"446" protocol"org.apache.coyote.http11.Http11Protocol" SSLEnabled"true"s…

TCP的三次握手 四次挥手 和相关问题

TCP 三次握手 四次挥手 tcp在传输层 tcp&#xff1a; tcp报文&#xff1a; 三次握手&#xff1a; tcp 其中也涉及到了状态的切换 利用了这种状态保证了建立连接和断开连接的逻辑 两次握手不可&#xff1f; 第一个解释: 这个问题的本质是, 信道不可靠, 但是通信双发需要就某个…

var const let

菜鸟学前端 本文&#xff1a;https://www.jianshu.com/p/b7116525273b 文章目录varlet和const写不动了参考说实话&#xff0c;在看到这个之前&#xff0c;我只知道 var&#xff0c;以前也只用过这玩意。 后面那俩都不知道是干啥用的。 感谢同桌的提示。 记&#xff01; var v…

LR2023磨皮滤镜插件Portraiture4最新版

Portraiture4是一款智能磨皮的滤镜插件&#xff0c;该插件能够给Photoshop和Lightroom添加智能磨皮美化功能&#xff0c;可以帮助用户快速对图片中的人物的皮肤、头发、眉毛等部位进行美化&#xff0c;省去了手动调整的麻烦&#xff0c;大大提高P图的效率。Portraiture这是一款…

【线下沙龙】如何用项目管理的思维经营自己的生活

为什么自己参加那么多的学习&#xff0c;也没有过好自己的人生&#xff1f;这个问题出在哪里&#xff1f; 你勾画过自己未来的生活吗&#xff1f; 你没有渴望过的东西会出现在你的生活里吗&#xff1f; 如何实现自己想要的生活&#xff1f; 有一个全球性的调查问卷&#xff1a;…