温馨提示×

centos容器k8s安装流程

小樊
40
2025-11-22 04:05:26
栏目: 智能运维

CentOS 上使用 kubeadm 安装 Kubernetes 集群

一 环境准备

  • 系统要求:建议使用 CentOS 7/8,每台节点至少 2 核 CPU、2GB 内存、30GB 磁盘,节点间网络互通且可访问外网。
  • 主机名与解析:为各节点设置唯一主机名(如 master、node1),并在 /etc/hosts 中添加解析。
  • 关闭交换分区:执行 swapoff -a,并在 /etc/fstab 中注释含 swap 的行,避免 kubelet 启动失败。
  • 关闭防火墙或放行端口:生产环境建议按需放行,实验环境可临时关闭 firewalldsystemctl stop/disable firewalld)。
  • 关闭 SELinux:临时 setenforce 0,并修改 /etc/selinux/configSELINUX=disabled(重启生效)。
  • 内核参数与桥接:启用桥接与转发,创建 /etc/sysctl.d/k8s.conf,内容示例:
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.ipv4.ip_forward = 1
    执行 sysctl --system 使配置生效。
  • 时间同步:安装并同步时间(如 yum install -y ntpdate && ntpdate ntp.aliyun.com)。

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

  • 安装 Docker(或 containerd):
    • 安装依赖:yum install -y yum-utils device-mapper-persistent-data lvm2
    • 添加仓库:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    • 安装并启动:yum install -y docker-ce docker-ce-cli containerd.io && systemctl enable --now docker
    • 可选镜像加速:在 /etc/docker/daemon.json 中添加
      {“registry-mirrors”: [“https://mirrors.aliyuncs.com”]}
      然后 systemctl daemon-reload && systemctl restart docker
  • 添加 Kubernetes YUM 源(国内镜像示例):
    cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
  • 安装 kubelet、kubeadm、kubectl(建议固定版本):
    yum install -y kubelet-<VERSION> kubeadm-<VERSION> kubectl-<VERSION> && systemctl enable --now kubelet
  • 容器运行时配置要点:如使用 Docker,建议将 kubelet 的 cgroup-driver 设置为 systemd,与 Docker 保持一致(常见做法为在 kubelet 配置或 systemd drop-in 中设置)。

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

  • 初始化 Master(将 <MASTER_IP> 替换为实际地址):
    kubeadm init \ –apiserver-advertise-address=<MASTER_IP> \ –image-repository=registry.aliyuncs.com/google_containers \ –kubernetes-version=v1.22.15 \ –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 token create --print-join-command
    在 Worker 节点执行输出的 kubeadm join ... 命令(包含 –token–discovery-token-ca-cert-hash)。
  • 验证节点状态:
    kubectl get nodes
    待节点状态为 Ready 后继续。

四 部署 CNI 网络插件

  • 选择其一部署(与上面 Pod 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
    kubectl get pods -A
    确保 CoreDNS、kube-proxy 与 CNI 组件处于 Running 状态。

五 常见问题与优化

  • 镜像拉取失败:使用国内镜像仓库(如 registry.aliyuncs.com/google_containers),或提前 kubeadm config images pull
  • 节点 NotReady:多因 CNI 未部署cgroup-driver 不一致;检查 kubelet 配置与容器运行时配置。
  • 端口与防火墙:确保 6443(APIServer)10250(kubelet)2379/2380(etcd)10251/10252(kube-scheduler/controller-manager) 等端口放通。
  • 版本匹配:保持 kubelet、kubeadm、kubectl 版本一致,并与集群版本兼容。
  • 生产建议:启用 RBACkube-proxy 的 IPVS 模式持久化存储日志与监控,并定期升级集群。

0