k8s集群与gitlab registry连接

在之前的几篇部署文章中,我实现了gitlab部署配置、gitlab runner配置,registry仓库配置,kubectl与k8s集群联通。

链接: 中标麒麟7.4部署Gitlab

链接: 中标麒麟7.4为gitlab添加Registry

链接: 中标麒麟7.4部署gitlab-runner

链接: gitlab流水线与k8s集群的联通

目前整条流水线的自动化部署实现了

IDE->gitlab代码仓库->gitlab CICD->gitlab runner->本机 shell-> 本机docker->gitlab registry制品仓库->本级kubectl->K8S集群

目前发现集群无法正常从gitlab registry制品仓库中拉取docker打包好的制品。尝试解决这个问题。

1. k8s集群拉取镜像的策略开通

网络受限环境,首先需要保证对端口的访问是通畅的。并且,要保证k8s集群的每一台从节点都是通畅的。

可以使用telnet命令实现测试:

bash 复制代码
# ip 和 端口替换为你自己的gitlab部署IP,registry仓库端口
telnet 100.100.100.100 5050

但是中标麒麟7.4上默认没有telnet。考虑通过docker测试连通性。

bash 复制代码
docker login 我的ip:5050 -u root -p <your_gitlab_root_password>

在无法联通5050端口的情况下,你会看到如下内容

针对我的gitlab registry部署情况,这里面有两个问题,一是使用了https协议,二是连不上5050端口。

这种情况需要开通5050端口的策略。

2 修改为http协议

需要在所有k8s节点添加配置文件信息daemon.json

bash 复制代码
sudo vi /etc/docker/daemon.json

在内部添加"insecure-registries": "100.100.100.100:5050",既在这个ip和端口使用http协议

json 复制代码
{
  // 如果已有内容请保留,注意在原先内容后添加英文逗号
  "insecure-registries": ["100.100.100.100:5050"]
}

注意,这需要你在所有k8s节点执行一遍,包括主节点和所有从节点。后续的认证信息只需要在可以控制k8s的集群操作。

3 添加认证信息

在你的kubectl主机上,使用 kubectl create secret docker-registry 命令来创建一个类型为 docker-registry 的Secret,将你的仓库认证信息存入K8s集群:

bash 复制代码
kubectl create secret docker-registry gitlab-registry-secret \
  --docker-server=100.100.100.100:5050 \  # 你的GitLab Registry地址和端口
  --docker-username=your_username \        # 你的GitLab用户名
  --docker-password=your_password_or_token \ # 你的GitLab密码或个人访问令牌
  --docker-email=your_email@example.com \   # 你的邮箱地址
  --namespace=default                       # 指定Secret创建的命名空间,按需修改

在部署时,在deployment.yaml文件中添加对gitlab-registry-secret的饮用

yaml 复制代码
imagePullSecrets:
      - name: gitlab-registry-secret  # 此处的名字必须与你创建的Secret名称一致
相关推荐
lichenyang45311 小时前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器
lichenyang45311 小时前
Docker 学习笔记(三):Docker 网络、bridge、子网和容器互通
docker·容器
lichenyang45312 小时前
Docker 学习笔记(二):docker run 的参数到底在控制什么?
docker·容器
运维开发故事3 天前
基于 Arthas 的多集群在线诊断系统设计与实现
kubernetes
Patrick_Wilson5 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
探索云原生5 天前
K8s 1.36 这个 GA 特性,把 initContainer 拉模型的 hack 干掉了
ai·云原生·kubernetes
云恒要逆袭6 天前
运行你的第一个Docker容器
后端·docker·容器
Java之美6 天前
一次k8s升级引发的DevicePlugin注册失败
云原生·kubernetes
程序员老赵7 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程