1. 环境准备与集群规划:别急着敲命令
很多朋友一上来就照着教程敲命令,结果不是网络不通就是版本冲突,折腾半天又得重来。我刚开始玩K8S和Harbor的时候也这样,踩了不少坑。所以咱们第一步,千万别急着动手,先把“地基”打好。这个地基,就是你的服务器环境和整体架构规划。想一次部署成功,后面少折腾,这步绝对不能省。
首先说说服务器。我强烈建议,生产环境千万别用单台机器搞“All in One”,那是给自己挖坑。根据我的经验,一个能扛住生产流量、具备高可用能力的最小集群,至少需要6台服务器:3台管理节点(也叫Master节点),3台计算节点(也叫Worker节点)。管理节点是集群的大脑,负责调度和决策,三台可以互为备份,任何一台挂了都不影响集群运行。计算节点是干活的肌肉,真正运行你的容器应用。另外,我们还需要单独一台服务器来部署Harbor私有镜像仓库。所以总共是7台。你可能觉得多,但这是为稳定性付出的必要成本。虚拟机完全可以,我用的是Ubuntu 22.04 LTS,系统稳定,社区支持也好。
硬件配置上,管理节点可以“瘦”一点,2核4G内存起步就够,但一定要保证网络稳定。计算节点就得看你的应用需求了,跑微服务的话,4核8G是基础。硬盘最好用SSD,IO性能对容器启动速度影响巨大。网络规划是另一个核心。确保这7台机器在同一个局域网段内,能互相通过IP地址ping通,并且防火墙要放行必要的端口(比如K8S的6443、2379,Harbor的80、443)。我吃过亏,有一次部署完发现节点间通信时好时坏,查了半天是防火墙规则没配全。
最后,给每台机器起个好记的主机名很重要,别再用什么localhost或者默认的一串字符了。我的习惯是:管理节点叫 k8s-master-01, k8s-master-02, k8s-master-03;计算节点叫 k8s-worker-01, k8s-worker-02, k8s-worker-03;Harbor服务器就叫 harbor。这样在后续的配置文件和排查问题时,一眼就能分清谁是谁,效率高很多。
1.1 系统基础配置:统一环境,避免“玄学”问题
服务器准备好之后,咱们得给这7台机器做一个统一的“系统级美妆”。很多教程把这步一带而过,但恰恰是这些基础配置不一致,会导致后面出现各种“玄学”错误。咱们一步一步来,确保每台机器都一样。
第一件事,全部切换到root用户操作,避免权限问题。Ubuntu默认root密码是锁定的,先设置一下:sudo passwd root,然后输入新密码。之后的操作我们都用root。
第二,安装必备的基础工具。新装的Ubuntu可能连vim和curl都没有。咱们批量搞定:
apt update && apt upgrade -y
apt install -y vim curl wget net-tools openssh-server
vim是编辑配置文件的神器,curl和wget用来下载文件,net-tools包含ifconfig等老牌网络工具,openssh-server让你能远程连接。装完记得启动SSH并设置开机自启:systemctl enable --now ssh。
第三,配置SSH允许root登录。有些云主机或严格的安全策略默认禁止root远程登录,我们需要打开它(生产环境后期可根据安全要求再关闭)。
vim /etc/ssh/sshd_config
找到 #PermitRootLogin prohibit-password 这一行,去掉注释#,并把值改成 yes。保存退出后,重启SSH服务:systemctl restart sshd。这样你就能用Xshell、MobaXterm或者FinalShell等工具顺畅地连接所有服务器了。我特别喜欢用MobaXterm,因为它能同时向多个会话发送相同的命令,批量配置效率翻倍。
第四,修改主机名。前面规划好的名字,现在给每台机器安排上。比如在k8s-master-01上执行:
hostnamectl set-hostname k8s-master-01
修改后一定要退出当前SSH会话,重新登录,你才能看到终端提示符里的主机名变了。这个步骤7台机器都要做,并且要一一对应,不能搞混。
1.2 关键系统参数调优:为K8S铺平道路
系统基础配置好了,接下来是针对K8S的一些特定优化。这些设置能确保K8S的核心组件,比如kubelet,能够稳定运行。
首要任务是关闭Swap交换分区。K8S的设计理念是,如果节点内存不足,应该由调度器把Pod(容器组)赶到其他内存充足的节点去,而不是让节点自己使用硬盘上的Swap空间。使用Swap会导致性能急剧下降,而且可能干扰K8S对节点资源的管理。关闭方法很简单:
swapoff -a
这命令是临时关闭。为了永久生效,我们还需要编辑 /etc/fstab 文件,找到带有 swap 字样的那一行,在行首加上 # 注释掉它,然后保存。这样重启后Swap也不会再启用。
接着,我们需要加载一些内核模块并修改内核参数。创建一个配置文件:
cat > /etc/modules-load.d/k8s.conf << EOF
br_netfilter
EOF
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
然后执行命令让配置生效:
modprobe br_netfilter
sysctl --system
这里解释一下:br_netfilter模块让iptables规则能对桥接的网络流量进行过滤,这是K8S网络模型(


1027

被折叠的 条评论
为什么被折叠?



