在安装Ubuntu和Debian操作系统时,通过在局域网建立一个镜像站点,可以大幅度加速apt软件包安装过程,同时减少主服务器的负担。
这里分享基于Kubernetes来建立apt镜像服务的方法。
- 使用的apt镜像服务容器,参见 https://github.com/openthings/apt-mirror-http-server
- 本文使用的脚本文件,参见 https://github.com/openthings/kubernetes-tools/apt-mirror
部署到Kubernetes中,配置文件如下:
apiVersion: v1
kind: ServiceAccount
metadata:
name: apt-mirror
namespace: apt-mirror
---
kind: Service
apiVersion: v1
metadata:
name: apt-mirror
namespace: apt-mirror
labels:
app: apt-mirror
spec:
ports:
- name: mirror-server
port: 80
type: LoadBalancer
selector:
app: apt-mirror
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: apt-mirror
namespace: apt-mirror
spec:
selector:
matchLabels:
app: apt-mirror
replicas: 1
strategy:
type: Recreate
template:
metadata:
labels:
app: apt-mirror
spec:
serviceAccount: apt-mirror
containers:
- name: apt-mirror
image: seterrychen/apt-mirror-http-server
ports:
- name: mirror-server
containerPort: 80
securityContext:
capabilities:
add:
- DAC_READ_SEARCH
- SYS_RESOURCE
env:
- name: RESYNC_PERIOD
value: 12h
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: mirror-volume
mountPath: /var/spool/apt-mirror
volumes:
- name: mirror-volume
hostPath:
path: /home/supermap/apt-mirror
我们创建了一个Deployment和一个Service。存储使用了hostpath,只是为了方便验证可行性。在生产系统中,volumes可以使用NFS或其它的网络分布式存储系统,从而可以迁移、伸缩和容错。
将上面的文件保存为mirror-server.sh,然后运行:
kubectl create ns apt-mirror
kubectl apply -f mirror-server.yaml
即可将该服务安装到apt-mirror命名空间中。
然后,在浏览器中访问服务中列出的地址即可。可以通过下面的命令获取:
kubectl get svc -n apt-mirror
如果镜像下载有问题,可以尝试单独下载,如下:
docker pull seterrychen/apt-mirror-http-server