Alama Linux 10.2 安装 K8S 1.36.1
一、首先闭坑指南:
关于版本,
最开始我从官网下载了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 ~]
更多推荐




所有评论(0)