首页主机资讯Linux环境下K8S怎么搭建

Linux环境下K8S怎么搭建

时间2026-01-20 09:03:05发布访客分类主机资讯浏览422
导读:Linux 环境下搭建 Kubernetes 实操指南 一 环境与规划 节点与资源 控制平面(master):2 核 CPU / 4GB 内存 / 50GB+ 磁盘 工作节点(node):2 核 CPU / 4GB 内存 / 50GB+...

Linux 环境下搭建 Kubernetes 实操指南

一 环境与规划

  • 节点与资源
    • 控制平面(master):2 核 CPU / 4GB 内存 / 50GB+ 磁盘
    • 工作节点(node):2 核 CPU / 4GB 内存 / 50GB+ 磁盘
    • 操作系统:CentOS 7.9 / Ubuntu 22.04
  • 网络规划
    • Pod 网段:10.244.0.0/16(Flannel/Calico 常用)
    • Service 网段:10.96.0.0/12
    • 节点互通端口(示例):6443(API Server)2379–2380(etcd)10250(kubelet) 等,云上需在安全组放行
  • 运行时与工具
    • 容器运行时:containerd 1.7.x(K8s 1.24+ 推荐)
    • 部署工具:kubeadm
    • 命令行:kubectl
    • 网络插件:Calico(生产常用,支持网络策略)

二 系统初始化与依赖安装

  • 所有节点执行
    • 关闭干扰项
      • CentOS:systemctl stop/disable firewalld;sed -i ‘s/^SELINUX=enforcing$/SELINUX=permissive/’ /etc/selinux/config;setenforce 0
      • Ubuntu:如需可 ufw disable
    • 关闭 Swap
      • swapoff -a;sed -i ‘/swap/s/^/#/’ /etc/fstab;free -h 验证
    • 内核参数与模块
      • 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 vm.swappiness = 0 EOF
      • modprobe br_netfilter;sysctl -p /etc/sysctl.d/k8s.conf
    • 时间同步
      • yum/apt 安装 chrony;systemctl enable --now chronyd;chronyc sources
    • 可选优化(大规模/高并发推荐)
      • 安装 ipset/ipvsadm 并预加载模块(ip_vs、ip_vs_rr、ip_vs_wrr、ip_vs_sh、nf_conntrack)
  • 安装容器运行时 containerd
    • CentOS
      • yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
      • yum install -y containerd.io-1.7.11
    • Ubuntu
      • apt update & & apt install -y ca-certificates curl gnupg lsb-release
      • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker.gpg
      • echo “deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | tee /etc/apt/sources.list.d/docker.list > /dev/null
      • apt update & & apt install -y containerd.io-1.7.11
    • 生成并调整配置
      • containerd config default > /etc/containerd/config.toml
      • 编辑 /etc/containerd/config.toml:设置 SystemdCgroup = true(与 kubelet 一致)
      • systemctl enable --now containerd
  • 安装 kubeadm / kubelet / kubectl(示例版本:1.30.x
    • Ubuntu
      • apt update & & apt install -y apt-transport-https ca-certificates curl
      • curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-keyring.gpg
      • echo “deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main” | tee /etc/apt/sources.list.d/kubernetes.list
      • apt update & & apt install -y kubelet=1.30. kubeadm=1.30. kubectl=1.30.***
      • apt-mark hold kubelet kubeadm kubectl
    • CentOS
      • cat > /etc/yum.repos.d/kubernetes.repo < < EOF [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF
      • yum install -y kubelet-1.30. kubeadm-1.30. kubectl-1.30.***
      • systemctl enable --now kubelet

三 部署控制平面与网络

  • 控制平面初始化(仅在 master 执行)
    • kubeadm init
      –apiserver-advertise-address=< MASTER_IP>
      –image-repository=registry.k8s.io
      –kubernetes-version=v1.30.0
      –service-cidr=10.96.0.0/12
      –pod-network-cidr=10.244.0.0/16
    • 初始化完成后按提示执行:
      • mkdir -p $HOME/.kube
      • cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      • chown $(id -u):$(id -g) $HOME/.kube/config
  • 安装 CNI 网络插件(以 Calico 为例)
    • kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    • 等待节点 Ready:kubectl get nodes(可能需要数分钟)
  • 加入工作节点(在每个 node 执行)
    • 使用 kubeadm init 输出中的 join 命令,或重新生成:
      • kubeadm token create --print-join-command
    • 典型命令:kubeadm join < MASTER_IP> :6443 --token --discovery-token-ca-cert-hash sha256:

四 验证与常见问题

  • 基础验证
    • kubectl get nodes -o wide(状态应为 Ready
    • kubectl get pods -A(核心组件 Running)
    • 部署测试应用:
      • kubectl create deployment nginx --image=nginx:1.25
      • kubectl expose deployment nginx --port=80 --type=NodePort
      • kubectl get svc nginx(访问地址:http://< 任意节点IP> :)
  • 常见问题与处理
    • 节点 NotReady:检查 Pod 网段是否与 10.244.0.0/16 冲突、CNI 是否成功部署、节点间网络与端口连通性
    • 镜像拉取慢/失败:为 containerd 配置国内镜像仓库镜像(registry-mirrors)
    • 忘记 join 命令:在 master 执行 kubeadm token create --print-join-command
    • 重置与重装:kubeadm reset(清理后重新 init/join)

五 云上或必须使用 Docker 的场景

  • 云服务器安全组需放行:6443(API)10250(kubelet)、以及 kube-proxy/NodePort 相关端口
  • 若必须使用 Docker(K8s 1.24+ 场景)
    • 安装 Docker 并将 containerd 作为 Docker 内置运行时
    • 安装 cri-dockerd(为 Docker 提供 CRI 接口),配置 kubelet 使用 cri-dockerd 的 endpoint,然后用 kubeadm 正常 init/join(cri-dockerd 的版本需与 K8s 版本匹配)

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux环境下K8S怎么搭建
本文地址: https://pptw.com/jishu/786933.html
Debian Sniffer在网络故障排查中的应用 ThinkPHP在Linux如何实现容器化部署

游客 回复需填写必要信息