在安装Ubuntu和Debian操作系统时,通过在局域网建立一个镜像站点,可以大幅度加速apt软件包安装过程,同时减少主服务器的负担。
这里分享基于Kubernetes来建立apt镜像服务的方法。
- 使用的apt镜像服务容器,参见
- 本文使用的脚本文件,参见
部署到Kubernetes中,配置文件如下:
apiVersion: v1kind: ServiceAccountmetadata: name: apt-mirror namespace: apt-mirror---kind: ServiceapiVersion: v1metadata: name: apt-mirror namespace: apt-mirror labels: app: apt-mirrorspec: ports: - name: mirror-server port: 80 type: LoadBalancer selector: app: apt-mirror---kind: DeploymentapiVersion: apps/v1metadata: name: apt-mirror namespace: apt-mirrorspec: 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-mirrorkubectl apply -f mirror-server.yaml
即可将该服务安装到apt-mirror命名空间中。
然后,在浏览器中访问服务中列出的地址即可。可以通过下面的命令获取:
kubectl get svc -n apt-mirror
如果镜像下载有问题,可以尝试单独下载,如下:
docker pull seterrychen/apt-mirror-http-server