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 ...
随机推荐
- SQLSERVER数据库置疑、可疑、脱机、单用户、紧急模式等的修复
数据库出现置疑.可疑.脱机.单用户.紧急模式主要是因为数据库的日志文件除了问题,2000和2008修复方式不一样,2008的修复脚本在2000中不适用,主要是不被2000识别. 假设数据库名为:eis ...
- HDU 2089 不要62 (数学)
题目链接 Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer). 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了 ...
- shelve,xml,re模块
一.shelve模块 shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型 import shelve ...
- codevs 线段树练习ⅠⅡⅢ
1080 线段树练习 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 一行N个方格,开始每个格子里都有 ...
- jQuery中操作样式
操作行间样式 // 获取div的样式 $("div").css("width"); $("div").css("color&quo ...
- Selenium2+python自动化25-js处理日历控件(修改readonly属性)【转载】
前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...
- 【cocos2d-js官方文档】九、cc.loader
概述 原来的cc.Loader被改造为一个单例cc.loader,采用了插件机制设计,让loader做更纯粹的事. 各种资源类型的loader可以在外部注册进来,而不是直接将所有的代码杂揉在cc.Lo ...
- ChannelFactory
通过前几篇的学习,我们简单了解了WCF的服务端-客户端模型,可以建立一个简单的WCF通信程序,并且可以把我们的服务寄宿在IIS中了.我们不禁感叹WCF模型的简单,寥寥数行代码和配置,就可以把通信建立起 ...
- poj1789 最小生成树
题目连接:http://poj.org/problem?id=1789 Description Advanced Cargo Movement, Ltd. uses trucks of differe ...
- CF 999B. Reversing Encryption【模拟/string reverse】
[链接]:CF [代码]: #include<bits/stdc++.h> #define PI acos(-1.0) #define pb push_back #define F fir ...