Skip to content

CentOS Stream 9 安装 Kubernetes

步骤 1: 系统准备

  1. 禁用防火墙和 SELinux

    bash
    systemctl disable firewalld
    sed -i '/selinux/s/enforcing/disabled/' /etc/selinux/config
  2. 禁用交换分区 Kubernetes 要求交换分区禁用。编辑 /etc/fstab 文件注释掉与 swap 相关的行:

    bash
    sudo swapoff -a
    sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
  3. 设置主机名 为各节点配置唯一的主机名:

    bash
    sudo hostnamectl set-hostname <your-hostname>
  4. 加载必要的内核模块 Kubernetes 需要以下内核模块加载:

    bash
    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    overlay
    br_netfilter
    EOF
    
    sudo modprobe overlay
    sudo modprobe br_netfilter
  5. 配置 sysctl 参数 配置网络选项使得 Kubernetes 网络正常工作:

    bash
    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
  6. 配置国内 YUM 源

    bash
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-9.repo

步骤 2: 安装容器运行时

Kubernetes 支持多种容器运行时,例如 containerdCRI-O。我们这里选用 containerd

  1. 安装 containerd

    bash
    sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
    sudo dnf update
    sudo dnf install -y containerd
  2. 配置 containerd

    bash
    sudo mkdir -p /etc/containerd
    containerd config default | sudo tee /etc/containerd/config.toml

    找到 SystemdCgroup 并设置为 true(默认为 false)。编辑 /etc/containerd/config.toml

    toml
    [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
      SystemdCgroup = true
  3. 启用并启动 containerd

    bash
    sudo systemctl enable --now containerd

步骤 3: 安装 Kubernetes 组件

  1. 添加 Kubernetes YUM 源

    bash
    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    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
  2. 安装 kubeadm、kubelet 和 kubectl

    bash
    sudo dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
  3. 启用 kubelet

    bash
    sudo systemctl enable --now kubelet

步骤 4: 使用 kubeadm 初始化 Kubernetes 集群

  1. 初始化控制平面节点

    bash
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    • --pod-network-cidr=10.244.0.0/16 是为 Flannel CNI 插件指定的 Pod 网络 CIDR,你可以根据实际选择不同的 CNI 插件和参数。
  2. 为当前用户配置 kubeconfig 文件

    bash
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
  3. 部署网络插件 示例:安装 Flannel CNI 插件

    bash
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

步骤 5: 加入其他节点到集群

在控制平面节点完成初始化后,kubeadm init 命令会输出用于加入工作节点的命令,例如:

bash
kubeadm join <control-plane-host>:<port> --token <token> \
    --discovery-token-ca-cert-hash sha256:<hash>

在工作节点上运行上述命令以加入集群。

步骤 6: 验证集群状态

  1. 检查节点状态:

    bash
    kubectl get nodes
  2. 检查 Pod 和组件状态:

    bash
    kubectl get pods -A