首页主机资讯k8s在centos上的最佳安装实践是什么

k8s在centos上的最佳安装实践是什么

时间2025-11-28 12:38:04发布访客分类主机资讯浏览1259
导读:在 CentOS 上部署 Kubernetes 的最佳实践 一 环境与版本规划 节点与资源:至少准备3台服务器(建议1个 Master + 2个 Node),每台至少2核 CPU、2GB 内存、30GB 磁盘,并确保节点间网络互通、可访问...

在 CentOS 上部署 Kubernetes 的最佳实践

一 环境与版本规划

  • 节点与资源:至少准备3台服务器(建议1个 Master + 2个 Node),每台至少2核 CPU、2GB 内存、30GB 磁盘,并确保节点间网络互通、可访问外网(便于拉取镜像)。为每台机器设置唯一主机名(如:k8s-master、k8s-node1)。
  • 操作系统:优先选择CentOS 7.6+CentOS Stream 8,并保持系统已更新(yum update)。
  • 容器运行时:生产上推荐直接使用containerd(自 v1.21 起 kubelet 默认与 Docker 解耦,优先使用 containerd;如使用 Docker,需确保其与 kubelet 的 cgroup 驱动一致)。
  • 版本选择:结合组件兼容性与社区实践,选择稳定小版本(如1.26.x)并统一集群版本,避免混用。

二 系统与安全基线

  • 主机名与解析:为每个节点设置唯一主机名,并在**/etc/hosts**或 DNS 中完成解析,避免节点名冲突。
  • 时间同步:安装并启用chrony/ntp,保证节点间时间一致(对证书校验与调度稳定性至关重要)。
  • 内核网络参数:创建**/etc/sysctl.d/k8s.conf**,启用桥接流量进入 iptables、开启转发:
    net.bridge.bridge-nf-call-iptables=1
    net.bridge.bridge-nf-call-ip6tables=1
    net.ipv4.ip_forward=1
    执行 sysctl --system 使配置生效。
  • 安全策略(按等保/公司策略二选一):
    • 严格模式:保持SELinux=enforcing,按需为 kubelet、containerd、docker 等配置策略模块与权限;
    • 便捷模式(测试/内网可用):临时 setenforce 0,永久将**/etc/selinux/config中 SELINUX 设为permissive/disabled**。
  • 交换分区:执行swapoff -a并在**/etc/fstab**注释 swap 条目,避免 kubelet 性能与稳定性受影响。
  • 防火墙:生产环境建议精细化放行Kubernetes 所需端口(如 6443、10250、2379-2380、10251、10252、30000-32767 等);测试环境可临时关闭 firewalld以简化排障。

三 容器运行时与 kubelet 配置

  • 使用 containerd(推荐):
    1. 启用内核模块:创建**/etc/modules-load.d/containerd.conf**,写入 overlay、br_netfilter;执行 modprobe 加载。
    2. 安装并启动:yum install -y containerd.io;systemctl enable --now containerd。
    3. 生成默认配置并启用 SystemdCgroup:
      containerd config default | tee /etc/containerd/config.toml
      在 [plugins.“io.containerd.grpc.v1.cri”.containerd.runtimes.runc.options] 下设置 SystemdCgroup = true
      systemctl restart containerd
  • 使用 Docker(可选):
    1. 安装:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
      yum install -y docker-ce docker-ce-cli containerd.io
    2. 配置 cgroup 驱动为 systemd(/etc/docker/daemon.json):
      { “exec-opts”: [“native.cgroupdriver=systemd”] }
    3. systemctl enable --now docker
  • 安装 kubeadm/kubelet/kubectl:
    • 添加 Kubernetes YUM 源(可用官方源或国内镜像源),安装指定版本:yum install -y kubeadm kubelet kubectl
    • systemctl enable --now kubelet(此时 kubelet 处于就绪等待状态,待集群初始化后变为 Running)

四 用 kubeadm 部署集群

  • 初始化控制平面(示例):
    kubeadm init --apiserver-advertise-address=< MASTER_IP> --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --kubernetes-version=
    常见网络插件的 Pod CIDR:Flannel=10.244.0.0/16Calico=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
  • 加入工作节点:
    • 方式一:使用 kubeadm init 输出中的 kubeadm join 命令;
    • 方式二:在 Master 上生成新令牌:kubeadm token create --print-join-command,然后在 Node 上执行。
  • 验证:kubectl get nodes(状态为 Ready)、kubectl get pods -A(核心组件 Running)。

五 高可用、网络与运维安全

  • 高可用控制平面:部署3台 Master + kube-vip/Keepalived + HAProxy 或云上 LB,对外暴露 VIP:6443;kubeadm 使用HA 配置初始化 etcd 与 apiserver。
  • 服务暴露与 Ingress:为集群服务配置 Service: NodePort/LoadBalancer,并使用 **Ingress Controller(如 Nginx Ingress)**统一南北向流量治理。
  • 网络策略:启用 NetworkPolicy 限制 Pod 间/命名空间间通信,缩小攻击面。
  • 存储与镜像:为有状态应用准备 PV/PVC(如 NFS、Ceph RBD/CephFS、云盘);为加速拉取可使用私有镜像仓库/镜像代理
  • 可观测性:部署 Prometheus + Grafana + Alertmanager 做监控告警,使用 EFK/Loki 做日志收集与检索。
  • 权限与合规:启用 RBAC 最小权限模型,定期轮换 bootstrap token 与证书,按周期升级内核与 K8s 组件并回滚验证。
  • 备份与演练:定期备份 etcd 与控制面配置,演练恢复流程与灾难恢复预案。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: k8s在centos上的最佳安装实践是什么
本文地址: https://pptw.com/jishu/758923.html
如何在CentOS上进行性能优化 CentOS Python安装后怎么测试

游客 回复需填写必要信息