使用 kubeadm 部署 Kubernetes 集群(一)linux环境准备

news2024/11/16 17:50:33

一、 初始化集群环境

准备三台 rocky8.8 操作系统的 linux 机器。每台机器配置:4VCPU/4G 内存/60G 硬盘
环境说明:
IP 主机名 角色 内存 cpu
192.168.1.63 xuegod63 master 4G 4vCPU
192.168.1.64 xuegod64 worker 4G 4vCPU
192.168.1.62 xuegod62 worker 4G 4vCPU

1、配置静态 IP:每台机器的网络模式要一致,能互相通信,机器网卡名字也要统一。

2、永久关闭 selinux 三台都执行

[root@localhost ~]#

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

#注意:修改 selinux 配置文件之后,重启机器,selinux 才能永久生效
[root@localhost~]# 

getenforce

执行结果是 Disabled

注释:SELinux(Security-Enhanced Linux)是一种基于 Mandatory Access Control(MAC)的安
全模块,它可以在 Linux 系统中提供强制访问控制机制。通过 SELinux,系统管理员可以对系统中的各种对象(如文件、进程、网络端口等)进行更加精细的安全控制,提高系统的安全性。
在安装 k8s 时,关闭 SELinux 是因为默认情况下 SELinux 会阻止 Kubernetes 一些操作,如
kubelet 对容器文件的访问等。为了避免由于 SELinux 导致 Kubernetes 运行不正常,建议在安装
Kubernetes 之前关闭 SELinux。
如果启用了 SELinux,需要针对 Kubernetes 进行特定的 SELinux 配置,以确保 Kubernetes
正常工作。具体的操作如下:
安装 policycoreutils-python 工具:
yum install -y policycoreutils-python
为 kubelet、kube-proxy 和 container runtime 的进程添加 SELinux 策略。例如,为
kubelet 添加策略的命令为:
semanage fcontext -a -t container_runtime_exec_t /usr/local/bin/kubelet
重载 SELinux 策略:
restorecon -R /usr/local/bin/kubele

3.配置主机名

#在 192.168.1.63 上执行如下:
hostnamectl set-hostname xuegod63 && bash
#在 192.168.1.64 上执行如下:
hostnamectl set-hostname xuegod64 && bash
#在 192.168.1.62 上执行如下:
hostnamectl set-hostname xuegod62 && bash

4、配置 hosts 文件:

修改三台每台机器的/etc/hosts 文件,在内容最后增加如下三行:

echo '
192.168.1.63 xuegod63
192.168.1.64 xuegod64
192.168.1.62 xuegod62
' >> /etc/hosts

5、安装基础软件包

三台都执行

 yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo libaio-devel vim ncurses-devel autoconf automake  zlib-devel epel-release openssh-server socat conntrack telnet ipvsadm

6、配置主机之间无密码登录

[root@xuegod63 ~]# ssh-keygen #一路回车,不输入密码

把本地的 ssh 公钥文件安装到远程主机对应的账户
[root@xuegod63 ~]# ssh-copy-id xuegod63
[root@xuegod63 ~]# ssh-copy-id xuegod64
[root@xuegod63 ~]# ssh-copy-id xuegod62

同理:62和64执行

7、关闭所有主机 firewalld 防火墙

三台都执行

systemctl stop firewalld ; systemctl disable firewalld

如果生产机器,防火墙开启,不能关,也可以,但是要放行一些端口:
如何在防火墙规则里放行端口:6443:Kubernetes API Server
2379、2380:etcd 服务
10250、10255:kubelet 服务
10257:kube-controller-manager 服务
10259:kube-scheduler 服务
30000-32767:在物理机映射的 NodePort 端口
179、473、4789、9099:Calico 服务端口
firewall-cmd --zone=public --add-port=6443/tcp --permanent
#--zone 指定了防火墙规则所属的区域,--add-port 指定了要开放的端口号和协议,--
permanent 表示在重启后也会保留这个规则。

8、关闭交换分区 swap

#临时关闭交换分区 三台都执行

swapoff -a

永久关闭:注释 swap 挂载 三台都执行
[root@xuegod63 ~]# vi /etc/fstab  #给 swap 这行开头加一下注释#

#/dev/mapper/rl-swap none swap defaults 0 0


交换分区(Swap)是为了在内存不足时,把部分内存的数据交换到硬盘上,以释放内存空间的一种机制。这样,即使物理内存不足,也可以保证系统运行的稳定性和正常性。
在安装 Kubernetes 时,需要禁用交换分区。这是因为 Kubernetes 在运行时需要使用大量的内存
和 CPU 资源,如果系统开始使用交换分区,会导致性能下降,严重影响 Kubernetes 的正常运行。因此,为了保证 Kubernetes 的性能和稳定性,建议在安装 Kubernetes 时禁用交换分区

9、修改内核参数:

三台都执行
[root@xuegod63 ~]#

 modprobe br_netfilter

modprobe 是一个 Linux 命令,它用于动态地加载内核模块到 Linux 内核中。br_netfilter 是
Linux 内核模块之一,它提供了桥接网络设备和 Netfilter 之间的接口。Netfilter 是 Linux 内核中的一个框架,它可以在数据包通过网络协议栈时进行修改或过滤。
在 Kubernetes 中,br_netfilter 模块用于实现 Kubernetes 集群中的网络功能。通过加载
br_netfilter 模块,我们可以确保在 Kubernetes 集群中使用的 iptables 规则正确应用
[root@xuegod63 ~]#

 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 -p /etc/sysctl.d/k8s.conf

1)net.bridge.bridge-nf-call-ip6tables: 当数据包经过网桥时,是否需要将 IPv6 数据包传递给
iptables 进行处理。将其设置为 1 表示启用。
2)net.bridge.bridge-nf-call-iptables: 当数据包经过网桥时,是否需要将 IPv4 数据包传递给
iptables 进行处理。将其设置为 1 表示启用。
3)net.ipv4.ip_forward: 是否允许主机转发网络包。将其设置为 1 表示启用。
这些参数是为了让 Linux 系统的网络功能可以更好地支持 Kubernetes 的网络组件(如
flannel、Calico 等),启用这些参数可以确保集群中的 Pod 能够正常通信和访问外部网络

10、配置安装 docker 和 containerd 的需要的阿里云 yum 源   三台都执行

 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

如果有提示的直接y

11、配置安装 k8s 命令行工具需要的阿里云的 yum 源

配置阿里云 Kubernetes 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
EOF

备注:
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/,
这是 Kubernetes 官方在阿里云上提供的 yum 仓库地址,使用这个地址可以从阿里云上下载和安装
Kubernetes 软件包。

12、配置时间同步 三台都执行

在 xuegod63 上执行如下:
开始安装 chrony 服务
[root@xuegod63 ~]# yum -y install chrony  #如果没有该服务安装一下
[root@xuegod63 ~]# systemctl enable chronyd --now  #设置 chronyd 开机启动并立即启
动 chronyd 服务同步网络时间
编辑 chronyd 配置文件,使用中国的时间服务器同步时间,速度更快

         三台都加 添加阿里和腾讯时间同步源 配置文件 /etc/chrony.conf 

cat >> /etc/chrony.conf <<EOF
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp1.tencent.com iburst
server ntp2.tencent.com iburst
EOF

chrony 是网络时间协议(NTP)的另一种实现,与网络时间协议后台程序(ntpd)不同,它可以更快地且
更准确地同步系统时钟。
两个主要程序:chronyd 和 chronyc
chronyd:后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿
chronyc:命令行用户工具,用于监控性能并进行多样化的配置。它在 chronyd 实例控制的计算机
上工作服务 unit 文件: /usr/lib/systemd/system/chronyd.service
监听端口: 323/udp,123/udp
配置文件: /etc/chrony.conf
ntpdate 和 chrony 是服务器时间同步的主要工具,两者的主要区别就是:
1、执行 ntpdate 后,时间是立即修整,中间会出现时间断档;
2、而执行 chrony 后,时间也会修正,但是是缓慢将时间追回,并不会断档。

重启 chronyd 服务
[root@xuegod62 ~]#

systemctl restart chronyd

配置时间定时同步

写个计划任务,定时同步时间:
[root@xuegod63~]# crontab -e
5 * * * * /usr/bin/systemctl restart chronyd   #每5分钟同步一次

在 Kubernetes 集群中,各个组件之间的通信和协调都需要依赖时间的同步,如果集群中各节点时
间不一致,可能会导致各种奇怪的问题,例如节点之间无法进行正确的 TLS 握手等。因此,建议在安装Kubernetes 集群之前,将集群中各个节点的时间同步到相同的时间源,保持时间的一致性

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

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

相关文章

phpoffice在tp框架中如何实现导入导出功能

安装 phpoffice/phpspreadsheet 库 composer require phpoffice/phpspreadsheet 导入功能 创建一个用于上传文件的视图&#xff0c;可以使用元素来实现文件上传。 <!-- application/view/your/import.html --><form action"{:url(your/import)}" method&q…

提升团队协同效率:2023年值得尝试的6大团队任务管理软件

更好地协作、提高工作效率、追踪任务进度并确保任务按时完成。在市面上有很多团队任务管理工具可供选择&#xff0c;本文将为您推荐6款高效实用的团队任务管理工具。 1、飞项 飞项是一款集任务管理、项目协作、团队沟通于一体的协同办公软件。它提供了任务清单、日程安排、文…

Linux命令--根据端口号查看进程号(PID)

Linux命令–根据端口号查看进程号&#xff08;PID&#xff09; 查找8080端口对应的进程号: netstat -nlp|grep :8297对应的进程号1061,如果想杀掉此进程&#xff0c;可以用一下命令&#xff1a; kill -9 1061

XXL-Job详解(二):安装部署

目录 前言环境下载项目调度中心部署执行器部署 前言 看该文章之前&#xff0c;最好看一下之前的文章&#xff0c;比较方便我们理解 XXL-Job详解&#xff08;一&#xff09;&#xff1a;组件架构 环境 Maven3 Jdk1.8 Mysql5.7 下载项目 源码仓库地址链接: https://github.…

网络基础『发展 ‖ 协议 ‖ 传输 ‖ 地址』

&#x1f52d;个人主页&#xff1a; 北 海 &#x1f6dc;所属专栏&#xff1a; 神奇的网络世界 &#x1f4bb;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f324;️前言&#x1f326;️正文1.网络发展1.1.背景1.2.类型 2.网络协议2.1.什么是协议2.2.协议…

OSEK OS任务调度的底层逻辑

先参考 FreeRTOS的任务触发底层逻辑 简述RTOS任务调度底层逻辑 AUTOSAR-OS的调度机制-调度表&#xff08;没理解透&#xff0c;继续更新&#xff09; OSEK与FreeRTOS在任务调度上最大的区别在于&#xff0c;FreeRTOS是基于全抢占任务调度和时间片轮转调度机制&#xff0c;具有…

Pyqt5实现多线程程序

主从架构 Pyqt常常使用**主从架构&#xff08;Master-Workers 架构&#xff09;**来避免界面卡死的情况。 Master-Workers 架构就像它的名字&#xff0c;一个master统领着几个workers一起干活。其中某个worker倒下了不会导致整体任务失败。matser不用干活&#xff0c;因此可以…

2021年9月15日 Go生态洞察:TLS加密套件的自动排序机制

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

4年功能测试裸辞找不到工作,一周我就后悔了····

我们可以从以下几个方面来具体分析下&#xff0c;想通了&#xff0c;理解透了&#xff0c;才能更好的利用资源提升自己。 一、我会什么&#xff1f; 先说第一个我会什么&#xff1f;第一反应&#xff1a;我只会功能测试&#xff0c;在之前的4年的中我只做了功能测试。内心存在…

autogen的理解和实践

什么是autogen? AutoGen 是一个框架&#xff0c;支持使用多个代理来开发 LLM 应用程序&#xff0c;这些代理可以相互对话来解决任务。AutoGen 代理是可定制的、可对话的&#xff0c;并且无缝地允许人类参与。他们可以采用法学硕士、人力投入和工具组合的各种模式运作。简单来说…

高级IO select 多路转接实现思路

文章目录 select 函数fd_set 类型timeval 结构体select 函数的基本使用流程文件描述符就绪条件以select函数为中心实现多路转接的思路select 缺陷 select 函数 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); selec…

3款厉害的小工具,小黑子都在用!

大家好&#xff0c;我是 Javapub。 程序员与普通人最大的区别是什么&#xff0c;当然是会使用工具。基于一些同学经常问我的问题&#xff0c;接下来给大家分享几款我经常使用的工具&#xff0c;主打一个提升效率。 第一款 Everything 用 windwos 的同学都体会过&#xff0c;…

咨询+低代码,强强联合为制造业客户赋能

内容来自演讲&#xff1a;沈毅 | 遨睿智库 | 董事长 & 王劭禹 | 橙木智能 | 联合创始人 摘要 文章主要讲述了智库董事长沈毅创办广告公司的经历&#xff0c;以及他在管理公司过程中遇到的问题和挑战&#xff0c;最后通过与明道云以及橙木智能联合创始人王邵禹老师的合作&…

STM32/GD32_分散加载

Q&#xff1a;如何将一个变量、某个源文件的函数在编译阶段就存储在用户指定的区域&#xff1f; KEIL环境&#xff1a;.map后缀文件、.sct后缀文件 IAR环境&#xff1a;.map后缀文件、.icf后缀文件 【map文件】 对固件里面的变量、函数、常量等元素的存储空间进行分配的说明…

【计算机毕业设计】springboot+java高校实验室器材耗材料借用管理系统94l73

实验室耗材管理系统在Eclipse/idea环境中&#xff0c;使用Java语言进行编码&#xff0c;使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务&#xff0c;本系统教师和学生申请使用实验材料&#xff0c;管理员管理实验材料&#xff0c;审核实验材料的申请…

项目设计---MQ

文章目录 一. 项目描述二. 核心技术三. 需求分析概要设计四. 详细设计4.1 服务器模块4.1.1 内存管理4.1.2 硬盘管理4.1.2.1 数据库管理4.1.2.2 文件管理 4.1.3 消息转发 4.2 客户端模块4.2.1 连接管理4.2.2 信道管理 4.3 公共模块4.3.1 通信协议4.3.2 序列化/反序列化 一. 项目…

Linux 如何在文件中查找指定内容,grep的用法

Linux 如何在文件中查找指定内容 1、 如我们 查找 log_file_catalina.out 文件中&#xff0c;包含 ‘总数&#xff1a;900’ 的字符内容 2、 在日志中查看 83910_law_21CFBC7EB25B1FF60255FE7F4BE1BCCF1CE726F6_0.bdyhf 的相关内容 grep 83910_law_21CFBC7EB25B1FF60255FE7…

Redis String类型

String 类型是 Redis 最基本的数据类型&#xff0c;String 类型在 Redis 内部使用动态长度数组实现&#xff0c;Redis 在存储数据时会根据数据的大小动态地调整数组的长度。Redis 中字符串类型的值最大可以达到 512 MB。 关于字符串需要特别注意∶ 首先&#xff0c;Redis 中所…

[vue3] 使用 vite 创建vue3项目的详细流程

一、vite介绍 Vite&#xff08;法语意为 “快速的”&#xff0c;发音 /vit/&#xff0c;发音同 “veet”) 是一种新型前端构建工具&#xff0c;能够显著提升前端开发体验&#xff08;热更新、打包构建速度更快&#xff09;。 二、使用vite构建项目 【学习指南】学习新技能最…

IDE1007:当前上下文中不存在名称“xxx“

这种在Halcon中直接导出的代码不能直接放程序中&#xff0c;应该在控件中比如一个按钮中&#xff0c;就不会出错了。