Linux搭建Kubernetes集群(单Master)【附图文】

news2024/9/20 14:29:21

文章目录

    • 一、集群环境配置要求
    • 二、主机准备
    • 三、初始环境准备
      • 1.关闭防火墙
      • 2.关闭 selinux
      • 3.关闭swap
      • 4.加载 br_netfilter 模块
      • 5.允许iptables转发流量
      • 6.设置时间同步
    • 四、安装Docker
    • 五、安装kubeadm, kubectl, kubelet
    • 六、在Master节点部署集群
    • 七、将 node 节点加入集群
    • 八、部署 CNI 网络插件

一、集群环境配置要求

master 节点:

  • CPU 两核及以上
  • 内存 4G 及以上
  • 硬盘 20G 及以上

node 节点(配置要求会更高):

  • CPU 四核及以上
  • 内存 8G 及以上
  • 硬盘 40G 及以上

二、主机准备

准备三台虚拟机,分别安装Red Hat系统,一台作为 master 节点,另两台作为 node 节点,且每台虚拟机有自己的专属 IP 地址。

hostnameIP
Master节点master192.168.80.40
Node节点node01192.168.80.39
Node节点node02192.168.80.55

Red Hat7.9镜像下载地址
链接:https://pan.baidu.com/s/1AO_iDLgFCGymHHy9CKrqiA?pwd=c2ne
提取码:c2ne

虚拟机创建和配置注意事项:

  • 硬件最少达到以上最低标准配置;
  • 三台虚拟机的网络连接选择一样的模式; 在这里插入图片描述
  • 创建时禁止swap分区(安装时如果没有禁止swap分区,后续通过命令禁止);
  • 创建完成确保虚拟机可以访问外网,以便下载镜像;
  • 安装weget工具(yum intsall weget);

三、初始环境准备

以下在三个节点都执行(只截取其中一个节点作为示例)

1.关闭防火墙

#临时关闭
systemctl stop firewalld
#永久关闭
systemctl disable firewalld

2.关闭 selinux

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

3.关闭swap

#临时关闭
swapoff -a

#永久关闭
vi /etc/fstab  # 将swap一行注释

在这里插入图片描述

#关闭当前的 swap
swapoff -a 
#验证 swap 是否已关闭
cat /proc/swaps
#如果输出为空,则表示 swap 已关闭

在这里插入图片描述

4.加载 br_netfilter 模块

#load mod
modprobe br_netfilter
echo "modprobe br_netfilter" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

5.允许iptables转发流量

#允许iptables转发流量
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
EOF

#使其生效
sysctl --system

#检查iptables设置为接受
iptables-save |grep DROP

6.设置时间同步

yum install ntpdate -y
ntpdate time.windows.com

在这里插入图片描述

这里如果报错:

在这里插入图片描述
需要配置DNS服务器:
vi /etc/resolv.conf

#Generated by NetworkManager
nameserver 114.114.114.114
nameserver 8.8.8.8
nameserver 8.8.4.4

四、安装Docker

三个节点都需要安装(只截取其中一个节点作为示例)

cd /etc/yum.repos.d/
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#替换文件中每一行里所有的 $releasever 为 7
vi CentOS-Base.repo
#按 Esc 键回到命令模式,输入以下命令进行替换
:%s/$releasever/7/g
($releasever在CentOS中可以自动解析为对应版本,但是redhat不支持自动解析,需要手动替换 备份原yum文件)

#安装docker
yum install -y docker-ce-19.03.15-3.el7
#安装完成查看docker版本
docker -v

# config docker server 
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"insecure-registries": [
  "0.0.0.0/0"
],
"registry-mirrors": ["https://otvjuhk6.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
  "max-size": "100m"
},
"live-restore": true,
"storage-driver": "overlay2",
"storage-opts": [
  "overlay2.override_kernel_check=true"
]
}
EOF

# start docker
systemctl enable docker && systemctl start docker

在这里插入图片描述

五、安装kubeadm, kubectl, kubelet

三个节点都安装(只截取其中一个节点作为示例)

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=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

yum install -y kubelet-1.18.17 kubeadm-1.18.17 kubectl-1.18.17 
systemctl enable kubelet && systemctl start kubelet

在这里插入图片描述

六、在Master节点部署集群

在 master 节点中执行以下命令,将apiserver-advertise-address 和kubernetes-version修改为自己的Master节点IP和kube 版本号。

kubeadm init \
--apiserver-advertise-address=192.168.80.40 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.17 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

执行完成后会生成两条命令:
在这里插入图片描述
使用命令docker images查看系统中的镜像,可以看到我们需要的镜像均已安装完成。
在这里插入图片描述

七、将 node 节点加入集群

执行上一步输出的两条命令:
在这里插入图片描述1.开启 kubectl 工具的使用(该命令在master节点中执行)

mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

在这里插入图片描述

2.将 node 节点加入 master 中的集群(该命令在两个工作节点node中执行)

kubeadm join 192.168.80.40:6443 --token hmyqja.2xhx66gzlcbqrbkx \
    --discovery-token-ca-cert-hash sha256:f176209fbc7b2310a6f5251f3d7445ef3786aa5fc241c384627597da6394327a

在这里插入图片描述
在这里插入图片描述
执行完成后在master节点使用kubectl get nodes查看此时集群中的工作节点状态,可以看到node1 和 node2 工作节点已加入至 master 中的集群,但是状态都是NotReady。

在这里插入图片描述

在master节点使用kubectl get pods -n kube-system命令查看运行状态,可以看到有两个pod是处于Pending,因为没有安装网络组件。
在这里插入图片描述

八、部署 CNI 网络插件

在上述操作完成后,各个工作节点已经加入了集群,但是它们的状态都是 NoReady,这是由于无它们无法跨主机通信的原因。而 CNI 网络插件的主要功能就是实现 pod 资源能够跨宿主机进行通信。

在master节点中执行以下命令:

kubectl apply -f https://docs.projectcalico.org/v3.10/manifests/calico.yaml

在这里插入图片描述

再次查看运行状态已全部running:

kubectl get pods -n kube-system

在这里插入图片描述
再次查看节点状态已全部Ready:

kubectl get nodes

在这里插入图片描述
Kubernetes 集群搭建完成。

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

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

相关文章

springcloud rocketmq 新增的消费者组从哪里开始消费

如果新建一个新的消费者组&#xff0c;是否会消费历史消息&#xff0c;导致重复消费&#xff1f; 直接在 console 界面新增消费者组&#xff0c;但是没有办法绑定订阅关系&#xff0c;没有找到入口&#xff0c;在 控制台项目源码 rocketmq-externals 也没有找到可以确定订阅关系…

Windows 11预览补丁KB5040527影响火绒驱动加载的解决办法

7 月 11 日&#xff0c;微软更新Windows 11 预览版本补丁 KB5040527&#xff0c;补丁安装后会影响火绒驱动加载导致火绒安全软件服务异常&#xff0c;补丁相关信息如下&#xff1a; https://blogs.windows.com/windows-insider/2024/07/11/releasing-windows-11-builds-22621-…

微信视频号下载又一工具,免费简单易用!

Res-downloader嗅探资源下载器请收好 官方称支持微信视频号、抖音、快手、小红书等网络资源下载 使用方法 第一步&#xff0c;下载软件 文末扫码 或者搜索关注公众号AIshape 回复 RES 获取 或 自行百度搜索下载 第二步&#xff0c;软件设置 打开软件会弹出接受传入网络链…

CSI-RS在信道中传输的过程

简单介绍CSI-RS信号生成&#xff0c;在信道中传输和接收的过程 1.载波配置 首先需要配置载波相关的参数 系统带宽和子载波间隔 5G NR中&#xff0c;系统带宽和子载波间隔是两个关键参数&#xff0c;共同决定无线资源的分配和使用 系统带宽 5G NR支持广泛的系统带宽&…

【SOC 芯片设计 DFT 学习专栏 -- DFT OCC 与 ATPG的介绍】

请阅读【嵌入式及芯片开发学必备专栏】 请阅读【芯片设计 DFT 学习系列 】 如有侵权&#xff0c;请联系删除 转自&#xff1a; 简矽芯学堂 简矽芯学堂 2024年01月18日 09:00 陕西 文章目录 OCC 介绍Fast ScanFull chip ATPGPartition ATPGHierarchical ATPG OCC 介绍 OCC&am…

Ubuntu下载jdk:cannot execute binary file

虚拟机上Ubuntu系统安装jdk且配置环境之后&#xff0c;java -version显示cannot execute binary file&#xff0c;多番查阅推测是由于系统和jdk版本不兼容的原因。 uname -m查看系统版本位i686&#xff0c;是32位的&#xff0c;和64位的jdk版本不兼容。因此&#xff0c;下载32位…

QT--进程

一、进程QProcess QProcess 用于启动和控制外部进程&#xff0c;管理其输入输出流。 使用方法 start()&#xff1a;启动一个新进程。setStandardInputFile()&#xff1a;将文件作为标准输入。将进程的标准输入&#xff08;stdin&#xff09;重定向到指定的文件。换句话说&am…

【Linux】从零开始认识多线程 --- 线程互斥

人生有许多事情 正如船后的波纹 总要过后才觉得美的 -- 余光中 线程互斥 1 线程类的封装1.1 框架搭建1.2 线程启动1.3 线程终止1.4 线程等待1.5 运行测试 2 线程互斥2.1 多线程访问的问题2.2 解决办法 --- 锁2.3 从原理角度理解锁 Thanks♪(&#xff65;ω&#xff65;)&am…

QT信号和信号槽

信号和信号槽 一.信号与槽1.信号和槽的概述1.2.信号的本质1.3.信号的本质 二.信号和槽的使用2.1 连接信号和槽connect()函数原型&#xff1a;参数的说明 三.自定义信号和槽3.1基本语法1.自定义信号槽的书写规范2、自定义槽函数书写规范3.发送信号 3.2带参数的信号和槽 四.信号与…

Eclipse 搭建 C/C++ 开发环境以及eclipse的使用

一、下载、安装 MinGW 1、下载: 下载地址&#xff1a;MinGW - Minimalist GNU for Windows - Browse Files at SourceForge.net 点击“Download Latest Version”即可 下载完成后&#xff0c;得到一个名为 mingw-get-setup.exe 的安装文件。双击运行&#xff0c;安装即可。 …

一套功能齐全、二开友好的即时通讯IM工具,提供能力库和UI库,支持单聊、频道和机器人(附源码)

前言 在当今数字化时代&#xff0c;即时通讯(IM)和实时音视频(RTC)功能已成为众多应用的标配。然而&#xff0c;现有的解-决方案往往存在一些痛点&#xff0c;如架构落后、成本高昂、数据安全性和隐私保护不足&#xff0c;以及二次开发和部署的复杂性。 为了解决这些问题&…

超薄超小单独北斗定位的4G工牌记录仪、4G胸卡记录仪

AIoT万物智联&#xff0c;智能安全帽生产厂家&#xff0c;执法记录仪生产厂家&#xff0c;智能安全帽、智能头盔、头盔记录仪、执法记录仪、智能视频分析/边缘计算AI盒子、车载DVR/NVR、布控球、智能眼镜、智能手电、智能电子工牌、无人机4G补传系统等统一接入大型融合通信可视…

无法继续安装 计算机正忙于安装一个非 Visual Studio 的程序。

解决办法 以管理员身份打开cmd运行窗口&#xff0c;执行以下命令&#xff1a; taskkill -f -im msiexec*

网络三剑客之sed

目录 一、sed是什么 二、sed为什么这样工作&#xff08;原理&#xff09; 三、sed命令该怎么操作 3.1 基本的操作选项 3.2 怎么去使用sed 3.3 操作实例 3.3.1 打印输出&#xff08;-n、-p、-r&#xff09; 3.3.2 增加内容&#xff08;i、a&#xff09; 3.3.3 删除&…

网络安全入门教程(非常详细)从零基础入门到精通_网路安全 教程

前言 1.入行网络安全这是一条坚持的道路&#xff0c;三分钟的热情可以放弃往下看了。2.多练多想&#xff0c;不要离开了教程什么都不会了&#xff0c;最好看完教程自己独立完成技术方面的开发。3.有时多百度&#xff0c;我们往往都遇不到好心的大神&#xff0c;谁会无聊天天给…

机器学习 | 回归算法原理——最速下降法(梯度下降法)

Hi&#xff0c;大家好&#xff0c;我是半亩花海。接着上次的最小二乘法继续更新《白话机器学习的数学》这本书的学习笔记&#xff0c;在此分享最速下降法&#xff08;梯度下降法&#xff09;这一回归算法原理。本章的回归算法原理基于《基于广告费预测点击量》项目&#xff0c;…

大文件分片上传(前端TS实现)

大文件分片上传 内容 一般情况下&#xff0c;前端上传文件就是new FormData,然后把文件 append 进去&#xff0c;然后post发送给后端就完事了&#xff0c;但是文件越大&#xff0c;上传的文件也就越长&#xff0c;如果在上传过程中&#xff0c;突然网络故障&#xff0c;又或者…

opencascade AIS_InteractiveContext源码学习9 obsolete methods

AIS_InteractiveContext 前言 交互上下文&#xff08;Interactive Context&#xff09;允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是&#xff0c;对于已经被交互上下文识别的交互对象&#xff0c;必须使用上下文方法进行…

鸿蒙SDK开发能力

什么是鸿蒙SDK&#xff1a;HarmonyOS(Software Development Kit)是面向应用和服务开发的开放能力合集,本质就是工具集&#xff0c;与JDK、AndroidSDK在逻辑上有相似之处 18N&#xff1a;1指的是手机&#xff0c;8指的是车机、音箱、耳机、手表/手环、平板、大屏、PC、AR/VR&am…

Python——使用Seaborn钻石数据可视化分析(2)

续 Python——使用Seaborn钻石数据可视化分析(1) 目录 📈 4、非数值变量描述性统计分析 1️⃣ 柱状图——分析钻石切工的情况 📍 sns.countplot —— 绘制柱状图、条形图 2️⃣ 箱线图——分析不同切工的钻石的价格情况 📍 sns.barplot —— 不同分类变量之间的数…