Docker和K8s引擎配置安装指南
本文档介绍如何配置和安装Docker引擎和Kubernetes引擎,用于SECSNOW平台的题目容器服务。
一、Docker引擎配置
1.1 本地模式
适用场景:系统服务和题目服务在同一台主机。
配置步骤:
- 确保Docker已安装
docker --version
-
在后台管理界面配置
-
引擎名称:填写名称(如:本地Docker)
- 引擎类型:选择
Docker - 主机类型:选择
本地模式 - 主机地址:填写系统主机IP
- 端口:不需要填写
-
TLS:不需要启用
-
保存配置
1.2 远程模式
适用场景:系统服务和题目服务在不同主机。
步骤一:在题目服务器安装Docker
# 安装Docker(以Ubuntu为例)
curl -fsSL https://get.docker.com | sh
# 启动Docker服务
systemctl start docker
systemctl enable docker
步骤二:开启Docker远程访问(TLS加密)
方法一:使用一键脚本(推荐)
在题目服务器执行(脚本在系统安装目录的config_sh目录下):
cd /opt/secsnow-install/config_sh
chmod +x enable_docker_remote_tls.sh
./enable_docker_remote_tls.sh
脚本会自动:
- 生成TLS证书(CA证书、客户端证书、客户端密钥)
- 配置Docker daemon支持远程TLS访问
- 重启Docker服务
方法二:手动配置(可能不可用)
- 创建证书目录
mkdir -p /etc/docker/certs
cd /etc/docker/certs
-
生成证书(参考enable_docker_remote_tls.sh脚本)
-
配置Docker daemon
# 编辑 /etc/docker/daemon.json
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2376"],
"tls": true,
"tlsverify": true,
"tlscacert": "/etc/docker/certs/ca.pem",
"tlscert": "/etc/docker/certs/server-cert.pem",
"tlskey": "/etc/docker/certs/server-key.pem"
}
- 重启Docker
systemctl restart docker
- 开放防火墙端口
# 开放2376端口
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --reload
步骤三:在平台后台配置
-
下载证书文件
-
从题目服务器的
/etc/docker/certs/目录下载:ca.pem(CA证书)client-cert.pem(客户端证书)client-key.pem(客户端密钥)
-
在后台管理界面配置
-
引擎名称:填写名称(如:远程Docker)
- 引擎类型:选择
Docker - 主机类型:选择
远程模式 - 主机地址:填写题目服务器IP(如:192.168.1.100)
- 端口:填写
2376 - 启用TLS:勾选
- 上传CA证书:选择
ca.pem - 上传客户端证书:选择
client-cert.pem -
上传客户端密钥:选择
client-key.pem -
保存配置
二、Kubernetes引擎配置(K3s/K8s)
2.1 K3s安装(单节点/主节点)
适用场景:小型集群或测试环境。
步骤一:安装K3s主节点
# 使用国内镜像源安装K3s
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \
INSTALL_K3S_MIRROR=cn \
sh -s - server \
--system-default-registry=registry.cn-hangzhou.aliyuncs.com \
--write-kubeconfig-mode=644
安装完成后:
- K3s服务自动启动
- kubeconfig文件位置:
/etc/rancher/k3s/k3s.yaml - 服务端口:6443
步骤二:获取kubeconfig文件
# 查看kubeconfig内容
cat /etc/rancher/k3s/k3s.yaml
# 或复制到当前用户目录
mkdir -p ~/.kube
cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
步骤三:在平台后台配置
-
下载kubeconfig文件
-
从K3s服务器的
/etc/rancher/k3s/k3s.yaml下载 -
修改kubeconfig中的server地址
-
将
server: https://127.0.0.1:6443修改为实际IP -
例如:
server: https://10.3.12.4:6443 -
在后台管理界面配置
-
引擎名称:填写名称(如:K3s集群)
- 引擎类型:选择
Kubernetes (k3s/k8s) - 上传kubeconfig:选择修改后的
k3s.yaml文件 - 命名空间:填写命名空间(默认:ctf-challenges)
-
验证SSL证书:内网环境建议关闭
-
保存配置
2.2 K3s Agent节点(可选)
如果需要添加Agent节点:
# 在主节点获取token
cat /var/lib/rancher/k3s/server/node-token
# 在Agent节点执行(替换TOKEN和MASTER_IP)
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \
INSTALL_K3S_MIRROR=cn \
K3S_URL=https://MASTER_IP:6443 \
K3S_TOKEN=TOKEN \
sh -
注意:平台只需要连接主节点即可,会自动管理整个集群。
2.3 K8s集群(生产环境)
适用场景:大型比赛或生产环境。
步骤一:安装K8s集群
按照Kubernetes官方文档安装集群,或使用kubeadm等工具。
步骤二:获取kubeconfig文件
# 通常位置
~/.kube/config
# 或从master节点复制
scp user@master:~/.kube/config ~/.kube/config
步骤三:在平台后台配置
-
下载kubeconfig文件
-
在后台管理界面配置
- 引擎名称:填写名称(如:K8s生产集群)
- 引擎类型:选择
Kubernetes (k3s/k8s) - 上传kubeconfig:选择kubeconfig文件
- 命名空间:填写命名空间(默认:ctf-challenges)
- 验证SSL证书:根据实际情况选择
-
安全级别:根据需求选择(低/中/高/自定义)
-
保存配置
三、配置验证
3.1 测试Docker连接
在后台管理界面: 1. 选择已配置的Docker引擎 2. 点击"测试引擎连接"操作 3. 查看连接结果
3.2 测试K8s连接
在后台管理界面: 1. 选择已配置的K8s引擎 2. 点击"测试引擎连接"操作 3. 查看连接结果
3.3 查看健康状态
配置成功后,系统会自动检查引擎健康状态: - 健康:引擎运行正常 - 警告:资源使用率较高 - 严重:资源使用率过高或节点异常 - 离线:无法连接
四、常见问题
4.1 Docker远程连接失败
检查项:
- 防火墙是否开放2376端口
- TLS证书是否正确配置
- Docker daemon配置是否正确
- 网络是否可达
解决方法:
# 检查Docker服务状态
systemctl status docker
# 检查端口监听
netstat -tlnp | grep 2376
# 查看Docker日志
journalctl -u docker -n 50
4.2 K8s连接失败
检查项:
- kubeconfig文件是否正确
- server地址是否可访问
- 6443端口是否开放
- SSL证书验证是否正确
解决方法:
# 测试K8s连接
kubectl --kubeconfig=/path/to/kubeconfig.yaml get nodes
# 检查端口
telnet K8S_IP 6443
# K3s查看服务状态
systemctl status k3s
4.3 权限问题
Docker:
- 确保当前用户有权限访问Docker socket
- 或使用sudo执行docker命令
K8s:
- 确保kubeconfig中的用户有足够权限
- 检查RBAC配置
五、性能建议
5.1 Docker引擎
- 本地模式:适用于测试环境,不推荐生产环境
- 远程模式:生产环境推荐,必须启用TLS
- 资源限制:根据题目服务器性能调整
5.2 K8s引擎
- K3s:适用于中小型比赛(<500人)
- K8s集群:适用于大型比赛(>500人)
- 节点配置:建议4核8GB内存以上
- 命名空间隔离:使用独立命名空间(ctf-challenges)