温馨提示×

centos k8s怎么对接仓库

小樊
72
2026-08-04 21:39:40
栏目: 智能运维

在 CentOS 上部署的 Kubernetes(k8s)对接镜像仓库,常见场景有 Docker Hub、Harbor、私有 Registry(HTTP/HTTPS)。下面按最常用方式给你一个完整说明。


一、常见仓库类型

仓库类型 示例
Docker Hub docker.io/library/nginx
Harbor harbor.example.com/project/image
私有 Registry registry.example.com/myapp
HTTP 仓库 http://192.168.1.10:5000

二、K8s 对接仓库的核心方式

✅ 最推荐:使用 imagePullSecrets
✅ 不推荐:改 container runtime(已逐步淘汰)


三、Docker Hub / 私有仓库(带账号密码)

1️⃣ 生成 docker-registry secret

kubectl create secret docker-registry myreg-secret \
  --docker-server=harbor.example.com \
  --docker-username=admin \
  --docker-password=Harbor12345 \
  --docker-email=admin@example.com

如果是 Docker Hub:

--docker-server=https://index.docker.io/v1/

2️⃣ Pod / Deployment 中使用

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      imagePullSecrets:
      - name: myreg-secret
      containers:
      - name: nginx
        image: harbor.example.com/library/nginx:1.25

✅ 这是生产环境标准做法


四、HTTP 私有仓库(无 HTTPS)

⚠️ Kubernetes 默认禁止 HTTP 仓库

1️⃣ 修改 container runtime(CentOS 常见)

✅ containerd(CentOS 7/8 主流)

编辑:

vim /etc/containerd/config.toml

找到或添加:

[plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.1.10:5000"]
  endpoint = ["http://192.168.1.10:5000"]

重启:

systemctl restart containerd

✅ Docker(老版本)

vim /etc/docker/daemon.json
{
  "insecure-registries": ["192.168.1.10:5000"]
}
systemctl restart docker

五、Harbor 仓库(最常见企业方案)

1️⃣ Harbor 开启 HTTPS(推荐)

image: harbor.example.com/project/app:v1

2️⃣ 创建 Harbor 账号并授权

  • 项目 → 成员 → 添加用户
  • 权限:拉取 / 推送

六、默认拉取 secret(高级)

让 所有 Pod 自动使用仓库

kubectl patch serviceaccount default \
  -p '{"imagePullSecrets": [{"name": "myreg-secret"}]}'

✅ 以后 Pod 不用再写 imagePullSecrets


七、常见问题排查

❌ ErrImagePull / ImagePullBackOff

kubectl describe pod xxx

常见原因:

  • secret 写错
  • server 地址不对
  • HTTP 仓库未配置 insecure
  • Harbor 证书不受信任

❌ x509 证书错误

cp harbor-ca.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust
systemctl restart containerd

八、快速对照表

场景 做法
Docker Hub imagePullSecrets
Harbor imagePullSecrets + HTTPS
HTTP 仓库 containerd / docker insecure
所有 Pod 默认 patch serviceaccount

如果你愿意,可以告诉我:

  • ✅ 仓库类型(Harbor / 私有 / Docker Hub)
  • ✅ CentOS 版本
  • ✅ container runtime(docker / containerd)
  • ✅ k8s 版本

我可以直接给你 一份可复制的配置文件。

0 踩