温馨提示×

CentOS上Kubernetes的安装与配置

小樊
35
2025-12-23 16:39:36
栏目: 智能运维

CentOS 上 Kubernetes 安装与配置

一 环境准备与系统要求

  • 准备至少 2 台 CentOS 主机(建议 CentOS 7/8),一台为 Master,其余为 Worker;每台至少 2 核 CPU、2 GB 内存、20 GB 磁盘,并配置 静态 IP主机名
  • 所有节点完成基础配置:
    • 关闭交换分区:swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
    • 关闭防火墙(测试环境):systemctl stop firewalld && systemctl disable firewalld
    • 关闭 SELinux(测试环境):setenforce 0 && sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    • 内核网络参数: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 EOF && sysctl -p /etc/sysctl.d/k8s.conf
    • 时间同步:yum install -y chrony && systemctl enable --now chronyd
    • 可选 hosts:echo "<Master_IP> k8s-master" >> /etc/hosts
      以上为常见前置步骤,便于容器网络与 kubelet 正常运行。

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

  • 安装容器运行时(以 Docker 为例):
    • 依赖: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
  • 安装 Kubernetes 组件(kubeadm、kubelet、kubectl):
    • 仓库(国内镜像示例):
      cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
      [kubernetes]
      name=Kubernetes
      baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-\$basearch/
      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
      
    • 安装与自启:yum install -y kubelet kubeadm kubectl && systemctl enable --now kubelet
      上述为在 CentOS 上部署 Kubernetes 常用且稳定的组合与命令路径。

三 初始化 Master 节点

  • 初始化命令(按需替换参数):
    kubeadm init \
      --apiserver-advertise-address=<Master_IP> \
      --image-repository=registry.aliyuncs.com/google_containers \
      --kubernetes-version=<VERSION> \
      --service-cidr=10.96.0.0/12 \
      --pod-network-cidr=10.244.0.0/16
    
    常见取值:<VERSION> 选择已安装的版本(如 v1.22.x),--pod-network-cidr 需与所选 CNI 插件一致。
  • 配置 kubectl:
    mkdir -p $HOME/.kube
    cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    chown $(id -u):$(id -g) $HOME/.kube/config
    
  • 保存节点加入命令:初始化成功后控制台会输出 kubeadm join ...,请妥善保存以供 Worker 加入使用。
    以上流程覆盖初始化、镜像仓库加速与 kubectl 配置的关键环节。

四 部署 CNI 网络插件与加入 Worker 节点

  • 部署 CNI 网络插件(二选一,与 --pod-network-cidr 保持一致):
    • Calico:kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    • Flannel:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.11.0/Documentation/kube-flannel.yml
  • 加入 Worker 节点:在每台 Worker 上执行上一步保存的 kubeadm join ... 命令。
  • 验证:
    kubectl get nodes
    kubectl get pods -A
    
    等待所有节点状态为 Ready、核心系统 Pod 均为 Running
    网络插件是集群互通的前提,务必在 Master 就绪后立即安装。

五 常见问题与优化建议

  • 镜像拉取慢或失败:使用国内镜像仓库(如 registry.aliyuncs.com/google_containers)并配置 Docker 镜像加速;必要时在 kubeadm init 中显式指定 --image-repository
  • 节点 NotReady:多因未安装 CNI、内核参数未生效或时间不同步;检查 kubectl describe node <node>sysctl -pchrony 状态。
  • 防火墙与端口:生产环境不建议直接关闭防火墙,按需放行 6443、10250、2379/2380、10251/10252、30000–32767 等端口(或临时关闭用于排障)。
  • 高可用与扩展:生产可部署 多 Master 高可用集群,并接入 Metrics ServerHPA 实现弹性伸缩与监控。
  • 版本选择:避免过新/过旧版本,保持组件版本一致性与兼容性。
    以上为提升成功率与可维护性的实用建议。

0