温馨提示×

centos安全k8s安装攻略

小樊
45
2025-11-22 04:07:26
栏目: 智能运维

CentOS 安全加固的 Kubernetes 安装攻略

一 环境规划与最低要求

  • 节点与网络
    • 至少准备3 台服务器:建议1 个 Master + 2 个 Node;每台至少2 核 CPU、2GB 内存、30GB 磁盘,并保证节点间互通(公网或专线均可)。
    • 规划固定 IP 与主机名,并在所有节点配置**/etc/hosts**解析,避免 DNS 单点依赖。
    • 时间同步:安装并启用 NTP/chrony,保证集群证书与审计日志时间一致性。
  • 软件与版本
    • 操作系统建议 CentOS 7/8(或兼容的 RHEL 系发行版),内核与容器运行时保持更新。
    • 容器运行时建议 Docker CE/Containerd;Kubernetes 组件使用 kubeadm/kubelet/kubectl 同一小版本。

二 系统加固与前置配置

  • 安全基线
    • 关闭 Swap:swapoff -a 并注释 /etc/fstab 中的 swap 行(Kubelet 要求)。
    • SELinux:生产建议保持 enforcing,按需配置 container_t 等策略;若无法立即适配,可先 setenforce 0 并将 /etc/selinux/config 设为 permissive,后续再回归 enforcing。
    • 防火墙:不建议直接关闭。生产应启用 firewalld/iptables 并仅放行必要端口(如 6443/10250/10251/10252/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 配置并持久化:sysctl --system
  • 容器运行时与 kubelet
    • 安装并启动 Docker/Containerd;启用 kubelet 开机自启(暂不启动,待 kubeadm 初始化后再启动)。

三 安装 Kubernetes 组件与初始化集群

  • 配置仓库与安装
    • 配置 Kubernetes YUM 源(可用国内镜像加速),安装 kubelet/kubeadm/kubectl 并启用 kubelet。
  • 初始化控制平面
    • 使用 kubeadm 初始化(示例):
      • kubeadm init --apiserver-advertise-address=<MASTER_IP> --pod-network-cidr=<POD_CIDR> --service-cidr=<SERVICE_CIDR>
    • 常见取值:POD_CIDR=10.244.0.0/16(Flannel/Calico 常用),SERVICE_CIDR=10.96.0.0/12
  • 配置 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
  • 加入工作节点
    • 在 Master 上获取加入命令:kubeadm token create --print-join-command
    • 在 Node 上执行输出的 kubeadm join 命令。

四 安全加固清单与控制面配置

  • 传输与认证
    • 全链路启用 TLS:API Server、kubelet、etcd、Scheduler、Controller-Manager 组件间通信均使用证书;对外 API 仅开放 6443 并强制 HTTPS
    • 选择并启用 API 认证(如 X.509、ServiceAccount、或对接 OIDC/LDAP);所有客户端(含节点、插件)必须认证。
    • 启用 RBAC 最小权限授权;结合 NodeRestriction 准入插件限制节点对 API 的访问范围。
  • 控制面安全参数
    • kube-apiserver:启用 authentication/authorization/admission 链路;对外仅暴露 6443;审计日志按需开启。
    • kube-scheduler:设置 –profiling=false–address=127.0.0.1,减少攻击面。
    • kube-controller-manager:设置 –profiling=false–address=127.0.0.1–use-service-account-credentials=true–terminated-pod-gc-threshold 合理值;启用 RotateKubeletServerCertificate=true(配合 Kubelet 证书轮换)。
    • etcd:启用 TLS客户端证书认证;限制访问来源;高可用部署并定期备份。
  • 镜像与准入控制
    • 使用 私有镜像仓库与镜像签名;通过 ImagePolicyWebhook 或准入控制器拦截未授权/未扫描镜像。
  • 网络与运行时
    • 部署支持 NetworkPolicy 的 CNI(如 Calico/Cilium),对命名空间设置 default-deny-all,再按需放行白名单流量,实现最小连通性

五 验证与持续运维

  • 基础验证
    • 检查节点与组件状态:kubectl get nodeskubectl get pods -A;确认 kubelet 与容器运行时健康。
    • 验证网络连通:跨节点 Pod-to-Pod 通信、DNS 解析、外部访问策略生效。
  • 持续安全运维
    • 镜像安全:在 CI 中集成漏洞扫描准入控制,只允许已授权镜像进入生产。
    • 配置合规:定期审计 RBAC、准入、网络策略、Secrets 管理;启用 审计日志与集中告警。
    • 补丁与升级:保持 操作系统、容器运行时、Kubernetes 组件及时更新;采用滚动升级降低风险。

0