部署Harbor镜像仓库并在k8s配置使用


一、下载所需软件包

1.docker-compose

docker-compose地址:https://github.com/docker/compose/releases/

[root@iZbp135usqaei1stvsrzxoZ fands]# wget -c https://github.com/docker/compose/releases/download/v2.9.0/docker-compose-linux-x86_64

2.harbor

harbor官方地址:https://goharbor.io/
harbor github地址:https://github.com/goharbor/harbor

[root@iZbp135usqaei1stvsrzxoZ fands]# wget -c https://github.com/goharbor/harbor/releases/download/v2.4.2/harbor-offline-installer-v2.4.2.tgz

二、安装docker-compose

1.安装docker

[root@iZbp135usqaei1stvsrzxoZ ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
[root@iZbp135usqaei1stvsrzxoZ ~]# yum -y install docker-ce
[root@iZbp135usqaei1stvsrzxoZ ~]# systemctl enable docker && systemctl start docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@iZbp135usqaei1stvsrzxoZ ~]# systemctl status docker 

2.配置docker-compose

[root@iZbp135usqaei1stvsrzxoZ fands]# mv docker-compose-linux-x86_64 /usr/bin/docker-compose
[root@iZbp135usqaei1stvsrzxoZ fands]# chmod +x /usr/bin/docker-compose 
[root@iZbp135usqaei1stvsrzxoZ fands]# docker-compose -v 
Docker Compose version v2.9.0

三、安装harbor

[root@iZbp135usqaei1stvsrzxoZ fands]# tar -zxvf harbor-offline-installer-v2.4.2.tgz -C /hqtbj/hqtwww/
[root@iZbp135usqaei1stvsrzxoZ fands]# cd /hqtbj/hqtwww/
[root@iZbp135usqaei1stvsrzxoZ hqtwww]# mv harbor harbor_workspace
[root@iZbp135usqaei1stvsrzxoZ hqtwww]# cd harbor_workspace/
[root@iZbp135usqaei1stvsrzxoZ harbor_workspace]# cp harbor.yml.tmpl harbor.yml

1.编辑harbor配置文件

[root@iZbp135usqaei1stvsrzxoZ harbor_workspace]# vim harbor.yml
#harbor的域名
hostname: registry.xxxx.cc
#默认http
http:
  port: 80
#开启https访问
https:
  port: 443
  #支持泛域名证书(例如:*.xxxx.cc.pem)
  certificate: /hqtbj/hqtwww/harbor_workspace/ssl/registry.xxxx.cc.pem
  private_key: /hqtbj/hqtwww/harbor_workspace/ssl/registry.xxxx.cc.key
#数据存放目录(实际存放镜像的地方,需要备份好)
data_volume: /hqtbj/hqtwww/data/harbor
...

2.加载harbor配置(重新加载配置文件,只要修改配置文件就需要执行)

[root@iZbp135usqaei1stvsrzxoZ harbor_workspace]# ./prepare 

3.开始安装harbor

只需要要在首次安装时执行,若重复执行则将丢失所有已有景象,慎重!!

[root@iZbp135usqaei1stvsrzxoZ harbor_workspace]# ./install.sh

在这里插入图片描述
安装完成后会在当前目录下出现一个docker-compose.yml文件,主要用于管理harbor这些容器的

4.docker-compose 命令启动/停止harbor

需要进入harbor工作目录下执行(含有docker-compose.yaml文件的目录)

#停止harbor所有容器
docker-compose stop
#启动harbor所有容器
docker-compose up -d 

四、配置nginx代理harbor

server {
        listen  80;
        server_name  registry.xxxx.cc;
        rewrite ^(.*)$  https://$host$1 permanent;
        }

server {
        listen 443 ssl;
        server_name  registry.xxxx.cc;
        location / {
          proxy_pass https://172.32.0.175:443;
        }
        
        #支持泛域名证书(例如:*.xxxx.cc.pem)
        ssl_certificate /etc/nginx/conf.d/cert/xxxx.cc/master/registry.xxxx.cc.pem;
        ssl_certificate_key /etc/nginx/conf.d/cert/xxxx.cc/master/registry.xxxx.cc.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
      }

通过域名访问:
在这里插入图片描述
默认用户名admin
默认密码Harbor12345

创建项目空间存放镜像
在这里插入图片描述

五、kubernetes配置harbor镜像仓库

1.创建harbor的secrets用于拉取镜像的凭证

#这里生成的secrets是访问harbor的用户名密码

[root@k8s-master1 ~]# kubectl create secret docker-registry --help

[root@k8s-master1 ~]# kubectl create secret docker-registry fatall-registry-secret --docker-username=admin --docker-password=123456 --docker-server=https://registry.xxxx.cc -n fat

[root@k8s-master1 ~]# kubectl get secrets -n fat
NAME                                        TYPE                                  DATA   AGE
default-token-ktkdt                               kubernetes.io/tls                     2      474d
fatall-registry-secret                      kubernetes.io/dockerconfigjson        1      12m

2.配置deployment拉取私有镜像时使用的secerts凭证

官网配置如下:
https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account
主要是在下载镜像时添加如下内容:
在这里插入图片描述

apiVersion: apps/v1
kind: Deployment
...
    spec:
      #设置下载harbor私有镜像时用的凭证
      imagePullSecrets:
        - name: fatall-registry-secret
      containers:
      - name: energy-order-api
        image: registry.xxxx.cc/hqt-registry-fat/energy-order-api:F-2153-20240703-18.37.52
        imagePullPolicy: IfNotPresent

### KubernetesHarbor拉取镜像时出现CrashLoopBackOff错误的解决方案 当遇到Pod处于`CrashLoopBackOff`状态时,这通常意味着容器启动后不久就崩溃了。对于从Harbor私有仓库拉取镜像的情况,可能涉及多个方面的问题。 #### 1. 检查镜像是否存在正确标记 确保目标镜像确实存在于Harbor仓库中,且版本标签无误。如果镜像不存在或标签不匹配,则可能导致无法成功拉取镜像而进入循环重启的状态[^2]。 #### 2. 验证Docker客户端配置 确认已按照规定添加了Docker可信镜像源地址,使得集群内的节点能够识别来自Harbor的自定义域名或IP地址作为合法的镜像来源[^1]。 #### 3. 创建应用正确的secret 为了使Kubernetes可以认证访问Harbor仓库,在创建Deployment之前应当先设置好相应的秘密对象(Secret),通过`imagePullSecrets`字段将其关联至对应的Pod模板规格内[^4]: ```yaml apiVersion: v1 kind: Secret metadata: name: regcred data: .dockerconfigjson: <Base64编码后的凭证> type: kubernetes.io/dockerconfigjson --- apiVersion: apps/v1 kind: Deployment spec: template: spec: containers: - name: myapp-container image: "my.harbor.repo/my-app:v1" imagePullSecrets: - name: regcred ``` #### 4. 查看日志排查原因 即使解决了镜像拉取问题,应用程序本身也可能存在缺陷从而引发异常退出。因此建议查看具体的Pod日志来进一步分析根本原因: ```bash kubectl logs pod-name -n namespace ``` 通过上述方法基本能定位修复由于镜像拉取失败所引起的`CrashLoopBackOff`现象。当然还需要根据实际情况调整相应参数以适应特定环境的要求。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知名运维:

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值