Kubernetes 的正式安装
1.基础的网络结构说明

软件路由器
ikuai

当然同一个仅主机模式 相当于在 同一个我们所谓的广播域内 所以相当于它们的几张网卡 是被连接起来的

为了防止出现问题 我们可以把第二块网卡临时关闭一下

2.准备路由器
ikuai
爱快 iKuai-商业场景网络解决方案提供商 (ikuai8.com)

测试环境用 32位就可以了 因为用不到那么高性能,完全浪费,但是生产环境必须64位
















1 回车

需要配置一定的信息
选择2 回车



esc 返回
q 退出

q 锁定 就可以离开这里了
浏览器输入 192.168.72.200 默认重定向到这里

用户名密码都是admin
纯软件实现的路由器

关闭

绑定外网网卡
把剩下的一块网卡进行绑定

默认是DHCP
但在真实生产环境中我们都是通过 拨号 或者 静态固定IP去提供网络访问能力的


3.配置虚拟机
1.配置第一块仅主机网卡
vi /etc/NetworkManager/system-connections/ens160.nmconnection
三台机器都改完
address1=仅主机的ip/子网掩码位,网关路由器ip
dns 域名 加一下


2.关闭第二块nat网卡
vi /etc/NetworkManager/system-connections/ens192.nmconnection

autoconnect=false
三台主机配置完
:wq 保存退出
3.重启
如果重启就不用执行下面三条命令了 三台机器都做
先不重启在做完下面配置在重启
4.关闭swap分区
如果你的机器本身初始化出来就是为了安装kubernetes集群的 你在分区的时候就没必要分 swap 分区
如果分了 那么怎么关闭
下面就是关闭的方法
swapoff -a
相当于把开机自启的那个命令注释掉
sed -i 's:/dev/mapper/rl-swap:#/dev/mapper/rl-swap:g' /etc/fstab

不是永久执行的 执行上面第二条命令即可永久 生效
5.修改主机名
hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-node01
hostnamectl set-hostname k8s-node02
设置域名
vi /etc/hosts
192.168.72.11 k8s-master01 m1
192.168.72.12 k8s-node01 n1
192.168.72.13 k8s-node02 n2
192.168.72.14 harbor
m1 位为简写
n1 同理
后面可能搭建 harbor 所以提前设置一下用到的域名

嫌麻烦可以拷贝到另一台主机上
6.安装 ipvs
yum install -y ipvsadm
7.开启每个节点的路由转发
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p
8.安装epel 加载 bridge
yum install -y epel-release
yum install -y bridge-utils
9.加载 br_netfilter 模块
modprobe br_netfilter
echo 'br_netfilter' >> /etc/modules-load.d/bridge.conf
echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf
echo 'net.bridge.bridge-nf-call-ip6tables=1'>> /etc/sysctl.conf
sysctl -p
10.安装docker
yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
1.配置daemon.json
sudo cat <<EOF > /etc/docker/daemon.json
{"default-ipc-mode": "shareable","data-root": "/data/docker","exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m","max-file": "100"},"insecure-registries": ["harbor.xinxainghf.com"],"registry-mirrors": ["https://hub.skillixx.com","https://docker.m.daocloud.io","https://noohub.ru","https://huecker.io","https://dockerhub.timeweb.cloud","https://docker.rainbond.cc","https://hpbe2ezf.mirror.aliyuncs.com","https://kfp63jaj.mirror.aliyuncs.com"]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
2.重启docker
systemctl daemon-reload
systemctl enable --now docker
11.重启一下
reboot

完美运行
4.安装 cri-docker
讲解一下
CRI关系图

kubernetes 想要移出docker 移出的是 中间的转化的关系 也就是 CRI语言转化为 OCRI
但是docker 又有公司实现了 CRI 转化为 OCRI 名为 cri-docker
1.下载cri-docker
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.9/cri-dockerd-0.3.9.amd64.tgz
tar -xf cri-dockerd-0.3.9.amd64.tgz
mv ./cri-dockerd/cri-dockerd /usr/bin/
chmod a+x /usr/bin/cri-dockerd
2.编写服务管理脚本
cat <<"EOF" > /usr/lib/systemd/system/cri-docker.service
[unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket
[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd
--network-plugin=cni
--pod-infra-container-
image=registry.aliyuncs.com/google_containers/pause:3.8
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=O
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF
用多少版本就几版本
docker pull registry.aliyuncs.com/google_containers/pause:3.8
3.添加cri-docker 套接字生成脚本
cat <<"EOF" > /usr/lib/systemd/system/cri-docker.socket
[unit]
Description=CRI Docker Socket for the API
Partof=cri-docker.service
[Socket]
Listenstream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF
4.启动cri-docker服务
sudo systemctl daemon-reload
systemctl enable --now cri-docker
systemctl is-active cri-docker

5.安装 kubeadm
1.添加yum源
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
2.安装kubeadm 1.29
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
3.设置开机自启
sudo systemctl enable kubelet
4.初始化主节点
kubeadm init --apiserver-advertise-address=192.168.72.11 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version 1.29.14 --service-cidr=10.10.0.0/12 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=all --cri-socket unix:///var/run/cri-dockerd.sock
如果科学上网 可以不加
--kubernetes-version 1.29.14
--image-repository registry.aliyuncs.com/google_containers
重要重要重要!!!
一定要在三个节点都拉去 pause 镜像 他可能会用到两个版本的 我这里有 kubeadm config images list 指定的 3.9 但是 他初始化的时候用的 3.6所以最好两个版本都下 然后三个节点都要拉取镜像 要不然会有问题 ,经验 !!!!!!!!!!
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
5.将另外两个节点加入集群
kubeadm join 192.168.72.11:6443 --token c52o1r.gxeerfkrhsx0zen1 \--discovery-token-ca-cert-hash sha256:eb622ff0b73ad808efde62dd362daee34b00fa7f541cb227a907d86ee72f31a4 --cri-socket unix:///var/run/cri-dockerd.sock
--cri-socket unix:///var/run/cri-dockerd.sock 需要在命令指定套接字 为 docker

1.检查是否加入
kubectl get node
2.如果token过期后 需要重新创建
kubeadm token create --print-join-command
6.部署网络插件
1.安装calico
![]()
准备好
unzip ./calico.zip
![]()

这是calico运行所需要的所有的镜像
1.解压镜像
tar -zxvf calico-images.tar.gz

2.加载镜像
这四个镜像每个节点都要导入
docker load -i calico-cni-v3.26.3.tar
docker load -i calico-node-v3.26.3.tar
docker load -i calico-kube-controllers-v3.26.3.tar
docker load -i calico-typha-v3.26.3.tar
传输到 n1 的设备 下 的 /root
scp -r calico-images root@n1:/root/

3.执行安装
把部署文件利用在集群上
kubectl apply -f calico-typha.yaml
这个文件需要改一些地方

关闭IPIP

需要与前面创建集群的时候 那个 pod cidr一致

查看网络的 pod
kubectl get pod -A
需要 在子节点 装 pause 的镜像 没有就起不来 这是经验

完美运行一个集群 三个节点
7.如果我们在安装集群时有多块网卡并且没有关闭
1.固定网卡(可选)
指定目标域名可达的网卡

匹配正则的网卡

忽略正则的网卡

指定一个网段范围

修改kube-proxy 模式为 ipvs
这几种方式
相关文章:
Kubernetes 的正式安装
1.基础的网络结构说明 软件路由器 ikuai 当然同一个仅主机模式 相当于在 同一个我们所谓的广播域内 所以相当于它们的几张网卡 是被连接起来的 为了防止出现问题 我们可以把第二块网卡临时关闭一下 2.准备路由器 ikuai 爱快 iKuai-商业场景网络解决方案提供商 (ikuai8.com)…...
初阶数据结构(C语言实现)——4.2队列
目录 2.队列2.1队列的概念及结构2.2队列的实现2.2.1 初始化队列2.2.2 销毁队列2.2.3 队尾入队列2.2.4 队头出队列2.2.5获取队列头部元素2.2.6 获取队列队尾元素2.2.7获取队列中有效元素个数2.2.8 检测队列是否为空,如果为空返回非零结果,如果非空返回0 3…...
Mysql主从复制和Mysql高可用以及负载均衡配置
需要先配置MySQL主从复制,然后再在主MySQL服务器上配置MySQL Router。以下是详细说明和步骤: 1. 为什么需要先配置MySQL主从复制? MySQL主从复制是MySQL高可用性和负载均衡的基础,通过将数据从主服务器实时同步到从服务器&#…...
c#中使用时间戳转换器
在C#中,时间戳转换器通常用于将时间戳(通常是一个表示自某一特定时间点(如1970年1月1日UTC)以来的毫秒数的长整型值)转换为DateTime对象,或者将DateTime对象转换回时间戳。以下是几种实现这一功能的方法: 1. 使用DateTime的构造函数 将时间戳转换为DateTime long tim…...
杂项知识笔记搜集
1.pygame pygame可以画出来图形界面,pygame Python仓库 PyGame游戏编程_游戏程序设计csdn-CSDN博客 2.V4L2库 V4L2是Linux上的Camera采集器的框架 Video for Linux ,是从Linux2.1版本开始支持的。HDMI视频采集卡采集到的视频通过USB3.0输出࿰…...
rust语言match模式匹配涉及转移所有权Error Case
struct S{data:String, }//注意:因为String默认是移动语义,从而决定结构体S也是移动语义,可采用(1)或(2)两种方法解决编译错误;关键思路:放弃获取结构体S的字段data的所有权,改为借用。fn process(s_ref:&a…...
golang从入门到做牛马:第十一篇-Go语言变量作用域:变量的“生活圈”
在Go语言中,变量的作用域决定了它在程序中的可见性和生命周期。理解变量的作用域对于编写清晰、高效的代码至关重要。Go语言中的变量可以在三个主要地方声明:函数内、函数外和函数定义中。接下来,让我们深入探讨局部变量、全局变量和形式参数的作用域。 局部变量:函数内的“…...
【Linux】37.网络版本计算器
文章目录 1. Log.hpp-日志记录器2. Daemon.hpp-守护进程工具3. Protocol.hpp-通信协议解析器4. ServerCal.hpp-计算器服务处理器5. Socket.hpp-Socket通信封装类6. TcpServer.hpp-TCP服务器框架7. ClientCal.cc-计算器客户端8. ServerCal.cc-计算器服务器9. 代码时序1. 服务器启…...
linux安装Mariadb10.5并修改端口
首先配置yum源 进入下方的文件进行配置 vim /etc/yum.repos.d/MariaDB.repo填写下方内容 [mariadb]name MariaDBbaseurl https:///mirrors.aliyun.com/mariadb/yum/10.5/centos8-amd64/gpgkeyhttps:///mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDBmodule_hotfixes…...
从Windows到ARM Linux:Qt程序的交叉编译与移植指南
引言 在嵌入式开发中,我们经常需要将桌面端开发的Qt程序部署到ARM架构的Linux设备。本文详细介绍如何将Windows平台开发的Qt程序,通过Linux虚拟机交叉编译为ARM架构可执行文件的完整过程 环境准备 需要特别注意的是,对于CentOS 7 默认支持…...
【微信小程序】uniapp开发微信小程序
uniapp开发微信小程序 1、上拉加载 下拉刷新 import { onReachBottom, onPullDownRefresh } from dcloudio/uni-app;配置允许下拉刷新: {"path" : "pages/pet/pet","style" : {"navigationBarTitleText" : ""…...
多视图几何--结构恢复--三角测量
三角测量 1. 核心公式推导 假设两个相机的投影矩阵为 P P P 和 P ′ P P′,对应的匹配图像点(同名点)为 ( u , v ) (u, v) (u,v) 和 ( u ′ , v ′ ) (u, v) (u′,v′),目标是求解三维点 X [ X x , X y , X z , 1 ] T X [X_x, X_y, X_z, 1]^T X…...
【Linux三剑客】awk命令使用
AWK 编程语言中的变量 AWK 提供了许多可在模式和操作中使用的内置变量。最常用的变量是 - NR - 表示当前记录(行)号 NF - 表示输入记录中的字段总数。 $0 - 整个当前记录。 $1, $2, $3, … - 当前记录中的第一个、第二个、第三个…字段。 查找passwd中…...
Python CATIA二次开发实战:CATIA产品号批量同步文件名工具开发
引言 在汽车/航空制造领域,CATIA文件的结构化管理直接影响着PLM系统数据一致性。笔者近期开发的增强型产品号同步工具,成功解决了工程实践中文件名与产品名称不同步的痛点问题。本文将从技术实现、功能亮点、应用场景三个维度进行深度解析。 一、技术方…...
我的两个医学数据分析技术思路
我的两个医学数据分析技术思路 从临床上获得的或者公共数据库数据这种属于观察性研究,是对临床诊疗过程中自然产生的数据进行分析而获得疾病发生发展的规律等研究成果。再细分,可以分为独立危险因素鉴定和预测模型构建两种。 独立危险因素鉴定是一直以…...
操作系统之进程状态、优先级和切换与调度
文章目录 1. 进程状态1.1 课本名词提炼1.2 运行&阻塞&挂起1.2.1 运行1.2.2 阻塞1.2.3 挂起 1.3 理解内核链表1.4 Linux中的内核解释1.5 进程状态的查看1.6 Z(zombie)——僵尸进程1.6.1 创建僵尸进程1.6.2 僵尸进程的危害 1.7 孤儿进程 2. 进程优先级2.1 基本概念2.2 查…...
[免费]微信小程序(图书馆)自习室座位预约管理系统(SpringBoot后端+Vue管理端)(高级版)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序(图书馆)自习室座位预约管理系统(SpringBoot后端Vue管理端)(高级版),分享下哈。 项目视频演示 【免费】微信小程序(图书馆)自习室座位预约管理系统(SpringBoot后端Vue管理端)(高级版…...
你使用过哪些 Java 并发工具类?
你的回答(口语化,面试场景) 面试官:你使用过哪些 Java 并发工具类? 你: 好的,我结合项目经验来说说常用的并发工具类: CountDownLatch 作用:等所有线程就绪后再触发任务…...
模板方法模式的C++实现示例
核心思想 模板方法设计模式是一种行为设计模式,它定义了一个算法的框架,并将某些步骤的具体实现延迟到子类中。通过这种方式,模板方法模式允许子类在不改变算法结构的情况下重新定义算法的某些步骤。 模板方法模式的核心在于: …...
国产编辑器EverEdit - 脚本(解锁文本编辑的无限可能)
1 脚本 1.1 应用场景 脚本是一种功能扩展代码,用于提供一些编辑器通用功能提供不了的功能,帮助用户在特定工作场景下提高工作效率,几乎所有主流的编辑器、IDE都支持脚本。 EverEdit的脚本支持js(语法与javascript类似)、VBScript两种编程…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...

