插件窝 干货文章 K8S在Linux上怎么部署

K8S在Linux上怎么部署

sudo Containerd 节点 kubeadm 640    来源:    2025-05-10

在Linux系统上部署Kubernetes(K8S)可以通过多种方式实现,以下是基于 kubeadm(官方推荐工具)的标准化部署流程,适用于生产环境或学习环境:


一、环境准备

1. 系统要求

  • 操作系统:Ubuntu 20.04/22.04、CentOS 7/8、RHEL 等(本文以 Ubuntu 22.04 为例)
  • 硬件
    • 至少 2GB RAM(推荐 4GB+)
    • 2核CPU(推荐4核+)
    • 20GB 磁盘空间
  • 网络
    • 节点间网络互通
    • 禁用Swap:sudo swapoff -a 并注释 /etc/fstab 中的swap行
    • 确保唯一主机名、MAC地址和product_uuid(hostnamectl 检查)

2. 所有节点执行

# 加载内核模块
sudo modprobe overlay
sudo modprobe br_netfilter

# 设置内核参数
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF
sudo sysctl --system

二、安装容器运行时(Containerd)

1. 安装 Containerd

# 安装依赖
sudo apt-get update
sudo apt-get install -y containerd

# 生成默认配置
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml

# 修改配置启用SystemdCgroup
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml

# 重启服务
sudo systemctl restart containerd
sudo systemctl enable containerd

三、安装 kubeadm、kubelet、kubectl

1. 添加Kubernetes源

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl

# 添加GPG密钥
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

# 添加APT源
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt-get update

2. 安装工具

sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl  # 禁止自动更新

四、初始化Master节点

1. 执行初始化(替换<pod-network-cidr>为你的网络CIDR)

sudo kubeadm init --pod-network-cidr=10.244.0.0/16 \
  --apiserver-advertise-address=<Master节点IP> \
  --cri-socket=unix:///var/run/containerd/containerd.sock
  • 记录输出的 kubeadm join 命令(用于Worker节点加入)

2. 配置kubectl

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

五、安装网络插件(Calico示例)

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml

验证:

kubectl get pods -n kube-system  # 等待所有Pod状态为Running

六、加入Worker节点

在Worker节点上执行Master初始化时输出的 kubeadm join 命令:

sudo kubeadm join <Master-IP>:6443 --token <token> --discovery-token-ca-cert-hash <hash>

七、验证集群

kubectl get nodes  # 所有节点状态应为Ready
kubectl get pods -A  # 检查核心组件运行状态

常见问题解决

  1. kubeadm init 卡住

    • 检查容器运行时(sudo systemctl status containerd
    • 确保防火墙放行6443、2379等端口
  2. Node处于NotReady状态

    • 检查网络插件是否安装成功(kubectl logs -n kube-system <calico-pod>
  3. 重置集群

    sudo kubeadm reset
    sudo rm -rf /etc/cni/net.d ~/.kube
    

扩展选项

  • 高可用集群:部署多个Master节点并使用负载均衡器(如HAProxy)
  • 离线部署:使用 kubeadm config images pull 预下载镜像
  • 生产优化:配置证书自动续期、启用RBAC、审计日志等

通过以上步骤,一个基础的Kubernetes集群即部署完成。建议参考 官方文档 根据实际需求调整配置。