使用Kubernetes创建apt镜像服务

在安装Ubuntu和Debian操做系统时,经过在局域网创建一个镜像站点,能够大幅度加速apt软件包安装过程,同时减小主服务器的负担。git

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

部署到Kubernetes中,配置文件以下:docker

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或其它的网络分布式存储系统,从而能够迁移、伸缩和容错。api

将上面的文件保存为mirror-server.sh,而后运行:浏览器

kubectl create ns apt-mirror
kubectl apply -f mirror-server.yaml

便可将该服务安装到apt-mirror命名空间中。服务器

而后,在浏览器中访问服务中列出的地址便可。能够经过下面的命令获取:网络

kubectl get svc -n apt-mirror

若是镜像下载有问题,能够尝试单独下载,以下:app

docker pull seterrychen/apt-mirror-http-server