最新版kubeadm搭建k8s(已成功搭建)
kubeadm搭建k8s(已成功搭建)
环境配置
主节点 k8s-master:4核8G、40GB硬盘、CentOS7.9(内网IP:10.16.64.67)
从节点 k8s-node1: 4核8G、40GB硬盘、CentOS7.9(内网IP:10.16.64.68)
从节点 k8s-node2: 4核8G、40GB硬盘、CentOS7.9(内网IP:10.16.64.69)
# 查看配置
cat /etc/*release

1 初始化配置
关闭selinux、swap
三台机器都需要执行
# 关闭 Selinux:防止服务可能无法启动(企业中基本上都会选择关闭)
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0# 关闭 Swap:防止 kubelet 组件无法启动
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab

设置主机名
# 主服务器(bash显示主机名)
hostnamectl set-hostname k8s-master
bash# 从服务器1(bash显示主机名)
hostnamectl set-hostname k8s-node1
bash# 从服务器2(bash显示主机名)
hostnamectl set-hostname k8s-node2
bash
启动内核参数iptables
# 访问网络插件丢包
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF# 生效配置
sysctl --system

2 安装docker&配置加速
三台服务器都执行
安装docker
# 1 配置阿里云镜像源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo# 2 yum安装docker
yum -y install docker-ce

配置docker加速
# 启动docker
systemctl enable docker && systemctl start docker# 配置docker镜像加速
# 配置加速器
cat > /etc/docker/daemon.json << EOF{"registry-mirrors": ["https://8er86g8v.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"]}
EOF# 重启 Docker
systemctl restart docker
安装cri-dockerd(docker与k8s通信的中间程序:翻译官)
因为k8s的容器运行时默认不再使用docker,因此如果要通过docker作为k8s的容器运行时需要安装对应组件,让其作为中间人来让k8s与docker通信。
# 安装cri-dockerd(docker与k8s通信的中间程序)
# 下载
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.2/cri-dockerd-0.3.2-3.el7.x86_64.rpm# 安装
rpm -ivh cri-dockerd-0.3.2-3.el7.x86_64.rpm
修改cri-docker镜像地址
# 修改cri-docker依赖的镜像地址
# 修改配置
vim /usr/lib/systemd/system/cri-docker.service
# 将 ExecStart 配置改成下述这样:
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9

重新加载cri-docker
systemctl daemon-reload
systemctl enable cri-docker && systemctl start cri-docker
3 部署k8s
安装kubeadm&kubelet&kubectl
- kubeadm:集群的初始化部署和升级
- kubectl:命令行工具,用于向APIServer发送指令,创建pod、Deployment等。
- kubelet :是在每个节点上运行的代理,它负责接受主节点上的 API Server下放的指令,它还负责监控 Pod 的状态,并向 API Server 报告状态更新。此外,kubelet 与容器运行时(如 Docker 或 containerd)交互,以启动和管理容器。
用户通过kubectl向API Server发送指令,API Server接受到指令后交给kubelet去执行对应操作,同时kubelet定期上报信息给API Server。
### 三台机器上都执行
# 1 添加yum源仓库
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF# 2 安装kubeadm、kubelet、kubectl
# 安装工具
yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0# 设置开机自启
systemctl enable kubelet
master节点执行kubeadm init初始化集群
# apiserver-advertise-address 设置为主机内网ip地址
# --apiserver-advertise-address=10.16.64.67 配置k8s apiserver地址,用于监听、响应其他节点请求
# --service-cidr=10.96.0.0/12 配置k8s Service的IP范围
# --pod-network-cidr=10.244.0.0/16 配置k8s pod的IP范围
kubeadm init \--apiserver-advertise-address=10.16.64.67 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.28.0 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16 \--cri-socket=unix:///var/run/cri-dockerd.sock
出现下述输出,说明安装完成:

按照控制台输出提示,在 Master 节点中执行上述图片中的命令:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
从节点执行kubeadm join加入k8s集群
接下来,将控制台中第二条命令在其他 Worker 节点中执行(并且指定一下socket):
# 尾部记得指定 socket,不要直接CV控制台!
# 如果不小心把 kubeadm join 命令清屏了,使用:kubeadm token create --print-join-command 重新生成
kubeadm join 10.16.64.67:6443 --token cxoc4h.fq38t2ftoppoedos --discovery-token-ca-cert-hash sha256:e82ccf4df53c534ab78c2aa19b1c644dc72ceb60a23ad7691c59a31170a21128 --cri-socket=unix:///var/run/cri-dockerd.sock

下面我们可以按照提示在Master节点执行kubectl get nodes 查看集群节点信息。可以看到虽然其他节点加入了k8s集群,但状态是NotReady不正常的,这是因为没有下载网络插件进行通信:

安装Calico网络插件,让node间通信
下面我们可以按照提示在Master节点执行kubectl get nodes 查看集群节点信息。可以看到虽然其他节点加入了k8s集群,但状态是NotReady不正常的,这是因为没有下载网络插件进行通信:

此时需要 Master 节点安装 Calico 网络插件,通过下述命令进行下载 calico.yaml 文件:
# 下载 calico.yaml 文件
cd ~
wget https://xuzhibin-bucket.oss-cn-beijing.aliyuncs.com/k8s/calico.yaml
下载完毕后,修改 calico.yaml 文件中的 CALICO_IPV4POOL_CIDR 配置,修改成上面 pod-network-cidr 的值:10.244.0.0/16(初始化k8s集群时,在master节点上执行的那个kubeadm init命令),如下所示:
# 通过calico来完成node间的通信
vim calico.yaml

修改完毕后,Master 应用配置文件:
kubectl apply -f calico.yaml

等待3分钟后,查看 Pod 运行状态,发现 pods 全部状态为 Running 成功,这样就说明 k8s 集群部署完毕了!
kubectl get pods -A -o wide


参考:https://blog.csdn.net/weixin_46594796/article/details/139649056
相关文章:
最新版kubeadm搭建k8s(已成功搭建)
kubeadm搭建k8s(已成功搭建) 环境配置 主节点 k8s-master:4核8G、40GB硬盘、CentOS7.9(内网IP:10.16.64.67) 从节点 k8s-node1: 4核8G、40GB硬盘、CentOS7.9(内网IP:10…...
C++学习笔记-友元函数的定义与使用
一、引言 在C中,友元函数(Friend Function)是一个独特而强大的特性,它打破了类的封装性,允许一个或多个非成员函数访问类的私有(private)和保护(protected)成员。尽管这…...
熵、交叉熵、KL散度
这里写目录标题 熵KL散度引入交叉熵。交叉熵的二分类公式: 再次理解SoftMax函数结束 熵 熵,是一个物理上的概念,表示一个系统的不确定性程度,或者表示一个系统的混乱程序。 下边是信息熵的演示: 信息熵的公式如下&…...
THS配置keepalive(yjm)
启动完THS管理控制台和THS后,登录控制台,进入实例管理》节点管理,可以分别使用界面配置和编辑配置设置长连接。 1、界面配置 点击界面配置》集群设置,启用长连接,设置长连接数、最大请求数和超时时间。 2、编辑配置 …...
新加坡裸机云多IP服务器特性
新加坡裸机云多IP服务器是一种高性能、稳定性强,且具备多IP地址特性的服务器。它主要适用于需要高度计算性能、网络连接稳定和高安全性的业务场景,如跨境外贸等。下面将详细探讨该类型服务器的特性,rak部落为您整理发布新加坡裸机云多IP服务器…...
深入理解ADB:Android调试桥详解与使用指南
🍎个人博客:个人主页 🏆个人专栏:Android ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 1. 什么是ADB? ADB的基本原理: 2. ADB的安装与配置 安装ADB工具集: 配置ADB环境变量&am…...
PACS-医学影像信息管理系统,全影像科室PACS源码,内置包括MPR、CMPR、VR等三维处理功能
PACS系统可以覆盖医院现有放射、CT、MR、核医学、超声、内镜、病理、心电等绝大部分DICOM和非DICOM检查设备,支持从科室级、全院机、集团医院级乃至到区域PACS的平滑扩展,能够与医院HIS、集成平台的有效集成和融合,帮助医院实现了全院医学影像…...
无人机搭载无人机反制设备可行性分析
一、引言 随着无人机技术的飞速发展,无人机在各个领域的应用越来越广泛。然而,无人机的不当使用也可能带来安全隐患和隐私问题。因此,无人机反制设备应运而生,用于对非法或危险无人机进行干扰和控制。本文将对无人机搭载无人机反…...
MATLAB绘制方波、锯齿波、三角波、正弦波和余弦波、
一、引言 MATLAB是一种具有很强的数值计算和数据可视化软件,提供了许多内置函数来简化数学运算和图形的快速生成。在MATLAB中,你可以使用多种方法来快速绘制正弦波、方波和三角波。以下是一些基本的示例,展示了如何使用MATLAB的命令来实现正弦…...
【通信协议-RTCM】MSM语句(2) - RINEXMSM7语句总结(重要!自动化开发计算卫星状态常用)
注释: 在工作中主要负责的是RTCM-MSM7语句相关开发工作,所以主要介绍的就是MSM7语句相关内容 1. 相位校准参考信号 2. MSM1、MSM2、MSM3、MSM4、MSM5、MSM6和MSM7的消息头内容 DATA FIELDDF NUMBERDATA TYPENO. OF BITSNOTES Message Number - 消息编…...
ios CCUIFont.m
// // CCUIFont.h // CCFC // //#import <Foundation/Foundation.h>// 创建字体对象 #define CREATE_FONT(fontSize) [UIFont systemFontOfSize:(fontSize)]interface UIFont(cc) (void)logAllFonts;end // // CCUIFont.m // CCFC // //#import "CCUIFont.h&…...
调度子系统在特定时间执行
时序逻辑调度器设计模式允许您安排Simulink子系统在指定时间执行。以下模型说明了这种设计模式。 时序逻辑调度器图表包含以下逻辑: 时序逻辑调度器的关键行为 时序逻辑调度器图表包含两个状态,它们以不同的速率调度函数调用子系统A1、A2和A3的执行&…...
【QAC】Dashboard服务端如何配置
【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决Dashboard服务端如何配置的问题。 2、 问题场景 客户想使用Dashboard,Dashboard服务端如何配置。 3、软硬件环境 1、软件版本:HelixQAC23.04 2、机器环境:Windows 64bit 3…...
深入理解Linux网络(四):TCP接收阻塞
TCP socket 接收函数 recv 发出 recvfrom 系统调用。 进⼊系统调⽤后,⽤户进程就进⼊到了内核态,通过执⾏⼀系列的内核协议层函数,然后到 socket 对象的接收队列中查看是否有数据,没有的话就把⾃⼰添加到 socket 对应的等待队列⾥…...
【iOS】内存五大分区
目录 堆(Heap)是什么五大分区栈区堆区全局/静态区常量区(即.rodata)代码区(.text) 函数栈堆和栈的区别和联系图解 OC语言是C语言的超集,所以先了解C语言的内存模型的内存管理会有很大帮助。C语言…...
Jupyter Notebook: 是一个强大的交互式计算
文章目录 引言Jupyter Notebook的原理基础使用安装与启动单元格(Cell)操作快捷键 高级使用魔术命令Markdown支持可视化版本控制 优缺点优点缺点 官网链接结论 引言 Jupyter Notebook是一个强大的交互式计算环境,特别适用于数据科学、机器学习…...
【C#学习笔记】变量、变量类型
在C#中,变量是存储数据的容器,每个变量都有其特定的数据类型,这决定了变量可以存储的数据类型和大小。以下是关于C#中变量的由浅入深的详细解释,并附带代码示例和解释: 基础概念 定义: 变量是存储数据的容…...
题解:T480718 eating
eating 题目背景 从前有个荣光的王国,小 A 是里面的国王,今天他要赐予他的子民以仓廪。 题目描述 在一条街上有 n n n 个饭店。小 A 站在这条街的最左端。 第 i i i 个饭店离这条街最左端的距离是 a i a_i ai,它所售卖的菜品的美味…...
MATLAB中matfile用法
目录 语法 说明 示例 创建 MAT 文件对象 启用对 MAT 文件的写访问权限 加载整个变量 将整个变量保存至现有 MAT 文件 加载和保存部分变量 确定变量大小 参数说明 局限性 提示 matfile的功能是访问和更改 MAT 文件中的变量,而不必将文件加载到内存中。 …...
Spring之Spring Bean的生命周期
Spring Bean的生命周期 通过BeanDefinition获取bean的定义信息调用构造函数实例化beanBean的依赖注入处理Aware接口(BeanNameAware、BeanFactoryAware、ApplicationContextAware)Bean的后置处理器BeanPostProcessor-前置初始化方法(Initiali…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
