微服务探索之路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目录下。执行 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: wyb01
namespace: test
data:
.dockerconfigjson: ewoxxxxxxxxxxxxxxxxxxxxxxxTwq
type: kubernetes.io/dockerconfigjson
查看创建的Secret

创建部署的资源复制下面的配置根据需求修改
apiVersion: apps/v1
kind: Deployment
metadata:
name: wyb01
namespace: test
labels:
name: wyb01
spec:
replicas: 2
selector:
matchLabels:
name: wyb01
template:
metadata:
labels:
name: wyb01
spec:
imagePullSecrets:
- name: wyb01
containers:
- name: wyb01
image: ip:端口/wyb01/testzeta:1.0.0
ports:
- containerPort: 35678
imagePullPolicy: Always
---
kind: Service
apiVersion: v1
metadata:
name: wyb01
namespace: test
spec:
type: NodePort
ports:
- port: 35678
targetPort: 35678
NodePort: 30002
selector:
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)部署私有仓库的镜像的更多相关文章
- 微服务探索之路02篇liunx ubuntu服务器部署k8s(kubernetes)-kubernetes/dashboard
本章介绍所需环境:ubuntu18.04,建立在上一篇微服务探索之路01篇已经安装了docker的基础上. 1 替换k8s镜像源为国内镜像 进入目录 cd /etc/apt/sources.list. ...
- 微服务探索之路04篇k8s增加子节点,metrics资源监控,ingress-nginx域名配置及https配置
1 k8s增加子节点 1.1 子节点服务器安装docker,使用脚本自动安装 curl -fsSL https://get.docker.com | bash -s docker --mirror A ...
- 微服务探索之路01篇.net6.0项目本地win10系统docker到服务器liunx系统docker的贯通
本文介绍从创建 net6.0 项目运行在 windows 开发环境的 docker 然后正式部署至 liunx 服务器. 1 windows10 安装 docker 下载docker-desktop ...
- 庐山真面目之九微服务架构 NetCore 基于 Docker 基础镜像和挂载文件部署
庐山真面目之九微服务架构 NetCore 基于 Docker 基础镜像和挂载文件部署 一.简介 我们在上一篇文章<庐山真面目之八微服务架构 NetCore 基于 Dockerfile ...
- 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
原文:手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 本文你将学到什么? 本文将以原理+实战的方式,首先对& ...
- 后台管理微服务(二)——docker的使用
1. docker概述 1.1 Docker是什么 Docker 是软件工业的集装箱技术 Docker 是一个容器引擎,docker提供了一套完整的容器解决方案. Docker 是一个能将开发的程序自 ...
- 【微框架】之一:从零开始,轻松搞定SpringCloud微服务系列--开山篇(spring boot 小demo)
Spring顶级框架有众多,那么接下的篇幅,我将重点讲解SpringCloud微框架的实现 Spring 顶级项目,包含众多,我们重点学习一下,SpringCloud项目以及SpringBoot项目 ...
- .net core 微服务项目-介绍篇
项目介绍 1.各种方式连接API都会连接到 APIGateway 来进行统一的分发 Ocelot 2.当api需要授权时 需要请求授权服务 IdentityServer4 3.授权服务对请求进行调用u ...
- 【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发
<ASP.NET Core 微服务实战>译者序:https://blog.jijiechen.com/post/aspnetcore-microservices-preface-by-tr ...
随机推荐
- 【LeetCode】999. Available Captures for Rook 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 四方向搜索 日期 题目地址:https://leetc ...
- 【LeetCode】Integer to English Words 解题报告
Integer to English Words [LeetCode] https://leetcode.com/problems/integer-to-english-words/ Total Ac ...
- 【LeetCode】703. Kth Largest Element in a Stream 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 小根堆 日期 题目地址:https://leetco ...
- Pytorch 图片载入
目录 载入图片和坐标 Transforms Compose transforms 数据集的迭代 import os import torch import pandas as pd from skim ...
- 「物流跟踪管理系统」 · Java Swing + MySQL JDBC开发,美和易思结业考试机试试题
目录 文档说明: 一.语言和环境 二.技术要求 三.功能要求 四.数据库设计 五.具体要求及推荐实现步骤 六.注意事项 实现代码: 一.数据库 二.Java Swing com.ynavc.Bean ...
- ProtoBuf3语法指南(Protocol Buffers)_下
0.说明 ProtoBuf3语法指南, 又称为proto3, 是谷歌的Protocol Buffers第3个版本. 本文基于官方英文版本翻译, 加上了自己的理解少量修改, 一共分为上下两部分. 1.A ...
- RSA非对称加密算法实现:C#
RSA是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.当时他们三人都在麻省理工学院工作.RSA ...
- linux 开启和关闭防火墙
Ubuntu #查看防火墙状态 sudo ufw status #开启防火墙 sudo ufw enable #关闭防火墙 sudo ufw disable CentOs #查看防火墙状态 syste ...
- 分区命令(大于2TB的分区)
注意:parted命令在恢复误删除的分区时候,容易失败的几点: (1)只划分一个分区.恢复失败 (2)划分了2个分区,但是没有格式化.直接删除一个分区,恢复也会失败. (3)做删除操作时候,如果同时删 ...
- Linux中常用的监控性能的命令(sar、mpstat,vmstat, iostat,)详解
Linux中常用的监控性能的命令有: sar:能查看CPU的平均信息,还能查看指定CPU的信息.与mpstat相比,sar能查看CPU历史信息 mpstat:能查看所有CPU的平均信息,还能查看指定C ...