纯步骤
基于上次已经搭建好的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
23.24 K
4.68 K
下载
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
最近提交(Master分支:2 个月前 )
9e55afbb pull image from registry.goharbor.io instead of dockerhub Update testcase to support Docker Image Can Be Pulled With Credential Change gitlab project name when user changed. Update permissions count and permission count total Change webhook_endpoint_ui Signed-off-by: stonezdj <stone.zhang@broadcom.com> Co-authored-by: Wang Yan <wangyan@vmware.com> 9 天前
3dbfd422 Signed-off-by: wang yan <wangyan@vmware.com> 10 天前
Logo

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

更多推荐