Kubernetes-连接Harbor仓库拉取镜像

本文介绍如何在Kubernetes集群中配置Harbor私有镜像仓库,包括创建secret及部署nginx实例的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备工作
  1. Harbor 镜像仓库服务器,我的服务器IP是192.168.242.132;
  2. Kubernetes集群节点能通过【docker login】命令登录Harbor仓库,详细设置步骤参考这篇博文
开始配置
  1. 创建secret
kubectl create secret docker-registry secret-name --namespace=default \
--docker-server=http://192.168.242.132 --docker-username=username \
--docker-password=password --docker-email=xxx@xxx.xxx

secret-name: secret的名称
namespace: 命名空间
docker-server: Harbor仓库地址
docker-username: Harbor仓库登录账号
docker-password: Harbor仓库登录密码
docker-email: 邮件地址

img_c1fde9b8a34214416b95bca381e39897.png
create secret
  1. 创建yaml文件,我这里以nginx为例创建了一个
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: 192.168.242.132/library/nginx:1.15.1
        imagePullPolicy: Always
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  type: NodePort
  sessionAffinity: ClientIP
  selector:
    app: nginx
  ports:
    - port: 80
      nodePort: 30080

执行命令创建

kubectl create -f deploy-nginx.yaml 

创建完成后查看Pods

kubectl get pods
img_eb89b1177c1ba03e7b8abf71a72fe9fa.png
pods

最后可以通过浏览器来验证一下,yaml文件中定义对外暴露的端口是30080,现在在浏览器中可以输入Kubernetes集群任意节点的IP加上30080端口,我这里输入master节点的IP,http://192.168.242.136:30080/,可以正常看到nginx界面

img_f16e244a82b6ab0f4e26c3f3fa4811cc.png
image.png

那么这个镜像到底部署在哪个节点上呢,可以通过如下命令查看

kubectl get pods -n default -o wide
img_505e22b82c2b8fb68f9a13242d20c26b.png
查看pods
Kubernetes 集群中使用 Harbor 私有仓库镜像,需要完成以下几个关键步骤: ### 配置 containerd 或 Docker 以信任 Harbor 仓库 如果 Harbor 使用的是自签名证书,需要将证书添加到节点的容器运行时(如 containerd 或 Docker)的信任链中。例如,在 containerd 中,可以通过修改 `/etc/containerd/config.toml` 文件,在 `[plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.example.com".tls]` 配置段中指定证书路径: ```toml [plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.example.com".tls] ca_file = "/etc/containerd/certs.d/harbor.example.com/harbor-ca.crt" ``` 如果使用的是 Docker,则可以在 `/etc/docker/daemon.json` 中添加如下内容: ```json { "insecure-registries": ["core.harbor.domain:30002"] } ``` 完成配置后,需重启容器运行时服务以使更改生效[^3]。 ### 在 Kubernetes 中创建用于认证的 Secret Kubernetes 通过 `imagePullSecrets` 机制访问私有仓库。可以使用以下命令创建一个用于访问 Harbor 的 Secret: ```bash kubectl create secret docker-registry harbor-secret \ --docker-server=192.168.8.36 \ --docker-username=admin \ --docker-password=Harbor12345 ``` 该命令将在当前命名空间下创建一个名为 `harbor-secret` 的 Secret,用于 Harbor 仓库中的镜像[^2]。 ### 在 Pod 定义中引用 Secret 在部署 Pod 或 Deployment 时,需在 YAML 文件中指定 `imagePullSecrets` 字段,以引用之前创建的 Secret。例如: ```yaml apiVersion: v1 kind: Pod metadata: name: harbor-pod spec: containers: - name: nginx image: harbor.example.com/library/nginx:latest imagePullSecrets: - name: harbor-secret ``` 这样,Kubernetes镜像时将使用指定的 Secret 进行认证[^2]。 ### 验证镜像功能 可以通过部署一个简单的 Pod 来验证是否能够成功从 Harbor 镜像。例如,使用 `kubectl run` 命令启动一个临时容器: ```bash kubectl run nginx-pod --image=harbor.example.com/library/nginx:latest ``` 随后使用 `kubectl describe pod nginx-pod` 检查事件日志,确认是否成功镜像。 通过上述配置,Kubernetes 集群即可安全、可靠地从 Harbor 私有仓库镜像,并在部署过程中统一管理镜像来源,提升系统的安全性与可维护性[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值