微服务探索之路03篇-docker私有仓库Harbor搭建+Kubernetes(k8s)部署私有仓库的镜像
目录:
- 微服务探索之路01篇.net6.0项目本地win10系统docker到服务器liunx系统docker的贯通
- 微服务探索之路02篇liunx ubuntu服务器部署k8s(kubernetes)-kubernetes/dashboard
1.简介
第一篇提到的docker官方提供了镜像仓库是公共的,私有的是需要收费的,所以我们需要在自己的服务器搭建私有镜像仓库,这样也比较安全。docker官方提供的registry可以快速的搭建,但是它没有界面管理和高级权限控制,所以本文采用由 VMware 公司中国团队为企业用户设计的 Registry server 开源项目Harbor
2.安装必须的依赖程序Docker Compose
- 执行
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.2.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
,下载Docker Compose到/usr/local/bin目录下。(可在github查看最新版本查看) - 执行
chmod +x /usr/local/bin/docker-compose
,赋予文件可执行权限 - 执行
docker-compose -v
,查看版本,如果正常出现版本号就是安装成功了
以上三个步骤执行完如下图:
3.安装Harbor
- 打开https://github.com/goharbor/harbor/releases,根据自己所需查找版本号下载相应的版本,这里直接使用目前最新版本
复制出来的链接如:https://github.com/goharbor/harbor/releases/download/v1.10.10/harbor-offline-installer-v1.10.10.tgz
- 找个目录下载上面找到的包,如切换到根目录下
cd
,然后执行下载wget https://github.com/goharbor/harbor/releases/download/v1.10.10/harbor-offline-installer-v1.10.10.tgz
;(如果下载速度很慢可以本地下载完再传到服务器) - 解压
tar zxvf 压缩包的名字
- 进入解压后的目录
cd harbor
- ,先备份一下主配置文件
cp harbor.yml harbor.yml.bak
,然后打开修改配置文件vim harbor.yml
;修改文件中的内容如下图:
6. 执行安装./install.sh
,出现如下界面就安装成功了
7. 打开ip:端口进入Harbor登录界面,账号默认是admin
,密码Harbor12345
密码在上面的harbor.yml配置文件中可以找到,安装的时候也可以直接修改掉。
- 创建私有仓库,先创建系统用户
然后添加项目成员名称要对应
修改docker配置
vim /etc/docker/daemon.json
增加私有仓库地址,插入一行:"insecure-registries": ["http://ip:端口"]
重启docker服务先执行
systemctl daemon-reload
再执行systemctl restart docker
,重启docker服务后需要执行一下docker-compose up -d
启动一下harbor
温馨提示:
以下涉及到的代码和镜像需要结合第一篇里的怎么打包镜像和推送镜像
4.客户端登录及推送镜像至私有仓库
- 登录
docker login http://ip:端口 --username 用户名 --password 密码
,登录遇到强制https错误,因为我们这边没有配置Harbor的https支持所以修改本地docker支持访问http
本地docker重启之后再重新执行登录,提示登录成功字样Succeeded如下图
2. 给镜像加上私有仓库标签docker tag 镜像名:版本号 ip:端口/项目名/镜像名:版本号
,如图
3. 执行推送 docker push ip:端口/项目名/镜像名:版本号
查看harbor镜像仓库可以看到刚才推送的镜像了
5.kubernetes(k8s)部署镜像
生成64位的Secret串
base64 -w 0 ~/.docker/config.json
(必须先执行登录docker才会生成config.json文件,这边我们是在服务器执行一下登录,因为本地的是win10登录之后没找到config.json在哪)
在k8s界面上直接创建新资源
上图代码如下:
apiVersion: v1
kind: Secret
metadata:name: wyb01namespace: test
data:.dockerconfigjson: ewoxxxxxxxxxxxxxxxxxxxxxxxTwq
type: kubernetes.io/dockerconfigjson
- 查看创建的Secret这个名称是下面部署服务资源的时候需要用到的在ymal里的imagePullSecrets的name
- 创建部署的资源复制下面的配置根据需求修改
apiVersion: apps/v1
kind: Deployment
metadata:name: wyb01namespace: testlabels:name: wyb01
spec:replicas: 2selector:matchLabels:name: wyb01template:metadata:labels:name: wyb01spec:imagePullSecrets:- name: wyb01 #这边就是上边的Secret,拉取私有镜像的秘钥containers:- name: wyb01image: ip:端口/wyb01/testzeta:1.0.0ports:- containerPort: 35678imagePullPolicy: Always---kind: Service
apiVersion: v1
metadata:name: wyb01namespace: test
spec:type: NodePortports:- port: 35678targetPort: 35678NodePort: 30002selector:name: wyb01
修改完之后上传执行
执行成功后你会发现pods里面多了两个因为上面的配置文件里replicas这个设置为2了,这边pod几个就是根据这个参数生成的,可以根据需求自己调节
- 查看集群对外端口号,我们在配置里设置了30002,由于这个端口已经被占用所以系统随机给了一个如下图访问的时候以系统给的为准
http://服务器ip:对外端口
成功之后访问自己的网站就可以看到网站内容了
本章结束
以下为遇到错误的记录和解决方案如下:
部署成功了访问的时候访问不到,原因是部署yaml文件里端口设置错误,容器端口设置应该跟生成镜像的Dockerfile里的端口保持一致,本文的dockerfile端口设置的是35678,所以配置里的端口都是35678;如果是从第一篇文章里复制的你可能就设置为3100,那yaml就得对应的设置为3100。
如果没有装Kubernetes Dashboard,可以直接创建yaml文件然后用
kubectl create -f xxxx.ymal
替代界面上创建资源的步骤执行
docker ps -a
可能看到很多个状态为exited的容器;如果都是没用的就执行docker rm $(sudo docker ps -qf status=exited)
清理他们
微服务探索之路03篇-docker私有仓库Harbor搭建+Kubernetes(k8s)部署私有仓库的镜像相关推荐
- dubbo协议_阿里P8架构师谈微服务架构:Dubbo+Docker+SpringBoot+Cloud
微服务架构 什么是微服务架构呢?简单说就是将一个完整的应用(单体应用) 按照一定的拆分规则(后文讲述)拆分成多个不同的服务,每个服务都能独立地进行开发.部署.扩展.服务于服务之间通过注入RESTful ...
- 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 项目完整源码下载 https://github ...
- 新一代微服务全家桶AlibabaCloud+Docker+JDK11阿里云容器部署零基础到项目实战
新一代微服务全家桶AlibabaCloud+Docker+JDK11阿里云容器部署零基础到项目实战 近年来,微服务架构已经成为企业标配,它以更加灵活的部署方式和高度解耦的架构设计,为企业带来了极大的业 ...
- 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)......
手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 原文: 手把手0基础项目实战(一)--教你搭建一套可自动化构 ...
- 0基础教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)
2019独角兽企业重金招聘Python工程师标准>>> 本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你 ...
- ASP.NET核心之路微服务第03部分:Identity
目录 介绍 文章系列 安装ASP.NET Core Identity 配置ASP.NET Core Identity 管理用户数据 使用Microsoft帐户,Google,Facebook等登录 结 ...
- 架构师图谱·微服务消息队列篇
1. 概述 "架构师图谱"是一个很宏大的命题,特别是优秀的架构师自身也是"由点到面再到图",一点点成长积累起来,尝试写这系列文章的目的更多的是结合自身的一些经验 ...
- Java微服务——SpringCloud实战篇2:整合Gateway、Config、Bus
Java微服务--SpringCloud实战篇2:整合Gateway.Config.Bus 如果小伙伴在阅读下列内容时,对于编写SpringCloud项目是零基础,那么请先阅读小编的另一篇博文:&qu ...
- 微服务实现不同登陆_微服务网关——实现篇
在<微服务网关--需求篇 >中,我们讨论了微服务网关的需求:而在<微服务网关--设计篇 >中,我们讨论了微服务网关的设计.本文将对微服务网关进行实现. 对于网关的开发,完全自研 ...
最新文章
- mysql数据库木马查杀_Linux系统木马后门查杀方法详解
- abap:常用TCODE
- 在unity 中,使用http请求,下载文件到可读可写路径
- 孔夫子告诉你:编程到底能教会你什么!
- Intellij IDEA 识别不了@Slf4j和log的问题
- 安卓html 750px,移动端750px页面适配
- html给文字设置自己下载的字体
- 爱情智慧:从恋爱走向婚姻必备的理念
- 计算机英语名词简释及省略解释
- 为什么计算机打不开优盘,电脑显示u盘但打不开 为什么u盘连电脑有显示但打不开...
- 软件架构-nginx详解上
- OpenGL照相机模型与增强现实
- 学习日记——8 20
- 《沉默的大多数》王小波——读后感
- CocosCreator之KUOKUO总结微信排行榜子域工程深坑
- 有关相位噪声的Offset Frequency
- i春秋部分web题解
- matplotlib eps格栅化,透明度被改变的问题 pdf->eps
- 企业信息化建设中微服务架构选择的必要性
- iOS学习—iOS长按手势事件
热门文章
- 【医学】基于小波变换DWT实现ECG信号心率计算附matlab代码
- python 绘图类_关于创建自定义绘图对象-python中的类,有很好的教程吗? - python...
- 【ROS学习笔记】11.服务数据(srv)的定义与使用
- word中表格文字居中
- CISP注册信息安全人员证书维持注意事项
- 师傅带徒弟学:Python Web之Django框架-关东升-专题视频课程
- 聚合黑科技(电脑端)
- redis再战之AKF的Z轴拆分和代理集群搭建《八》
- 【Golang】生成随机数,指定区间随机数
- 老猿学5G扫盲贴:中移动的5G计费架构中Nchf'服务化接口以及CHF中的AGF