使用二进制文件方式部署kubernetes(1)

使用二进制文件方式部署kubernetes(1)

OS:OpenEuler-24.03

ip规划

规划好master以及worker节点数量,推荐master节点数为奇数

安装必备工具

所有节点执行

bash 复制代码
dnf -y install  wget psmisc vim net-tools nfs-utils telnet device-mapper-persistent-data lvm2 git tar curl bash-completion

部分工具功能:

psmisc:进程管理工具,包括pstree、killall、fuser,可以以树状图查看进程,可以杀死进程,可以查看哪些进程在使用指定文件

net-tools:ifconfig netstat route那些网络工具

device-mapper-persistent-data:通常和lvm2一起安装,提供持久化数据存储库,是Docker的存储驱动

lvm2:管理逻辑卷,可以创建、调整大小、删除逻辑卷

bash-completion:就是bash的tab补全功能

关闭防火墙和SElinux

所有节点执行

bash 复制代码
systemctl disable --now firewalld
setenforce 0
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

一般来说k8s部署在内部网络,如果选择不关闭防火墙和SElinux则需要配置防火墙开放针对性的端口

例如api-server端口6443

bash 复制代码
firewall-cmd --permanent --add-port=6443/tcp

但是内部网络的话一般都能被边界防火墙保护,若是云环境也可以设置相关安全组和ACL,那么为方便操作则关闭防火墙和SElinux,但众所周知 方便 和 安全 难以兼得

关闭交换分区

所有节点执行

bash 复制代码
sed -ri 's/.*swap.*/#&/' /etc/fstab
swapoff -a && sysctl -w vm.swappiness=0
cat /etc/fstab

因为k8s要精确的知道各个节点有多少可用内存来调度Pod,这里的内存不能算上Swap,(Swap就是把磁盘空间一部分当作虚拟内存来用),因为Swap速度慢,可能造成"磁盘抖动",导致pod性能突然下降

最后输出要出现如下所示才修改成功

网络配置

所有节点执行

创建calico.conf

bash 复制代码
vim /etc/NetworkManager/conf.d/calico.conf

写入

bash 复制代码
[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:tunl*

这是为后面使用calico作为CNI插件做准备,让NetworkManager不要管calico创建的接口,calico会自己管,否则可能会导致Pod生命周期错误,ip地址冲突、路由表混乱

时间同步

OpenEuler默认已经安装并开启chrony时间同步服务,如果没有安装则根据自己系统来选择安装命令

各个节点都要安装

bash 复制代码
# RedHat/CentOS 7/8/9
sudo yum install -y chrony

# Ubuntu/Debian
sudo apt update
sudo apt install -y chrony

# Fedora
sudo dnf install -y chrony

# openSUSE
sudo zypper install -y chrony

# 验证安装
chronyc --version

# 开启服务并设置开机自启
systemctl start chronyd # 注意末尾多个d
systemctl enable chronyd

# 查看服务状态
systemctl status chronyd

配置时间同步服务器,选择master1作为时间同步服务器

在master1上执行

bash 复制代码
vim /etc/chrony.conf

修改行数为23、26、32、41这四处地方,其中23行要改成自己的网段

重启chrony使修改生效

bash 复制代码
systemctl restart chronyd

配置客户机,也就是除master1以外所有节点

bash 复制代码
vim /etc/chrony.conf

修改行数3、32、41行内容,其中3行要修改我时间同步服务器ip,这里是master1ip

重启chrony

bash 复制代码
systemctl restart chronyd

验证配置

bash 复制代码
chronyc sources

配置ulimit

所有节点执行

bash 复制代码
ulimit -SHn 65535# 临时设置
bash 复制代码
vim /etc/security/limits.conf

在末尾添加

bash 复制代码
# 一般用户:(*表示除root外所有用户)
* soft nofile 1024        # 一般用户可打开的文件数
* hard nofile 65536
* soft nproc 1024         # 一般用户可运行的进程数
* hard nproc 4096
* soft memlock 65536      # 允许一般用户进程锁定内存在物理ram中的大小
* hard memlock 65536

# root用户:
root soft nofile 1048576  # 1M,运行K8s足够
root hard nofile 1048576
root soft nproc unlimited # 无限制
root hard nproc unlimited
root soft memlock unlimited
root hard memlock unlimited

因为k8s各组件由root用户运行,所以要限制普通用户的资源使用,以免影响k8s资源使用

配置ssh免密登录

在master1执行

bash 复制代码
ssh-keygen -f /root/.ssh/id_rsa -P ''
#以下ip需要替换成自己节点的ip
export IP="192.168.153.161 192.168.153.162 192.168.153.163 192.168.153.181 192.168.153.182"
export SSHPASS=your_password #root账户密码,且各节点root账户密码要相同
#安装sshpass
dnf install sshpass -y
for HOST in $IP;do sshpass -e ssh-copy-id -o StrictHostKeyChecking=no $HOST; done

配置master1可以免密ssh连接各节点,方便后续的文件传输

配置IPVS

IPVS(IP Virtual Server)是Linux内核内置的高性能负载均衡器,它替代Kubernetes默认的iptables模式来处理Service的流量分发。相比iptables,IPVS能显著提升大规模集群中Service的访问性能,并提供更丰富的监控指标和更好的连接管理能力

所有节点执行

bash 复制代码
vim /etc/modules-load.d/ipvs.conf

写入以下内容

bash 复制代码
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
ip_tables
ip_set
xt_set
ipt_set
ipt_rpfilter
ipt_REJECT
ipip

重启服务

bash 复制代码
systemctl restart systemd-modules-load.service

查看内核模块来验证配置生效

bash 复制代码
lsmod | grep -e ip_vs -e nf_conntrack
相关推荐
无言听风雨丶1 天前
Kubernetes 控制平面深度剖析:从 kubectl apply 到 etcd 写入的全链路
平面·kubernetes·etcd
openFuyao1 天前
openFuyao x 复旦大学软件工程实验室 Panel 回顾:Agentic时代,集群调度技术体系将如何演进?
kubernetes·openfuyao
螺蛳粉 螺蛳粉1 天前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
知已难寻1 天前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
相思难忘成疾1 天前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
weirong1 天前
给 K8s 加一个自动值班员:分级故障自愈引擎
kubernetes
云和数据.ChenGuang1 天前
Python 闭包详解:从原理到实战
linux·开发语言·人工智能·python·kubernetes
weirong1 天前
为什么 HPA 会震荡?手写一个带冷却窗口的伸缩决策引擎
kubernetes
-星空下无敌1 天前
Windows Docker K8s 安装部署Naocs ,SpringBoot 3.x 4.x 整合Naocs 版本兼容 配置中心、服务注册与发现
windows·docker·nacos·kubernetes·springboot·alibaba
吴声子夜歌1 天前
Kubernetes权威指南——深入掌握Pod(使用StatefulSet搭建MongoDB集群)
容器·kubernetes