k8s在centos上的最佳安装实践是什么
导读:在 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(推荐):
- 启用内核模块:创建**/etc/modules-load.d/containerd.conf**,写入 overlay、br_netfilter;执行 modprobe 加载。
- 安装并启动:yum install -y containerd.io;systemctl enable --now containerd。
- 生成默认配置并启用 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(可选):
- 安装:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io - 配置 cgroup 驱动为 systemd(/etc/docker/daemon.json):
{ “exec-opts”: [“native.cgroupdriver=systemd”] } - systemctl enable --now docker
- 安装:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安装 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/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
- 加入工作节点:
- 方式一:使用 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
