k8s 集群中运行 docker registry 镜像仓库

news/2024/11/9 5:06:36/

文章目录

    • @[toc]
    • 编写 Dockerfile
    • 编写 k8s yaml 文件
      • kubelet 配置静态 pod 路径
      • 启动静态 pod
      • docker 配置增加 registry 地址
      • 验证 docker registry 仓库

  • docker registry 相对于 harbor 来说,安全性会更低有点,不过对于一些内网场景(不需要和公网有互通)来说,其实 docker registry 更轻量化一些
  • 本文仅作学习参考,至于实际的选择,还是以各自实际需求和场景为准

编写 Dockerfile

  • 为了让 docker registry 支持认证登录,需要安装 htpasswd 命令
  • 为了方便后期维护 docker registry,增加镜像删除的功能
  • config.yml
version: 0.1
log:fields:service: registry
storage:cache:blobdescriptor: inmemoryfilesystem:rootdirectory: /var/lib/registry# 增加这里的 delete 和 enabled ## 启用 registry 镜像删除的功能delete:enabled: true
http:addr: :5000headers:X-Content-Type-Options: [nosniff]
health:storagedriver:enabled: trueinterval: 10sthreshold: 3
  • Dockerfile
FROM registry:2
RUN rm -f /etc/docker/registry/config.yml && \apk add apache2-utils && \apk cache clean
ADD ./config.yml /etc/docker/registry/
  • 构建镜像(需要构建成什么样的镜像名字,可以自己定义)
docker build -t registry:2_auth .

编写 k8s yaml 文件

  • 以静态 pod 的方式来部署,这里就直接使用 kind: Pod ,而不是其他的控制集
  • 不同 k8s 版本,apiVersion 版本可能会不一样,可以使用 kubectl explain pod.apiVersion 命令查看 pod 这个 kindapiVersion
---
apiVersion: v1
kind: Pod
metadata:# pod 名称前缀name: docker-registry# 指定 namespacenamespace: kube-system
spec:# 使用主机网络模式hostNetwork: truetolerations:- key: node-role.kubernetes.io/mastereffect: NoSchedule- key: "CriticalAddonsOnly"operator: "Exists"- key: "node.alpha.kubernetes.io/notReady"operator: "Exists"initContainers:# 这里注意修改成自己 build 的镜像名称- image: registry:2_auth# docker 容器的名字name: docker-registry-initimagePullPolicy: IfNotPresent# 配置用户名和密码command:- sh- "-c"- "htpasswd -Bbn admin adminpasswd > /auth/htpasswd"volumeMounts:- mountPath: /authname: docker-registry-authcontainers:# 这里注意修改成自己 build 的镜像名称- image: registry:2_auth# docker 容器的名字name: registryimagePullPolicy: IfNotPresent# 资源限制以自己的实际需求为准resources:limits:cpu: 3000mmemory: 3000Mienv:# registry 访问的端口,静态 pod 会暴露出来对应的端口- name: REGISTRY_HTTP_ADDRvalue: ":35000"# registry 存储路径- name: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORYvalue: /var/lib/registry# 以 htpasswd 的方式认证- name: REGISTRY_AUTHvalue: htpasswd# 注册认证- name: REGISTRY_AUTH_HTPASSWD_REALMvalue: Registry# 认证文件路径- name: REGISTRY_AUTH_HTPASSWD_PATHvalue: /auth/htpasswdvolumeMounts:- mountPath: /var/lib/registryname: docker-registry-storage- mountPath: /authname: docker-registry-authvolumes:# 将 registry 存储路径持久化到本地,path 指定的路径可以自己修改- name: docker-registry-storagehostPath:path: /data/k8s-data/registry-datatype: Directory# 认证文件的持久化访问为 emptyDir,每次重启都会重新生成- name: docker-registry-authemptyDir: {}

kubelet 配置静态 pod 路径

  • kubeadm 部署的,默认就配置了静态 pod 的存放路径,可以不进行下面的操作
  • 二进制部署的,一般没有配置静态 pod 的存放路径,需要 kubelet 增加 --pod-manifest-path 指定路径(提前创建好路径),然后重启 kubelet
--pod-manifest-path=/etc/kubernetes/manifests

启动静态 pod

创建持久化路径,这里的路径要和 yaml 文件里面的 volumes 下面的 docker-registry-storage 指定的 path 一致

mkdir -p /data/k8s-data/registry-data

将 yaml 文件放到上面 kubelet 配置的静态 pod 路径下,然后等 pod 启动(如果想快点,可以直接重启 kubelet 组件)

查看 pod 是否创建成功

kubectl get pod -n kube-system | grep registry

静态 pod 会以 yaml 文件里面的 name 加上当前节点 ip 作为 pod 的名称

docker-registry-172.72.0.95   1/1     Running   0          33s

docker 配置增加 registry 地址

vim /etc/docker/daemon.json

注意 json 语法格式

如果重启 docker 失败,日志有如下输出,表示 daemon.json 文件的格式有错误,注意最后是否需要加上逗号

unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '"' after object key:value pair

# 增加下面的信息
"insecure-registries": ["ip:端口"]

拿我的举个例子

{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],"insecure-registries": ["172.72.0.95:35000"],"exec-opts": ["native.cgroupdriver=systemd"],"data-root": "/approot/data/crt-data","log-driver": "json-file","log-opts": {"max-size": "200m","max-file": "5"},"storage-driver": "overlay2","storage-opts": ["overlay2.override_kernel_check=true"]
}

重启 docker 服务

systemctl restart docker

验证 docker registry 仓库

登录 docker registry 仓库,这里的用户名,密码以及登录的 ip 和端口都需要以自己的为准

docker login -u admin -p adminpasswd 172.72.0.95:35000

登录成功后,就会返回对应的 success 了

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded

修改镜像 tag,然后尝试上传镜像

docker tag registry:2_auth 172.72.0.95:35000/registry:2_auth

推送镜像到 docker registry

docker push 172.72.0.95:35000/registry:2_auth

返回类似如下的信息,说明推送成功了,可以去其他节点使用 docker login 登录(也需要 docker 配置文件加上 docker registry 的地址),然后直接 docker pull <仓库地址>:<仓库端口>/registry:2_auth

The push refers to repository [172.72.0.95:35000/registry]
f586723f1e87: Pushed
b14c705d6378: Pushed
6e5160500bc7: Pushed
744dbed40ffa: Pushed
f8dc4f9c98a6: Pushed
4984fbd72df1: Pushed
bb01bd7e32b5: Pushed
2_auth: digest: sha256:3b215dad8c5b7704b0b84a3ee46971314b8db9e65fb82a62204cf8497587377a size: 1781

http://www.ppmy.cn/news/126298.html

相关文章

apache安全之修改或隐藏版本信息

修改apache版本信息 在安装之前&#xff0c;编辑原文件httpd-2.2.31/include/ap_release.h文件如下&#xff1a; 40 #define AP_SERVER_BASEVENDOR "IIS" 41 #define AP_SERVER_BASEPROJECT "IIS HTTP Server" 42 #define AP_SERVER_BA…

Feign、Ribbon、Hystrix超时时间的详细解析

介绍 在微服务整个系统中&#xff0c;需要设置相应的服务调用超时时间来保护服务&#xff0c;常见的调用链为 网关 -> 服务A -> 服务B 常见的设置超时时间的几个方面: 网关(gateway、zuul)服务间的调用(feign)服务间的熔断(hystrix)服务间的负载均衡(ribbon) feign …

HP工作站如何在BIOS下开启、关闭安全芯片

开机连续点击F10进入到BIOS&#xff0c;选择“Security”—“Device security”按回车键进入。 2将“Embedded Security Device”右边的状态按左右方向键更改为“Device hidden”状态为关闭&#xff1b;更改为“Device available”状态为开启。

Z820服务器重装,惠普Z820工作站特点介绍

【IT168 资讯】双路 HP Z820 工作站在行业可扩展性最高的机箱中&#xff0c;提供了卓越性能、屡获殊荣的工业设计、以及免工具可维护性。凭借下一代英特尔至强处理器、高达16个处理内核和最新专业显卡&#xff0c;您将可以轻松完成有史以来要求最苛刻的项目。 无可比拟的设计 从…

HP工作站进入BIOS

开机后&#xff0c;按住键盘的Esc键 之后参考&#xff1a; https://jingyan.baidu.com/article/ff411625cb7d0c12e5823770.html F10进入BIOS中选择Advanced —Boot Options (可以使用鼠标&#xff09; 第二步 略 第三步&#xff1a;选择“UEFI Boot Order”或“Legacy Boot O…

惠普计算机工作站,惠普工作站的具体分类有哪几种呢?

河南惠普工作站&#xff0c;是指连接到网络的计算机。 工作站的具体分类&#xff1a; 工作站根据软、硬件平台的不同&#xff0c;一般分为基于RISC架构的UNIX系统工作站和基于Windows、Intel的PC工作站。 UNIX工作站是一种高性能的工作站&#xff0c;具有强大的处理器和优化的内…

惠普z系列服务器,惠普Z8/Z6/Z4 G4新款工作站/服务器主机:Quadro P6000 48TB存储

随着英特尔在高端至强的完整部署&#xff0c;各家工作站平台也将迎来一次重大换血&#xff0c;在即将开幕的IBC 2017(国际广播电视设备展览会)上&#xff0c;HP(惠普)将宣布推出新一代 Z 系列工作站。 新一代Z系列包括Z8 G4、Z6 G4和Z4 G4三款&#xff0c;用于替代现有的Z840、…

hp z230 图形工作站 matlab,惠普推出Z230塔式和HP SFF小尺寸工作站

【IT168 资讯】惠普近日推出了下一代工作站产品 HP Z230 Tower和SFF。Z230 Tower沿用了塔式机箱&#xff0c;SFF则有着更小的外观尺寸。同一时间推出的还有Z系列显示器&#xff0c;可作为工作站的最佳拍档。 HP SFF(小尺寸外形Small Form Factor缩写)机身非常小巧&#xff0c;体…