kubernetes环境下私有仓库搭建
前期在客户那里搭建了基本运行环境,鉴于很多企业的环境都是内部网无法连接外部,因此搭建私有仓库是逃避不开的问题,按照网上的步骤搭建,虽然遇到一些问题,但还好都算容易解决了,下面大致把步骤记录一下便于下次去客户那里更新。
首先在需要在启动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环境下私有仓库搭建的更多相关文章
- Kubernetes环境下的各种调试方法
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文介绍在Kubernetes环境下的调试方法,希望对读者有用.如果关 ...
- Kubernetes环境下如何运行Coherence缓存集群
Oracle官方出了一个如何在Docker环境下运行Coherence的技术文档,大家可以参考: https://github.com/oracle/docker-images/tree/master ...
- Kubernetes环境下调整WebLogic JVM基本参数
基于Kubernetes启动WebLogic后,发现JVM的最大heap size一直在700多M左右,通过 kubectl logs 察看pod启动状态,发现日志中并没有-Xms和-Xmx参数.日志 ...
- 开发环境下的 Kubernetes 容器网络演进之路
马蜂窝技术原创文章,更多干货请搜索公众号:mfwtech 使用 Docker+Kubernetes 来简化开发人员的工作流,使应用更加快速地迭代,缩短发布周期,在很多研发团队中已经是常见的做法. 如果 ...
- windows 环境下搭建docker私有仓库
windows 环境下搭建docker私有仓库 1.在公用仓库中pull仓库镜像 docker pull regitry 2.启动仓库镜像 //-d意思是后台运行,-p是做端口映射,这里是将本地的50 ...
- GitOps:Kubernetes多集群环境下的高效CICD实践
为了解决传统应用升级缓慢.架构臃肿.不能快速迭代.故障不能快速定位.问题无法快速解决等问题,云原生这一概念横空出世.云原生可以改进应用开发的效率,改变企业的组织结构,甚至会在文化层面上直接影响一个公司 ...
- 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建
使用.创造和分享 笔者曾经不思量力的思考过『是什么推动了互联网技术的快速发展?』这种伟大的命题.结论是,除了摩尔定律之外,技术经验的快速积累和广泛分享,也是重要的原因. 有人戏称,『写 Java,首先 ...
- CentOS7 Docker私有仓库搭建及删除镜像 【转】
文章来源:centos7 Docker私有仓库搭建及删除镜像 如果不想用私有镜像库,你可以用docker的库 https://hub.docker.com 环境准备 环境:两个装有Docker 17. ...
- Docker学习笔记 — Docker私有仓库搭建
Docker学习笔记 — Docker私有仓库搭建 目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2 和Mavan的管理一样,Dockers ...
随机推荐
- bzoj4602 [Sdoi2016]齿轮
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4602 [题解] 对于每组齿轮(u, v)连边,权值为y/x(反向边x/y) 那么直接dfs计 ...
- NYOJ 170 网络的可靠性 (数学)
题目链接 描述 A公司是全球依靠的互联网解决方案提供商,也是2010年世博会的高级赞助商.它将提供先进的网络协作技术,展示其"智能+互联"的生活概念,同时为参观者提供高品质的个人体 ...
- karma和jasmine的测试(包括angular测试)
本篇博客主要就是针对现在日新月异的技术和快速开发,测试被很多人忽略,其实在开发中如何保证代码的质量以及逻辑的完整性,测试显得十分重要,本文就是负责karma+jasmine来测试. 1.搭建测试的环境 ...
- Educational Codeforces Round 40 A B C D E G
A. Diagonal Walking 题意 将一个序列中所有的\('RU'\)或者\('UR'\)替换成\('D'\),问最终得到的序列最短长度为多少. 思路 贪心 Code #include &l ...
- TortoiseSVN与VisualSVN Server搭建SVN版本控制系统【转】
转自:http://www.cnblogs.com/xing901022/p/4399382.html 本片主要介绍如何搭建SVN版本控制系统,主要使用工具: 1 客户端:TortoiseSVN (小 ...
- python几个重要的函数(lambda,filter,reduce,map,zip)
一.匿名函数lambda lambda argument1,argument2,...argumentN :expression using arguments 1.lambda是一个表达式,而不是一 ...
- python memcache操作-安装、连接memcache
安装memecache wget http://memcached.org/latest tar -zxvf memcached-1.x.x.tar.gz cd memcached-1.x.x ./c ...
- 取消SecureCRT的右击粘贴功能
默认为选中时自动复制,右键粘贴 要取消的话在: Options->Global Options ...->Terminal 里面有个Mouse的选项块. Paste on Right/Le ...
- 新手学习selenium路线图(老司机亲手绘制)-学前篇【转载】
前言: 本来这篇是只在微信公众号(yoyoketang)上发布的,最近一搜,发现本很多人copy(copy公众号的,图片是加载不出来的)了,还没注明出处,不想多说什么,博客上也同步更新这篇吧! 最近群 ...
- docker run 的背后的故事(zz)
当利用docker run来创建并启动容器的时候,docker后台标准的操作包括: 1.检查本地是否存在指定的镜像,不存在就从公有仓库下载. 当我依瓢画葫芦的运行: sudo docker run - ...