一、首先闭坑指南:

关于版本,

最开始我从官网下载了mini版本,AlmaLinux-10.2-x86_64-minimal.iso,因为我习惯用mini版,然后联网安装需要的各种软件包,但是这次翻车了,安装K8S的时候发现 nodprobe br_netfilter 执行失败,无法加载。解决方法有两个,要么重新编译内核,要么下载 AlmaLinux-10.2-x86_64-dvd.iso 重新安装,经过比较,我选择了后者。虽然还是按照mini版,但内核确实已经包含了 br_netfilter 。写在前面帮助大家避免不必要的麻烦。

二、基础环境准备

主机名 操作系统/内核版本/k8s版本 IP地址 CPU 内存 外网环境

k8s-master01 AlmaLinux 10.2/6.12.0-211.22.1/k8s v1.36.1 192.168.15.200/24 22 4G 是

k8s-node01 AlmaLinux 10.2/6.12.0-211.22.1/k8s v1.36.1 192.168.15.201/24 22 4G 是

k8s-node02 AlmaLinux 10.2/6.12.0-211.22.1/k8s v1.36.1 192.168.15.202/24 2*2 4G 是

[root@AlamaLinux102 ~]hostnamectl | grep -E "Operating System|Kernel|Architecture"; echo -n "当前时间: "; date +"%Y-%m-%d"

Operating System: AlmaLinux 10.2 (Lavender Lion)

Kernel: Linux 6.12.0-211.22.1.el10_2.x86_64

Architecture: x86-64

当前时间: 2026-06-15

[root@AlamaLinux102 ~]echo -n "物理CPU 个数:" && lscpu | grep "^Socket(s)" | awk '{print $2}'

物理CPU 个数:2

[root@AlamaLinux102 ~]echo -n "总核心数:" && lscpu | grep "^CPU(s)" | awk '{print $2}'

总核心数:4

[root@AlamaLinux102 ~]free -mh

total used free shared buff/cache available

Mem: 3.5Gi 1.0Gi 2.1Gi 9.8Mi 693Mi 2.5Gi

Swap: 0B 0B 0B

[root@AlamaLinux102 ~]

Alama Linux 10.2 安装 K8S 1.36.1 完整版

一、所有节点:系统初始化(规避网络、内核相关报错)

修改主机名

root@AlamaLinux102:~# hostnamectl set-hostname k8s-master01

root@AlamaLinux102:~# hostnamectl set-hostname k8s-node01

root@AlamaLinux102:~# hostnamectl set-hostname k8s-node02

修改IP地址 - 下面是示例 - Alama Linux 10.2

[root@K8S-master01 ~]cat /etc/NetworkManager/system-connections/ens160.nmconnection

[connection]

id=ens160

uuid=4d46b942-e11b-3265-855f-ead28344cae9

type=ethernet

autoconnect-priority=-999

interface-name=ens160

timestamp=1781257967

[ethernet]

[ipv4]

address1=192.168.15.200/24,192.168.15.2

dns=8.8.8.8;

method=manual

[ipv6]

addr-gen-mode=eui64

method=auto

[proxy]

关闭防火墙

[root@K8S-master01 ~]stop firewalld && systemctl disable firewalld

关闭selinux

[root@K8S-master01 ~]sed -i 's/enforcing/disabled/' /etc/selinux/config && setenforce 0

关闭swap(永久关闭,避免K8s启动失败)

[root@K8S-master01 ~]swapoff -a

[root@K8S-master01 ~]sed -ri 's/.swap./#&/' /etc/fstab

加载内核模块(overlay、br_netfilter,K8s网络依赖)

[root@K8S-master01 ~] lsmod |grep -E "overlay|br_netfilter"

[root@K8S-master01 ~] modprobe overlay && modprobe br_netfilter

[root@K8S-master01 ~] lsmod |grep -E "overlay|br_netfilter"

[root@K8S-master01 ~] echo "overlay

br_netfilter" >/etc/modules-load.d/k8s.conf

配置网络内核参数(开启IP转发、桥接过滤,避免网络不通)

[root@K8S-master01 ~] echo "net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1" > /etc/sysctl.d/k8s.conf

sysctl --system

验证配置(无报错即正常)

[root@K8S-master01 ~] sysctl net.ipv4.ip_forward

[root@K8S-master01 ~] lsmod | grep -E "br_netfilter|overlay"

添加Dcoker-ce源、K8S源,并安装Docker-ce、K8S

[root@K8S-master01 ~] cd /etc/yum.repos.d/

[root@K8S-master01 ~] wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@K8S-master01 ~] cat

[kubernetes]

name=Kubernetes

baseurl=kubernetes-new-core-stable-v1.36-rpm安装包下载-开源镜像站-阿里云

enabled=1

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.36/rpm/repodata/repomd.xml.key

EOF

[root@K8S-master01 ~] yum clean all && yum install -y wget make gcc net-tools containerd.io kubectl kubelet kubeadm docker-ce

[root@K8S-master01 ~] systemctl enable --now containerd

[root@K8S-master01 ~] systemctl enable --now kubelet

[root@K8S-master01 ~] systemctl enable --now docker

[root@K8S-master01 ~] systemctl status containerd

[root@K8S-master01 ~] systemctl status kubelet

[root@K8S-master01 ~] systemctl status docker

配置containerd

[root@K8S-master01 ~] containerd config default |sudo tee /etc/containerd/config.toml

[root@K8S-master01 ~] vi /etc/containerd/config.toml

####确认如下参数:sandbox = 'registry.aliyuncs.com/google_containers/pause:3.10.1'

[root@K8S-master01 ~] echo "runtime-endpoint: unix:///run/containerd/containerd.sock

image-endpoint:unix:///run/containerd/containerd.sock

timeout: 10

debug: false" > /etc/crictl.yaml

[root@K8S-master01 ~] systemctl restart containerd

[root@K8S-master01 ~] systemctl status containerd

初始化集群(替换为自己的Master节点IP:192.168.15.200)

[root@K8S-master01 ~] kubeadm init \

--apiserver-advertise-address=192.168.15.200 \

--pod-network-cidr=10.244.0.0/16 \

--image-repository=registry.aliyuncs.com/google_containers

授权root用户使用kubectl

[root@K8S-master01 ~] mkdir -p $HOME/.kube

[root@K8S-master01 ~] cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

[root@K8S-master01 ~] chown (𝑖𝑑−𝑢):

(id -g) $HOME/.kube/config

保存初始化成功后输出的kubeadm join命令(用于Node节点加入集群,示例如下,以实际输出为准)

节点加入的时候此token可能会过期,如果需要重新打印的话运行 kubeadm token create --print-join-command

[root@K8S-master01 ~] kubeadm join 192.168.15.200:6443 --token 4ht2k6.xiy9tad7mrzixqz2 --discovery-token-ca-cert-hash sha256:0f03f87774d7b27df3df64d3d97ddd5c6b3236b413a0f35daa8e2437a6e9f981

仅Master节点:安装Flannel网络插件

核心作用:节点NotReady的唯一原因是缺少网络插件,安装Flannel适配Pod网段10.244.0.0/16

[root@K8S-master01 ~] kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

等待20-30秒,查看网络插件Pod状态(全部Running即正常)

[root@K8S-master01 ~]kubectl get pods -n kube-flannel

NAME READY STATUS RESTARTS AGE

kube-flannel-ds-6r5qm 1/1 Running 1 (28m ago) 2d20h

kube-flannel-ds-cd48n 1/1 Running 1 (28m ago) 2d20h

kube-flannel-ds-nzc4n 1/1 Running 2 (28m ago) 2d20h

[root@K8S-master01 ~]

复制Master节点初始化成功后输出的join命令,示例如下

[root@K8S-node01 ~] kubeadm join 192.168.15.200:6443 --token 4ht2k6.xiy9tad7mrzixqz2 --discovery-token-ca-cert-hash sha256:0f03f87774d7b27df3df64d3d97ddd5c6b3236b413a0f35daa8e2437a6e9f981

集群验证

master节点可直接执行下面命令,node节点需先执行

master节点打包配置文件

root@master01:~ cd

root@master01:~ tar -zcf kube.tar.gz .kube/

node节点解压缩

root@node01:~ tar -zxf kube.tar.gz

查看节点状态(Master节点状态为Ready即成功)

kubectl get nodes

查看所有Pod状态(kube-system、kube-flannel命名空间下所有Pod均为Running)

kubectl get pods -A

查看集群组件状态(均为Healthy)

kubectl get cs

##############################################################

[root@K8S-master01 ~]kubectl get nodes

NAME STATUS ROLES AGE VERSION

k8s-master01 Ready control-plane 2d22h v1.36.1

k8s-node01 Ready 2d22h v1.36.1

k8s-node02 Ready 2d22h v1.36.1

[root@K8S-master01 ~]kubectl get pods -A

NAMESPACE NAME READY STATUS RESTARTS AGE

kube-flannel kube-flannel-ds-6r5qm 1/1 Running 1 (29m ago) 2d20h

kube-flannel kube-flannel-ds-cd48n 1/1 Running 1 (29m ago) 2d20h

kube-flannel kube-flannel-ds-nzc4n 1/1 Running 2 (29m ago) 2d20h

kube-system coredns-6b5f954497-2jqg9 1/1 Running 1 (29m ago) 2d22h

kube-system coredns-6b5f954497-mbddw 1/1 Running 1 (29m ago) 2d22h

kube-system etcd-k8s-master01 1/1 Running 3 (29m ago) 2d22h

kube-system kube-apiserver-k8s-master01 1/1 Running 3 (29m ago) 2d22h

kube-system kube-controller-manager-k8s-master01 1/1 Running 3 (29m ago) 2d22h

kube-system kube-proxy-9hvrx 1/1 Running 3 (29m ago) 2d22h

kube-system kube-proxy-s49hp 1/1 Running 2 (29m ago) 2d22h

kube-system kube-proxy-wv894 1/1 Running 2 (29m ago) 2d22h

kube-system kube-scheduler-k8s-master01 1/1 Running 3 (29m ago) 2d22h

[root@K8S-master01 ~]kubectl get cs

Warning: v1 ComponentStatus is deprecated in v1.19+

NAME STATUS MESSAGE ERROR

scheduler Healthy ok

controller-manager Healthy ok

etcd-0 Healthy ok

[root@K8S-master01 ~]

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐