前期在客户那里搭建了基本运行环境,鉴于很多企业的环境都是内部网无法连接外部,因此搭建私有仓库是逃避不开的问题,按照网上的步骤搭建,虽然遇到一些问题,但还好都算容易解决了,下面大致把步骤记录一下便于下次去客户那里更新。

首先在需要在启动registry Pod的机器上把registry images获取下来

docker pull registry

然后在生成几个构建persistence volumn(pv), persistence volumn claim(pvc),以及registry rc和service的文件

[root@k8s-master registry]# cat pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv01
release: stable
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Recycle
nfs:
path: /k8s/test
server: 10.182.168.99
[root@k8s-master registry]# cat pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: myclaim2
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 20G
[root@k8s-master registry]# cat registry-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: registry
labels:
name: registry
spec:
replicas:
selector:
name: registry
template:
metadata:
labels:
name: registry
spec:
containers:
- name: registry
image: registry
imagePullPolicy: IfNotPresent
ports:
- containerPort:
volumeMounts:
- mountPath: "/var/lib/registry"
name: mypd
volumes:
- name: mypd
persistentVolumeClaim:
claimName: myclaim2
[root@k8s-master registry]# cat registry-srv.yaml
apiVersion: v1
kind: Service
metadata:
name: registry
labels:
name: registry
spec:
type: NodePort
ports:
- port:
nodePort:
selector:
name: registry
10.182.168.99是k8s-node-1的地址,非flannel集群地址

一个一个建立起来,当然需要在k8s-node-1上打个标签

kubectl label node k8s-node- name=registry

在建立registry-rc的时候遇到一些问题。

registry pod总是处于container creating的状态。

  • 首先需要在启动registry pod的机器上创建相关的目录,我的是在k8s-node-1上创建/k8s/test

通过describe pods 一看,基本都是nfs mount的问题,解决方式如下:

  • 启动nfs service
systemctl start nfs
  • 遇到

Output: mount.nfs: access denied by server while mounting 10.182.168.99:/k8s/test错误时,修改配置文件/etc/exports,加入 insecure 选项

/k8s/test  *(insecure,rw,async,no_root_squash)

启动完成,一切顺利,

[root@k8s-master registry]# kubectl get pods
NAME READY STATUS RESTARTS AGE
helloworld-service-62wl1 / Running 88d
helloworld-service-8cbt2 / Running 88d
registry-7nj8q / Running 1h
[root@k8s-master registry]# kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
helloworldsvc 10.254.247.84 <nodes> :/TCP 88d
kubernetes 10.254.0.1 <none> /TCP 120d
registry 10.254.174.54 <nodes> :/TCP 1h

=====================================================================

接下来验证。

在k8s-node-1上有一大堆的本地images

[root@k8s-node- v2]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/registry latest 3ebefe7c539b days ago 33.19 MB
-domain v2 326bf14bb29f months ago 2.055 GB
oracle/coherence 12.2.1.0.-cacheserver 57a90e86e1d2 months ago MB
oracle/coherence 12.2.1.0.-proxy 238c85d61468 months ago MB
gcr.io/google_containers/nginx-ingress-controller 0.9.-beta. 2c3d45bb8cb9 months ago 130.6 MB
gcr.io/google_containers/k8s-dns-sidecar-amd64 1.14. 7c4034e4ffa4 months ago 44.5 MB
gcr.io/google_containers/k8s-dns-kube-dns-amd64 1.14. ca8759c215c9 months ago 52.36 MB
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64 1.14. e5c335701995 months ago 44.84 MB
-helloworld v1 351691157b77 months ago 2.064 GB

找一个小的,然后重新tag一下,这里我认为应该指向node的外部地址和端口而不是集群地址

docker tag docker.io/nginx  k8s-node-:/nginx

然后修改/etc/sysconfig/docker文件,主要是修改两行(在需要用到registry的节点上都需要修改)

ADD_REGISTRY='--add-registry k8s-node-1'

INSECURE_REGISTRY='--insecure-registry k8s-node-1:30002'

然后重启docker

service docker restart

将images push到本地的registry,然后我们查看/k8s/test目录下就有内容了.

docker push k8s-node-:/nginx

在其他机器运行docker pull,看到已经从本地拉回images.

[root@k8s-master registry]# docker pull k8s-node-:/nginx
Using default tag: latest
Trying to pull repository k8s-node-:/nginx ...
sha256:c15f1fb8fd55c60c72f940a76da76a5fccce2fefa0dd9b17967b9e40b0355316: Pulling from k8s-node-:/nginx
36a46ebd5019: Pull complete
57168433389f: Pull complete
332ec8285c50: Pull complete
Digest: sha256:c15f1fb8fd55c60c72f940a76da76a5fccce2fefa0dd9b17967b9e40b0355316
Status: Downloaded newer image for k8s-node-:/nginx:latest
[root@k8s-master registry]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
k8s-node-:/nginx latest 46102226f2fd months ago 109.4 MB

kubernetes环境下私有仓库搭建的更多相关文章

  1. Kubernetes环境下的各种调试方法

    作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文介绍在Kubernetes环境下的调试方法,希望对读者有用.如果关 ...

  2. Kubernetes环境下如何运行Coherence缓存集群

    Oracle官方出了一个如何在Docker环境下运行Coherence的技术文档,大家可以参考: https://github.com/oracle/docker-images/tree/master ...

  3. Kubernetes环境下调整WebLogic JVM基本参数

    基于Kubernetes启动WebLogic后,发现JVM的最大heap size一直在700多M左右,通过 kubectl logs 察看pod启动状态,发现日志中并没有-Xms和-Xmx参数.日志 ...

  4. 开发环境下的 Kubernetes 容器网络演进之路

    马蜂窝技术原创文章,更多干货请搜索公众号:mfwtech 使用 Docker+Kubernetes 来简化开发人员的工作流,使应用更加快速地迭代,缩短发布周期,在很多研发团队中已经是常见的做法. 如果 ...

  5. windows 环境下搭建docker私有仓库

    windows 环境下搭建docker私有仓库 1.在公用仓库中pull仓库镜像 docker pull regitry 2.启动仓库镜像 //-d意思是后台运行,-p是做端口映射,这里是将本地的50 ...

  6. GitOps:Kubernetes多集群环境下的高效CICD实践

    为了解决传统应用升级缓慢.架构臃肿.不能快速迭代.故障不能快速定位.问题无法快速解决等问题,云原生这一概念横空出世.云原生可以改进应用开发的效率,改变企业的组织结构,甚至会在文化层面上直接影响一个公司 ...

  7. 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建

    使用.创造和分享 笔者曾经不思量力的思考过『是什么推动了互联网技术的快速发展?』这种伟大的命题.结论是,除了摩尔定律之外,技术经验的快速积累和广泛分享,也是重要的原因. 有人戏称,『写 Java,首先 ...

  8. CentOS7 Docker私有仓库搭建及删除镜像 【转】

    文章来源:centos7 Docker私有仓库搭建及删除镜像 如果不想用私有镜像库,你可以用docker的库 https://hub.docker.com 环境准备 环境:两个装有Docker 17. ...

  9. Docker学习笔记 — Docker私有仓库搭建

    Docker学习笔记 — Docker私有仓库搭建   目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2   和Mavan的管理一样,Dockers ...

随机推荐

  1. [bzoj4516][Sdoi2016]生成魔咒——后缀自动机

    Brief Description 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示.例如可以将魔咒字符 1.2 拼凑起来形成一个魔咒串 [1,2]. 一个魔咒串 S 的非空字串被称为魔咒串 S 的生 ...

  2. wiki1285

    2013-09-21 16:50 裸 //By BLADEVIL var n :longint; i :longint; x, y :longint; t, tot :longint; key, s, ...

  3. MYSQL5.7修改密码

    参考:https://www.cnblogs.com/activiti/p/7810166.html # alter user 'root'@'localhost' identified by '12 ...

  4. linux基础 -nginx和nfs代理 开发脚本自动部署及监控

    开发脚本自动部署及监控 1.编写脚本自动部署反向代理.web.nfs: (1).部署nginx反向代理三个web服务,调度算法使用加权轮询:  (2).所有web服务使用共享存储nfs,保证所有web ...

  5. Java易错知识点(2) - 在读取Cookie时除了Key,Value是得不到其他信息的

    全文总结: 在读取Cookie,然后操作时,除了getName(),getValue()外,不要妄图得到其他信息,如下方法不会得到值的: cookie.getMaxAge(); cookie.getD ...

  6. UVALive - 5844

    题是pdf版 Sample Input23mississippinni55i55ippi2foobar|=o08arSample Output10 /** 题意:给出一个normal串,一个leet串 ...

  7. java的maven项目(三)私服的搭建(windows版)

    1       私服 nexus 安装nexus 启动服务 启动失败的解决方法: 登录nexus 用户名/密码  admin/admin123 仓库类型 Virtual   虚拟仓库 Proxy  代 ...

  8. spring applicationContext.xml 中bean配置

    如果采用set get方法配置bean,bean需要有set get 方法需要有无参构造函数,spring 在生成对象时候会调用get和set方法还有无参构造函数 如果采用constructor方法则 ...

  9. php使用memcached详解

    一.memcached 简介 在很多场合,我们都会听到 memcached 这个名字,但很多同学只是听过,并没有用过或实际了解过,只知道它是一个很不错的东东.这里简单介绍一下,memcached 是高 ...

  10. “pip failed to create process”的问题

    增加python -m的方法能完美解决pip,easy_install 安装时报错:“pip failed to create process”的问题,据推测应该是64bit操作系统下会是如此. Wi ...