☰
Kubernetes 1.30 从零安装实战:架构、二进制与 kubeadm 全解析
2026/9/30 2:46:35 网站建设 项目流程

一、前置规划(集群设计)

1.网络规划

根据自己资源合理规划

2. 网络规划

集群 Pod 网段:10.244.0.0/16(Flannel/Calico 默认网段)

集群 Service 网段:10.96.0.0/12(K8s 默认 Service 网段)

节点间通信端口:需开放 6443(API Server)、2379-2380(etcd)、10250(kubelet)等端口(后续环境准备会详细列出)

3. 工具准备

容器运行时:containerd(K8s 1.24+ 推荐,替代 Docker)

集群部署工具:kubeadm(官方推荐,轻量高效)

网络插件:Calico(生产级,支持网络策略、跨节点通信)

命令行工具:kubectl(K8s 集群管理 CLI)

二、环境准备(所有节点执行)

1. 系统初始化(关闭干扰服务)

(1)关闭防火墙(CentOS)

# 关闭 firewalld

systemctl stop firewalld && systemctl disable firewalld

# 关闭 selinux(临时+永久)

setenforce 0 && sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

(2)关闭 swap 分区(K8s 要求)

# 临时关闭 swap

swapoff -a

# 永久关闭(注释 swap 分区行)

sed -i '/swap/s/^/#/' /etc/fstab

# 验证(Swap 行均为 0 则成功)

free -h

(3)配置内核参数(开启 IP 转发、模块加载)

创建内核配置文件:

cat > /etc/sysctl.d/k8s.conf << EOF

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

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

net.ipv4.ip_forward = 1

net.ipv4.tcp_tw_recycle = 0

vm.swappiness = 0

EOF

加载内核模块并生效:

# 加载 br_netfilter 模块

modprobe br_netfilter

# 生效内核参数

sysctl -p /etc/sysctl.d/k8s.conf

# 验证(确保返回 1)

sysctl net.bridge.bridge-nf-call-iptables

(4)配置时间同步(避免节点时间不一致)

# CentOS 安装 chrony

yum install -y chrony && systemctl start chronyd && systemctl enable chronyd

# 验证时间同步状态

chronyc sources

2. 安装容器运行时(containerd)

K8s 1.24+ 不再依赖 Docker,直接使用 containerd 作为容器运行时,步骤如下:

(1)安装 containerd(CentOS)

# 安装依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加 Docker 源(containerd 包含在 Docker 源中)

cat > /etc/yum.repos.d/docker-ce.repo << 'EOF'

[docker-ce-stable]

name=Docker CE Stable

baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/

enabled=1

gpgcheck=0

EOF

yum install -y containerd.io-1.6.9-3.1.el8

(2)配置 containerd(关键:适配 K8s 要求)

生成默认配置文件:

containerd config default > /etc/containerd/config.toml

编辑配置文件:

vi /etc/containerd/config.toml

配置 CRI 端点(确保 enabled 为 true)

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]

SystemdCgroup = true # 启用 systemd cgroup 驱动(K8s 推荐)

重启 containerd 并设置开机自启:

systemctl restart containerd && systemctl enable containerd

# 验证 containerd 状态(active (running) 则成功)

systemctl status containerd

3. 安装 K8s 组件(kubeadm、kubelet、kubectl)

所有节点均需安装,步骤如下:

(1)添加 K8s 官方源

cat > /etc/yum.repos.d/kubernetes.repo << 'EOF'

[kubernetes]

name=Kubernetes

baseurl=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/

enabled=1

gpgcheck=0

repo_gpgcheck=0

EOF

或者

cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/

enabled=1

gpgcheck=1

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

EOF

清理缓存:

yum clean all

yum makecache

查询可用版本:

yum list kubelet --showduplicates | sort -r

三、集群创建(控制平面节点执行)

1. 初始化控制平面(master 节点)

核心命令:kubeadm init,需指定 Pod 网段、Service 网段、镜像仓库(国内适配)。

(1)执行初始化命令

kubeadm init --kubernetes-version=1.30.0 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --image-repository=registry.aliyuncs.com/google_containers --control-plane-endpoint=192.168.131.132

(2)等待初始化完成(约 5-10 分钟,取决于网络速度)

初始化成功后,会输出以下关键信息(务必保存,用于工作节点加入集群):

kubeadm join 192.168.131.132:6443 --token q1j7ye.f1p2w7ekguq16u8s --discovery-token-ca-cert-hash sha256:62ef190f32f93cb774a8ea37f31caeaaddb33f996c1614290fbe563a0a0873eb --control-plane --certificate-key b494960c6b5a853a2f1051d0b88c8ce3c69dd5c8b468958633998a7028b5462b

(3)配置 kubectl 权限(master 节点执行,让普通用户可操作集群)

# 普通用户(如 root)配置

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

# 验证 kubectl 可用性(输出控制平面节点信息,STATUS 为 Ready 则成功)

kubectl get nodes

2.安装网络插件(Calico,master 节点执行)

2. 安装网络插件(Calico,master 节点执行)

K8s集群初始化后,节点状态为NotReady,需安装CNI网络插件实现跨节点通信。推荐 Calico(生产级,支持网络策略)。

(1)下载 Calico 配置文件(国内加速)

wget https://projectcalico.docs.tigera.io/v3.25/manifests/calico.yaml

(2)修改配置文件(适配 Pod 网段)

编辑calico.yaml,确保CALICO_IPV4POOL_CIDR与kubeadm init时指定的 --pod-network-cidr 一致:

查找并修改以下内容:

- name: CALICO_IPV4POOL_CIDR

value: "10.244.0.0/16" # 与初始化时的 Pod 网段一致

在calico-node下面的env里面添加修改下面配置

- name: IP_AUTODETECTION_METHOD

value: "interface=enp*"

(3)部署 Calico

kubectl apply -f calico.yaml

(4)验证 Calico 部署(等待 3-5 分钟)

# 查看 Calico Pod 状态(所有 Pod 均为 Running 则成功)

kubectl get pods -n kube-system -l k8s-app=calico-node

# 查看节点状态(所有节点 STATUS 为 Ready 则网络正常)

kubectl get nodes

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询