Linux环境下K8S集群如何搭建
导读:Linux 环境下搭建 K8s 集群实操指南 一 环境规划与准备 节点与网络 建议至少准备 1 台控制平面 + 2 台工作节点,同一 内网/VPC 互通;如使用 公网 IP 部署,需确保安全组/防火墙开放 6443 等端口,并正确设置节...
Linux 环境下搭建 K8s 集群实操指南
一 环境规划与准备
- 节点与网络
- 建议至少准备 1 台控制平面 + 2 台工作节点,同一 内网/VPC 互通;如使用 公网 IP 部署,需确保安全组/防火墙开放 6443 等端口,并正确设置节点间通信地址。
- 示例规划(可按需调整):
- 控制平面:k8s-master 192.168.9.86
- 工作节点:k8s-worker1 192.168.14.196、k8s-worker2 192.168.8.78
- 系统与资源
- 操作系统推荐 CentOS 7.x/8.x 或兼容发行版;测试环境最低可用 2 核 CPU / 2GiB 内存 / 50GiB 磁盘(生产环境请更高规格)。
- 基础工具
- 建议配置 SSH 互信、NTP/Chrony 时间同步,便于批量执行与证书校验稳定。
二 系统初始化与内核参数
- 所有节点执行:关闭防火墙、SELinux、Swap,开启桥接流量转发,配置主机名与 hosts,时间同步。
- 关闭防火墙与 SELinux
- systemctl stop firewalld & & systemctl disable firewalld
- setenforce 0 & & sed -i ‘s/^SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config
- 关闭 Swap
- swapoff -a & & sed -ri ‘s/.swap./#& /’ /etc/fstab
- 开启桥接与内核转发
- 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
- sysctl --system
- 主机名与 hosts(示例)
- hostnamectl set-hostname k8s-master(各节点分别设置)
- echo “192.168.9.86 k8s-master” > > /etc/hosts echo “192.168.14.196 k8s-worker1” > > /etc/hosts echo “192.168.8.78 k8s-worker2” > > /etc/hosts
- 时间同步
- yum install -y chrony & & systemctl enable --now chronyd & & chronyc sources
- 关闭防火墙与 SELinux
三 容器运行时与 K8s 组件安装
- 方案 A Containerd(推荐,K8s ≥ 1.24 默认)
- 安装与启用
- yum install -y containerd
- systemctl enable --now containerd
- 生成默认配置并启用 CRI
- containerd config default | tee /etc/containerd/config.toml
- sed -i ‘s/SystemdCgroup = false/SystemdCgroup = true/g’ /etc/containerd/config.toml
- systemctl restart containerd
- 安装 kubeadm/kubelet/kubectl(版本保持一致,示例 1.28.x)
- cat > /etc/yum.repos.d/kubernetes.repo < < EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-$basearch enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
- yum install -y kubelet-1.28.* kubeadm-1.28.* kubectl-1.28.*
- systemctl enable --now kubelet
- 安装与启用
- 方案 B Docker(兼容旧版本或习惯 Docker 的场景)
- 安装与镜像加速
- yum install -y docker-ce docker-ce-cli containerd.io
- mkdir -p /etc/docker
- cat > /etc/docker/daemon.json < < EOF { “registry-mirrors”: [“https://< 你的加速器地址> .mirror.aliyuncs.com”] } EOF
- systemctl enable --now docker
- 安装 kubeadm/kubelet/kubectl(同上,保持版本一致)
- yum install -y kubelet- kubeadm- kubectl-
- systemctl enable --now kubelet
- 安装与镜像加速
四 初始化控制平面与加入工作节点
- 控制平面初始化(仅在 master 执行)
- kubeadm init
–apiserver-advertise-address=192.168.9.86
–image-repository registry.aliyuncs.com/google_containers
–kubernetes-version v1.28.0
–service-cidr 10.96.0.0/12
–pod-network-cidr 10.244.0.0/16 - 初始化完成后按提示配置 kubectl:
- mkdir -p $HOME/.kube
- cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
- chown $(id -u):$(id -g) $HOME/.kube/config
- kubeadm init
- 工作节点加入(在 worker 执行)
- 使用 kubeadm init 输出中的 kubeadm join 命令,或重新生成:
- kubeadm token create --print-join-command
- 使用 kubeadm init 输出中的 kubeadm join 命令,或重新生成:
- 网络插件(CNI)
- Flannel(示例)
- kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
- Calico(示例)
- kubectl create -f https://projectcalico.docs.tigera.io/manifests/tigera-operator.yaml
- kubectl create -f https://projectcalico.docs.tigera.io/manifests/custom-resources.yaml
- Flannel(示例)
- 验证
- kubectl get nodes 应看到所有节点状态为 Ready。
五 公网部署差异与常见问题
- 公网与端口
- 云上需放行 6443(API Server)、节点间通信端口及业务端口;如使用 NodePort 对外暴露,还需放行对应端口范围。
- 公网环境建议明确 apiserver-advertise-address 为公网或内网地址,并确保节点间可达。
- 容器运行时与驱动
- 使用 Containerd 时确保 SystemdCgroup=true;使用 Docker 时关注 cgroup 驱动一致性(常见为 systemd)。
- 镜像与拉取
- 国内环境可使用 registry.aliyuncs.com/google_containers 镜像仓库加速拉取;若初始化卡在镜像拉取,可先在节点手动 docker pull 对应镜像。
- 常见问题速查
- Node NotReady:检查 CNI 是否安装、Pod CIDR 是否冲突、kubelet 是否 Running。
- kubeadm join 失败:确认 token 未过期、CA 哈希一致、网络互通、apiserver 地址可达。
- 时间漂移:启用 Chrony 并校准时间,避免因证书校验失败导致组件异常。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux环境下K8S集群如何搭建
本文地址: https://pptw.com/jishu/755168.html
