插件窝 干货文章 如何在Linux上搭建安全可靠的容器编排平台?

如何在Linux上搭建安全可靠的容器编排平台?

Kubernetes sudo containerd 节点 819    来源:    2025-04-13

在Linux上搭建安全可靠的容器编排平台指南

1. 平台选择

目前主流的容器编排平台选项: - Kubernetes (K8s): 最流行的生产级选择 - Docker Swarm: 更简单但功能较少 - Nomad: HashiCorp提供的轻量级方案

推荐选择Kubernetes,因其功能完善、社区支持强大且安全性较高。

2. 准备工作

系统要求

  • Linux服务器(推荐Ubuntu 20.04+/CentOS 7+/RHEL 8+)
  • 每节点至少2GB RAM(生产环境建议8GB+)
  • 每节点至少2个CPU核心
  • 禁用swap分区
  • 确保节点间网络通畅

安全基础配置

# 更新系统
sudo apt update && sudo apt upgrade -y  # Ubuntu/Debian
sudo yum update -y                      # CentOS/RHEL

# 配置防火墙(以UFW为例)
sudo ufw allow 22/tcp        # SSH
sudo ufw allow 6443/tcp      # Kubernetes API
sudo ufw enable

# 安装必要工具
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

3. 安装容器运行时

推荐使用containerd而非直接使用Docker:

# 安装containerd
sudo apt install -y containerd

# 配置containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml

# 修改配置启用systemd cgroup驱动
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml

# 重启containerd
sudo systemctl restart containerd
sudo systemctl enable containerd

4. 安装Kubernetes组件

# 添加Kubernetes仓库
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

# 安装kubelet, kubeadm和kubectl
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl  # 防止自动更新

5. 初始化Kubernetes集群

在主节点上执行:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --control-plane-endpoint=<主节点IP或负载均衡器IP>

记录输出的kubeadm join命令,用于添加工作节点。

配置kubectl:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

6. 安装网络插件

推荐使用Calico(提供网络策略支持):

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

7. 安全加固措施

RBAC配置

确保使用最小权限原则创建角色和绑定。

网络策略

# 示例网络策略:只允许特定pod间通信
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress

Pod安全策略(或替代方案)

apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: restricted
spec:
  privileged: false
  allowPrivilegeEscalation: false
  requiredDropCapabilities:
    - ALL
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
  hostNetwork: false
  hostIPC: false
  hostPID: false
  runAsUser:
    rule: 'MustRunAsNonRoot'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'MustRunAs'
    ranges:
      - min: 1
        max: 65535
  fsGroup:
    rule: 'MustRunAs'
    ranges:
      - min: 1
        max: 65535

启用审计日志

修改/etc/kubernetes/manifests/kube-apiserver.yaml添加审计策略。

8. 监控与日志

推荐安装: - Prometheus + Grafana 用于监控 - EFK (Elasticsearch + Fluentd + Kibana) 用于日志 - Falco 用于运行时安全监控

9. 持续维护

  • 定期更新Kubernetes版本
  • 定期检查安全公告(CVE)
  • 实施备份策略(使用Velero等工具)
  • 定期进行安全扫描和渗透测试

10. 高可用配置(可选)

对于生产环境,建议配置: - 多个控制平面节点 - etcd集群 - 外部负载均衡器 - 多可用区部署

通过以上步骤,您可以在Linux上搭建一个安全可靠的Kubernetes容器编排平台。根据实际需求,您可能需要进一步调整安全策略和网络配置。