使用Kubernetes建立apt镜像服务

原创
2018/09/05 17:03
阅读数 914

在安装Ubuntu和Debian操作系统时,通过在局域网建立一个镜像站点,可以大幅度加速apt软件包安装过程,同时减少主服务器的负担。

这里分享基于Kubernetes来建立apt镜像服务的方法。

部署到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 

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
3 收藏
0
分享
返回顶部
顶部