温馨提示×

centos与k8s集成怎样实现

小樊
43
2025-12-27 13:44:41
栏目: 智能运维

在 CentOS 上集成 Kubernetes 的标准做法

CentOS 7/8 上,业界主流做法是以 kubeadm 快速搭建集群,配合 containerd(或 Docker)作为容器运行时,完成系统预检、组件安装、初始化控制平面、部署 CNI 网络插件 与节点加入,最终用 kubectl 验证集群可用性。

一、环境与前置准备

  • 节点规划:至少准备 1 台 Master + 2 台 Node(生产建议高可用)。
  • 系统要求:内核 ≥ 3.10,单节点建议内存 ≥ 2GB、CPU ≥ 2 核
  • 网络与主机名:配置 静态 IP,设置唯一 hostname,并保证节点间 互通;按需配置 /etc/hosts
  • 安全与内核参数:
    • 临时关闭 SELinuxsetenforce 0;永久禁用:编辑 /etc/selinux/config 将 SELINUX 设为 disabled
    • 禁用 Swapswapoff -a 并注释 /etc/fstab 中的 swap 行。
    • 开启桥接转发(示例):
      • modprobe br_netfilter
      • echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
      • echo '1' > /proc/sys/net/ipv4/ip_forward
  • 防火墙:为简化入门可临时关闭 firewalldsystemctl stop/disable firewalld);生产环境应按需放行端口(如 6443、10250 等)。

二、安装容器运行时与 Kubernetes 组件

  • 容器运行时(推荐 containerd;若使用 Docker,请确保其 cgroup 驱动与 kubelet 一致,常见为 systemd):
    • containerd(推荐):
      • 安装:yum install -y yum-utils && yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
      • 安装 containerd:yum install -y containerd.io
      • 生成默认配置并启用:containerd config default | tee /etc/containerd/config.toml && systemctl enable --now containerd
    • Docker(可选):
      • 安装:yum install -y docker-ce docker-ce-cli containerd.io
      • 启动:systemctl enable --now docker
  • 安装 kubeadm、kubelet、kubectl:
    • 添加仓库(示例):
      • cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
        [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 kubeadm kubectl --disableexcludes=kubernetes && systemctl enable --now kubelet

三、初始化控制平面与加入工作节点

  • 初始化 Master(示例):
    • kubeadm init --apiserver-advertise-address=<MASTER_IP> --pod-network-cidr=10.244.0.0/16
    • 国内镜像加速(可选):--image-repository=registry.aliyuncs.com/google_containers
    • 初始化完成后按提示保存输出的 kubeadm join 命令。
  • 配置 kubectl:
    • mkdir -p $HOME/.kube
    • sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    • sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 加入 Worker:在各 Node 上执行上一步保存的 kubeadm join 命令;如 token 过期,可在 Master 上执行:
    • kubeadm token create --print-join-command 重新生成加入命令。

四、部署 CNI 网络插件与验证

  • 部署 CNI(二选一,二者 CIDR 需与初始化参数匹配):
    • Flannel:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    • Calico:kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  • 验证:
    • kubectl get nodes(状态应为 Ready
    • kubectl get pods -A(系统组件与 CNI Pod 均为 Running)。

五、生产注意事项与常见问题

  • 安全合规:
    • 不建议长期关闭 SELinux/firewalld,生产应按需放行端口(如 6443、10250、10251、10252、2379/2380、8472/4789 等,取决于组件与网络插件)。
    • 启用 RBACPod SecurityNetworkPolicy,并接入私有镜像仓库与镜像签名校验。
  • 容器运行时与驱动:
    • 若使用 containerd,推荐保持默认 systemd cgroup;如使用 Docker,需确保与 kubelet 的 cgroup 驱动一致,避免 Pod 无法启动。
  • 镜像与网络:
    • 国内环境可使用 registry.aliyuncs.com/google_containers 加速拉取镜像;确保 Pod CIDR 与 CNI 配置一致(如 10.244.0.0/16 对应 Flannel,Calico 常用 192.168.0.0/16 等)。
  • 常见问题速查:
    • kubelet 启动失败:检查 cgroup 驱动Swap内核参数容器运行时 状态。
    • Node NotReady:检查 CNI 是否部署成功节点网络连通性防火墙
    • 节点加入失败:确认 token 有效CA 证书哈希正确apiserver 地址可达

0