首页主机资讯Linux环境下K8S集群如何搭建

Linux环境下K8S集群如何搭建

时间2025-11-25 02:17:03发布访客分类主机资讯浏览1508
导读: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.196k8s-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

三 容器运行时与 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
  • 工作节点加入(在 worker 执行)
    • 使用 kubeadm init 输出中的 kubeadm join 命令,或重新生成:
      • kubeadm token create --print-join-command
  • 网络插件(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
  • 验证
    • 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
K8S如何优化Linux系统性能 K8S在Linux上如何部署应用

游客 回复需填写必要信息