温馨提示×

centos环境k8s安装技巧

小樊
48
2025-11-22 03:59:25
栏目: 智能运维

CentOS 环境 Kubernetes 安装技巧

一 环境准备与内核参数

  • 资源与拓扑:至少准备3 台服务器(1 个 Master + 2 个 Node),每台建议≥2 CPU、≥2GB 内存、≥30GB 磁盘,并确保节点间互通外网访问(拉取镜像)。
  • 主机名与解析:为每个节点设置唯一主机名(如 hostnamectl set-hostname k8s-master),并在 /etc/hosts 维护 IP-主机名 映射,便于内网解析。
  • 时间同步:安装并启用 chrony/ntp,保证集群时间一致,避免证书与调度异常。
  • 关闭 Swap:执行 swapoff -a,并在 /etc/fstab 注释 swap 行,Kubelet 要求无 Swap。
  • SELinux:临时 setenforce 0;永久将 /etc/selinux/config 中 SELINUX 设为 disabled(需重启生效)。
  • 防火墙策略:测试环境可临时 systemctl stop/disable firewalld;生产环境建议保留防火墙并按需放行端口(如 6443、10250、2379-2380 等)。
  • 内核网络:创建 /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 使配置生效。

二 容器运行时与组件安装

  • 容器运行时:安装 Docker CE(或 containerd),建议配置国内镜像源加速;启动并设置开机自启:
    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 组件源:配置 kubernetes.repo(可选国内镜像源以提速),安装指定版本:
    cat >/etc/yum.repos.d/kubernetes.repo<<EOF
    [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
    yum install -y kubelet kubeadm kubectl
    systemctl enable --now kubelet
  • 版本策略:生产环境建议固定版本(如 v1.28.x),避免频繁升级带来不兼容。

三 初始化 Master 与网络插件

  • 初始化命令:在 Master 节点执行(按需替换参数)
    kubeadm init \ –apiserver-advertise-address=<MASTER_IP> \ –pod-network-cidr=10.244.0.0/16 \ –service-cidr=10.96.0.0/12 \ –image-repository=registry.aliyuncs.com/google_containers \ –kubernetes-version=
    常见网络插件与 CIDR 搭配:
    • Flannel:默认 10.244.0.0/16
    • Calico:常用 192.168.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
  • 安装 CNI:
    • 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

四 Node 加入与常见问题排查

  • 获取加入命令:在 Master 上执行
    kubeadm token create --print-join-command
    在 Node 上执行输出的 kubeadm join 命令加入集群。
  • 常见故障速查:
    • coredns Pending:未安装或未就绪 CNI 插件,先部署 Flannel/Calico。
    • kubelet 启动失败:检查 /var/log/messages、Swap 是否关闭、cgroup 驱动一致性(Docker 使用 systemd)。
    • 镜像拉取失败:确认 image-repository 是否可用,或手动 docker pull 所需镜像。
    • 节点 NotReady:检查 网络插件 Pod 是否 Running、节点污点/容忍、内核参数与防火墙策略。

五 生产可用性与安全加固要点

  • 高可用:多 Master + Keepalived + HAProxykube-vip 提供 VIP;etcd 与 APIServer 多实例部署。
  • 网络策略:启用 NetworkPolicy 限制 Pod 间通信,遵循最小权限原则。
  • 镜像与仓库:使用国内镜像源或私有仓库,固定镜像版本,减少不确定性。
  • 权限与合规:启用 RBAC,按团队/项目划分 Namespace 与权限;定期更新系统与组件补丁。
  • 可观测性:部署 Prometheus + Grafana + Alertmanager 做监控告警,使用 EFK/ELKFluentd 做日志收集。
  • 备份恢复:定期备份 etcd 与关键 YAML 清单,并演练恢复流程。

0