目前主流的容器编排平台选项: - Kubernetes (K8s): 最流行的生产级选择 - Docker Swarm: 更简单但功能较少 - Nomad: HashiCorp提供的轻量级方案
推荐选择Kubernetes,因其功能完善、社区支持强大且安全性较高。
# 更新系统
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
推荐使用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
# 添加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 # 防止自动更新
在主节点上执行:
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
推荐使用Calico(提供网络策略支持):
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
确保使用最小权限原则创建角色和绑定。
# 示例网络策略:只允许特定pod间通信
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
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
添加审计策略。
推荐安装: - Prometheus + Grafana 用于监控 - EFK (Elasticsearch + Fluentd + Kibana) 用于日志 - Falco 用于运行时安全监控
对于生产环境,建议配置: - 多个控制平面节点 - etcd集群 - 外部负载均衡器 - 多可用区部署
通过以上步骤,您可以在Linux上搭建一个安全可靠的Kubernetes容器编排平台。根据实际需求,您可能需要进一步调整安全策略和网络配置。