纯步骤
基于上次已经搭建好的K8S多节点,搭建K8S的harbor私有仓库


开一台服务器,搭建harbor

一:harbor服务端配置

需安装 Python、 Docker 和Docker Compose、harbor
1:基本环境配置

固定IP地址
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改并添加:
dhcp改为static
添加:
IPADDR=192.168.195.80
NETMASK=255.255.255.0
GATEWAY=192.168.195.2
DNS1=192.168.195.2

# systemctl restart network
# systemctl stop NetworkManager
# systemctl disable NetworkManager
# iptables -F
关闭核心防护
# setenforce 0
# vi /etc/selinux/config
改为 SELINUX=disabled
# hostnamectl set-hostname harbor
# su

2:首先部署docker环境

安装依赖包
# yum install -y yum-utils device-mapper-persistent-data lvm2
设置阿里云镜像源
# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# yum install docker-ce -y
# systemctl start docker
# systemctl enable docker

镜像加速配置
现在需要从公有仓库里拉取镜像,由于长城防火墙及网络问题,必须使用镜像加速,才能快速拉取镜像
访问网站https://help.aliyun.com/document_detail/60750.html
生成加速地址"https://elxy356o.mirror.aliyuncs.com"

# cd /etc/docker
# tee /etc/docker/daemon.json <<-'EOF'
 {
"registry-mirrors": ["https://elxy356o.mirror.aliyuncs.com"]
  }
EOF

# ls 可看到daemon.jsp

# systemctl daemon-reload      重新加载

开启路由转发
# vim /etc/sysctl.conf
末行插入:
net.ipv4.ip_forward=1

# sysctl -p  生效
重启网络和docker
# service network restart
# systemctl restart docker

docker引擎环境部署完成

3:下载harbor安装程序、下载compose

#rz -E
把harbor-offline-installer-v1.2.2.tgz、docker-compose包复制过来
# chmod +x docker-compose
# mv docker-compose /usr/bin
# tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
# cd /usr/local/harbor
# ls
修改harbor配置文件(改为harbor IP地址)
# vim harbor.cfg
改为:hostname = 192.168.195.80

启动安装
# sh install.sh

在这里插入图片描述
修改配置文件
在这里插入图片描述
安装完成,有一个网址http://192.168.195.80,就是harbor的图形界面
在这里插入图片描述
登录进去,创建项目project
账号是admin
密码是Harbor12345
账户和密码在配置文件中已经定义,可以查看配置文件
在这里插入图片描述
创建一个项目
在这里插入图片描述

二:Node节点 配置

1:node节点配置连接私有仓库
node1 node2节点同步操作

注意,后面的逗号不要忘了添加
# vim /etc/docker/daemon.json
添加:
"registry-mirrors": ["https://05vz3np5.mirror.aliyuncs.com"],
"insecure-registries":["192.168.195.80"]

# systemctl restart docker
pod管理的好处,重启后docker容器状态还是UP状态

2:node节点登录harbor私有仓库
注意:在用harbor私有仓库下载镜像,创建资源时,要保证node处于harbor登陆状态

# docker login 192.168.195.80
输入 admin
输入 Harbor12345

在这里插入图片描述
在这里插入图片描述
示例1:在node1节点上传镜像到私有仓库,供其他node节点下载

3:node1节点上传镜像到harbor

从公有仓库下载镜像 (相当于原材料)
# docker pull tomcat:8.0.52
打标签
# docker tag tomcat:8.0.52 192.168.195.80/project/tomcat
推送到私有仓库
# docker push 192.168.195.80/project/tomcat

在harbor图形界面查看,可看到project项目中已上传镜像192.168.195.80/project/tomcat
在这里插入图片描述
在这里插入图片描述
4:node2节点从私有仓库下载192.168.195.80/project/tomcat镜像

测试 下载node1刚刚上传到私有仓库的镜像
# docker pull 192.168.195.80/project/tomcat
# docker images

在这里插入图片描述
在harbor图形界面查看,可看到project项目中镜像192.168.195.80/project/tomcat 被下载1次
在这里插入图片描述
示例2: 用yaml文件格式创建tomcat(用harbor私有仓库拉取镜像)

5:node节点查看并复制用户凭证序列号

# cat .docker/config.json | base64 -w 0
复制凭证序列号
ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjE5NS44MCI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xOS4wMy44IChsaW51eCkiCgl9Cn0=

(1)删除上面示例中的tomcat镜像
(2)两个node节点的用户凭据是相同的,因为登录的是同一个harbor私有仓库
在这里插入图片描述
在这里插入图片描述

三:master节点配置

6:在master节点创建secret资源

# vim registry-pull-secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: registry-pull-secret
data:
  .dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjE5NS44MCI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xOS4wMy44IChsaW51eCkiCgl9Cn0=
type: kubernetes.io/dockerconfigjson
    
创建secret资源
# kubectl create -f registry-pull-secret.yaml
查看secret资源
# kubectl get secret

在这里插入图片描述
在这里插入图片描述
7:在master节点创建pod资源
从harbor私有仓库中下载镜像

# vim tomcat-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-tomcat
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: my-tomcat
    spec:
      imagePullSecrets:
      - name: registry-pull-secret
      containers:
      - name: my-tomcat
        image: 192.168.195.80/project/tomcat
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: my-tomcat
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080
    nodePort: 31111
  selector:
    app: my-tomcat

在这里插入图片描述

创建pod资源
# kubectl create -f tomcat-deployment.yaml
# kubectl get pods -w

详细查看pod资源(包含创建过程)
# kubectl describe pod my-tomcat-559834-nprvn
# kubectl describe pod my-tomcat-435743-fdbscx

# kubectl get pod -o wide
# kubectl get pods,svc,deployment

在这里插入图片描述
详细查看pod(包含创建过程)
#kubectl describe pod my-tomcat-7f9c8876b4-cjs2p
#kubectl describe pod my-tomcat-7f9c8876b4-gh6ss

在这里插入图片描述
在这里插入图片描述
查看pod资源创建到哪个node节点
在这里插入图片描述

在harbor图形界面查看,可看到project项目中镜像192.168.195.80/project/tomcat 显示被下载3次

在这里插入图片描述

遇到问题:
第一次创建pod资源时出error
pod资源为Pending状态
在这里插入图片描述
详细查看pod(包含创建过程),创建失败
#kubectl describe pod my-tomcat-7f9c8876b4-cjs2p
#kubectl describe pod my-tomcat-7f9c8876b4-gh6ss

在这里插入图片描述
查看节点状态,变成了NotReady状态
在这里插入图片描述
经检查:是因为keepalived的VIP消失了,重新启动nginx和keepalived后,负载均衡Lb1的VIP地址有了,再次查看节点状态 变成了Ready状态,随之,pod资源也创建成功了

GitHub 加速计划 / ha / harbor
10
3
下载
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
最近提交(Master分支:4 个月前 )
60798a49 Signed-off-by: stonezdj <stone.zhang@broadcom.com> 1 天前
cc6ace18 * chore(deps): bump github.com/beego/beego/v2 from 2.2.1 to 2.3.4 in /src Bumps [github.com/beego/beego/v2](https://github.com/beego/beego) from 2.2.1 to 2.3.4. - [Release notes](https://github.com/beego/beego/releases) - [Changelog](https://github.com/beego/beego/blob/master/CHANGELOG.md) - [Commits](https://github.com/beego/beego/compare/v2.2.1...v2.3.4) --- updated-dependencies: - dependency-name: github.com/beego/beego/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * add SessionReleaseIfPresent for session Store implenmentation Signed-off-by: yminer <miner.yang@broadcom.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: yminer <miner.yang@broadcom.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: yminer <miner.yang@broadcom.com> 1 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐