Kubernetes拉取harbor私有仓库问题

k8s部署文件的Deployment镜像地址是自己之前部好的harbor私有仓库,执行apply命令之后,查看pod状态提示镜像拉取失败。进入harbor查看仓库的访问级别。
在这里插入图片描述项目仓库的访问级别为公有的可以直接拉取。访问的项目仓库的访问级别为私有,所以不能直接拉取镜像。需要在k8s中配置secret。

直接用命令创建,替换掉括号和里面的内容:

kubectl create secret docker-registry (secretName) --docker-server=(registryAddress>)–docker-username=(username) --docker-password=(password) --docker-email=(email)

secretName:创建serect的名字。
registryAddress:镜像仓库地址。
username:仓库账号。
password:仓库密码。
email:email地址。

在需要拉取的yml中添加secret引用:

  imagePullSecrets:
        - name: secretname

如:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: demo-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: demo
    spec:
      containers:
        - name: demo
          image: 192.168.1.1/demo/demo-app:latest
          ports:
            - containerPort: 8088
          env:
            - name: TZ
              value: Asia/Shanghai
      imagePullSecrets:
        - name: demo-secret

执行:

kubectl apply -f demo.yml

就可以正常拉取私有仓库镜像了。

### Kubernetes 中部署 Harbor 容器镜像仓库的指南 #### 准备工作 在开始之前,确保所有节点的操作系统防火墙已被关闭并禁用[^4]。这可以通过执行以下命令完成: ```bash systemctl stop firewalld && systemctl disable firewall ``` 时间同步对于分布式系统的正常运行至关重要。因此,在集群中的所有节点上配置时间同步也是必要的。 #### 下载 Harbor 安装包 Harbor 是一个开源的企业级容器镜像仓库解决方案。可以从官方提供的链接下载离线安装程序[^3]。以下是具体的步骤: 1. 使用 `wget` 命令从 Google Cloud Storage 获最新版本的 Harbor 安装文件: ```bash wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.1.tgz ``` 2. 解压下载的 `.tgz` 文件: ```bash tar -zxvf harbor-offline-installer-v1.8.1.tgz cd harbor ``` #### 编辑配置文件 解压完成后会发现一个名为 `harbor.yml.tmpl` 的模板文件。将其复制为 `harbor.yml` 并根据实际需求修改其中的内容。主要关注以下几个部分: - **hostname**: 设置外部访问的域名或 IP 地址。 - **admin_password**: 修改默认管理员密码。 - **data_volume**: 数据存储路径设置。 - **log_level**: 日志级别调整(可选 debug 或 info)。 #### 初始化 Harbor 环境 通过运行脚本来初始化所需的数据库和其他服务组件。此过程可能涉及 Notary 和 Clair 插件的选择性启用[^2]: ```bash ./prepare ``` 随后可以启动整个 Harbor 服务栈: ```bash ./install.sh --with-notary --with-clair --with-chartmuseum ``` #### 将 Harbor 整合到 Kubernetes 集群 为了让 Kubernetes Pod 能够来自私有 Harbor 仓库镜像,需向 kubelet 提供认证凭证。具体方法如下: 1. 创建 Docker 登录 Secret 对象以便后续使用 kubectl apply 应用至目标命名空间; ```yaml apiVersion: v1 kind: Secret metadata: name: regcred namespace: default type: kubernetes.io/dockerconfigjson data: .dockerconfigjson: <base64-encoded-json> ``` 2. 更新 Deployment YAML 文件内的 imagePullSecrets 字段指向上述 secret 名称即可实现自动化身份验证流程支持。 #### 监控与日志管理 为了便于后期维护和排查问题,建议开启 Log Collector 功能来集中化处理各模块产生的事件记录数据流。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值