k8s —— Kubernetes私服Registry&Harbor(本地镜像仓库)

Kubernetes私服

一:Registry

docker官方在Docker hub上提供了registry的镜像(详情),我们可以直接使用该registry镜像来构建一个容器,搭建我们自己的私有仓库服务。

在生产环境下我们可以通过搭建本地的私有镜像仓库(docker registry 镜像可以在国内直接下载)来解决需要经常向国外下载镜像问题,以此方便我们的工作。

1.部署docker registry

参考下面步骤:

–拉取registry镜像(master节点部署)

[root@master ~]# docker pull docker.io/registry

–启动registry

[root@master ~]# docker run -d -p 5000:5000 --name=registry --restart=always --privileged=true -v /home/data/registrydata:/tmp/registry registry

注:/home/data/registrydata 后续镜像仓库中的全部数据都会保存在这个挂载目录下。
而里边的 /tmp/registry 在下载的镜像中对应的是:/var/lib/registry,如果不确定是那个目录,建议 docker inspect registry 查看一下Image相关信息。

2.更改名称并进行推送

[root@node-1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest f35646e83998 8 days ago 133MB
k8s.gcr.io/kube-proxy v1.19.2 d373dd5a8593 4 weeks ago 118MB
[root@node-1 ~]# docker tag nginx:latest 10.0.1.10:5000/nginx:v1
[root@node-1 ~]# docker push 10.0.1.10:5000/nginx:v1
The push refers to repository [10.0.1.10:5000/nginx]
Get https://10.0.1.10:5000/v2/: http: server gave HTTP response to HTTPS client
报错了,不要着急
[root@node-1 ~]# cat /etc/docker/daemon.json
{ "insecure-registries":["10.0.1.10:5000"] }
[root@master ~]# vim /etc/systemd/system/multi-user.target.wants/docker.service
--insecure-registry http://10.0.1.86:5000
[root@node-1 ~]# docker push 10.0.1.10:5000/nginx:v1

二:Harbor

1.Harbor介绍

Harbor仓库是VMware公司开源的容器镜像仓库, Harbor是在Docker Registry上进行了相应拓展, 而此得到更广泛的应用,。添加的拓展包括:WebGUI页面、RABC角色访问控制、AD/LDAP集成以及审计日志,足以满足基本企业需求。

2.Harbor主要功能

1. RABC基于角色访问控制
在企业中, 通常有不同的开发团队负责不同的项目,而镜像像代码一样, 每个人角色不同需求也不同, 因此就需要访问权限控制, 根据角色分配相应的权限。
如:开发人员需要对项目构建这就用到读写权限(pull/push), 测试人员只需要读权限(pull), 运维一般管理镜像仓库,具备权限分配能力,项目经理具备所有权限。
在这里插入图片描述

  • Guest: 对指定项目只读权限
  • Developer: 开发人员, 读写项目权限
  • Admin: 项目管理, 所有权限
  • Anonymous: 当用户未登陆时,该用户视为匿名, 不能访问私有项目, 只能访问公开项目

2.镜像复制
将仓库中的镜像同步到远程Harbor, 类似于MySQL的主从复制功能

3.镜像删除和空间回收
Harbor支持web界面删除镜像, 释放空间

4.审计
对仓库的所有操作都有记录

5. REST API
具备完整的API, 方便与外部集成

3.Harbor高可用方案

方案一: 共享存储
多个实例共享数据共享一个存储, 任何一个实例持久化存储的镜像, 其他实例都可以读取到, 通过前置负载均衡分发请求
在这里插入图片描述

方案二: 复制同步
利用镜像复制功能, 实现双向复制保持数据一致在这里插入图片描述

4.Harbor组件

    组件                      功能                      
harbor-adminserver         配置管理中心                  
harbor-db                  MySQL数据库                
harbor-jobservice          负责镜像复制                  
harbor-log                 记录操作日志                  
harbor-UI                  Web管理页面和API             
nginx                      前端代理, 负责前端页面和镜像的上传/下载/转发
redis                      会话                      
registry                   镜像             

5.harbor部署

环境

10.0.1.13 harbor-master
10.0.1.14 harbor-client

部署harbor仓库,见下文
安装docker(参考–Docker容器化技术理解和使用)
安装docker-compose(参考–详解Docker Compose
PS.Harbor是通过docker compose来部署的,这也是为什么在装Harbor之前,需要安装docker-compose。

[root@harbor ~]# curl -L https://mirrors.aliyun.com/docker-toolbox/linux/compose/1.21.2/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
[root@harbor ~]# chmod a+x /usr/local/bin/docker-compose

安装最新harbor

[root@harbor ~]# wget https://github.com/goharbor/harbor/releases/download/v2.1.0/harbor-offline-installer-v2.1.0.tgz
[root@harbor ~]# tar xf harbor-offline-installer-v2.1.0.tgz -C /usr/local/
修改配置文件,将hostname改为ip地址,关闭https功能
[root@harbor ~]# cd /usr/local/harbor/
[root@harbor harbor]# cp harbor.yml.tmpl harbor.yml
[root@harbor harbor]# vim harbor.yml

在这里插入图片描述

安装

[root@harbor harbor]# ./prepare
[root@harbor harbor]# ./install.sh

服务管理

[root@harbor harbor]# docker-compose up -d 启动
[root@harbor harbor]# docker-compose stop 停止
[root@harbor harbor]# docker-compose restart 重新启动

6.浏览器访问web页面

浏览器输入 http://IP
用户名:admin
密码:Harbor12345(见配置文件)
在这里插入图片描述

三:Harbor使用

1.创建用户

创建–设置用户名邮箱,填写密码即可

2.创建项目
在这里插入图片描述

为项目添加管理用户
–同创建用户

3.仓库管理

用户添加复制的目标仓库,一般添加远程可用的仓库,可以使用docker官方仓库,也可以放其他仓库地址。
在这里插入图片描述

4.创建复制规则

在这里插入图片描述

另外一台机器:(这里选用的是kubernetes集群master节点或者是安装了docker的节点)

修改docker启动文件
[root@master ~]# vim /etc/systemd/system/multi-user.target.wants/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 10.0.1.13 --containerd=/run/containerd/containerd.sock
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart docker
登出原有账户:
[root@master ~]# docker logout
Removing login credentials for https://index.docker.io/v1/
登录私有仓库:
[root@master ~]# docker login 10.0.1.13
Username: vcc
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded

5.上传项目到私仓

[root@master ~]# docker tag redis:latest 10.0.1.13/kubernetes/redis:v1
[root@master ~]# docker push 10.0.1.13/kubernetes/redis:v1

浏览器查看,看的镜像说明成功!

harbor 企业扩展应用

在k8s集群使用harbor私有仓库中的镜像

1.使用命令创建一个secret(用来保存敏感信息密码秘钥等)

--docker-server       仓库地址
--docker-username     仓库用户名
--docker-password     仓库用用户名的密码
[root@master ~]# kubectl create secret docker-registry regcred --docker-server=10.11.67.119 --docker-username=victory --docker-password=QianFeng@123

2.创建pod的yaml文件

[root@master ~]# cat nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: vcc
labels:
app: vcc
spec:
containers:
- name: cvv
image: 10.11.67.119/vcc/nginx@sha256:2963fc49cc50883ba9af25f977a9997ff9af06b45c12d968b7985dc1e9254e4b
ports:
- containerPort: 80
imagePullSecrets:
- name: regcred

3.创建pod

[root@master ~]# kubectl create -f nginx.yaml

4.查看pod

[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
vcc 1/1 Running 0 10m
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值