kubernetes 构筑 docker 的 private registry

docker image每次都从dockerhub上下载。虽然速度也还能接受,但是每次都得重新下还是很麻烦的。于是考虑构筑一个内网的private registry。

registry 有两种运行方式:

1.  官方提供image,直接以container方式运行。方便。

2.  安装在物理机(VM也行)上。


这里为了方便,就以第一种方式运行。但是默认docker是无HA(High Available)的,一旦container挂了服务也就挂了。于是考虑用kubernetes构筑一个private registry集群来提供服务。下面是详细步骤。(kubernentes安装这里就不详细叙述。可以参考网上其他资料)


1. 准备一个kubernetes环境

     我用了三台虚拟机(以master/node1/node2命名)。并且各个虚拟机之间使用flannel (具体配置参考其他网络资料)。这点很重要:如果节点直接不使用flannel,会导致不同node上的pod无法通信。


2. 镜像准备

    这步不是必须得。因为kubernetes也会在构筑pod过程中让docker去pull相关镜像。我这里事先pull好,是可以加快pod创建时间。

    在node1/2上分别执行docker pull registry


3. master上创建registry服务的yaml文件

    

# cat registry-srv.yaml 
apiVersion: v1
kind: Service
metadata:
    name: registry
    labels:
      name: registry
spec:
    type: NodePort
    ports:
    - port: 5000
      nodePort: 30002
    selector:
      name: registry


4.  master上创建registry rc的yaml文件

# cat registry-rc.yaml 
apiVersion: v1
kind: ReplicationController
metadata:
  name: registry
  labels:
    name: registry
spec:
  replicas: 1
  selector:
    name: registry
  template:
    metadata:
      labels:
        name: registry
    spec:
      containers:
      - name: registry
        image: registry
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 5000
        volumeMounts:
        - mountPath: "/var/lib/registry"
          name: mypd
      volumes:
      - name: mypd
        persistentVolumeClaim:
          claimName: myclaim2


5.  master上volume相关yaml文件

cat pv.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv01
  release: stable
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    path: /k8s/test
    server: 192.168.7.80


cat pvc.yaml 
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: myclaim2
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 2G






你可能感兴趣的:(kubernetes,docker,kubernetes,registry,HA)