当前位置: 首页 > news >正文

k8s 1.28.2 集群部署 docker registry 接入 MinIO 存储

文章目录

    • @[toc]
    • docker registry 部署
      • 生成 htpasswd 文件
        • 生成 secret 文件
      • 生成 registry 配置文件
      • 创建 service
      • 创建 statefulset
      • 创建 ingress
      • 验证 docker registry
    • docker registry 监控
    • docker registry ui

docker registry dockerfile

docker registry 配置文件

S3 storage driver

registry:2.8.3 Image hierarchy

docker registry 部署

生成 htpasswd 文件

<username> <password> 改成自己想配置的,如果密码有特殊字符,要用单引号包起来

docker run --rm \docker.m.daocloud.io/httpd:latest \htpasswd -Bbn <username> <password> > htpasswd
生成 secret 文件
kubectl create secret generic docker-registry-auth \-n registry \--from-file=htpasswd

生成 registry 配置文件

因为涉及到 MinIO 的 accesskeysecretkey,这里采用 secret 的方式来生成配置文件

---
apiVersion: v1
kind: Secret
metadata:name: docker-registry-cmnamespace: registry
stringData:config.yml: |-version: 0.1log:level: infofields:service: registrystorage:delete:enabled: truecache:blobdescriptor: inmemorys3:accesskey: wJpkHB8rznvZBRLfKmBzsecretkey: ZHIyklv5tktYvGR0iFqBiL9NKh7JKbhyDR9SNAYpregion: defaultregionendpoint: http://minio.api.devops.icuforcepathstyle: trueaccelerate: falsebucket: docker-registryencrypt: falsesecure: falsev4auth: truechunksize: 5242880multipartcopymaxconcurrency: 10http:addr: :5000debug:addr: :5001prometheus:enabled: truepath: /metricsheaders:X-Content-Type-Options: [nosniff]health:storagedriver:enabled: trueinterval: 10sthreshold: 3auth:htpasswd:realm: basic-realmpath: /auth/htpasswd
type: Opaque

创建 service

---
apiVersion: v1
kind: Service
metadata:labels:app.kubernetes.io/name: docker-registryname: docker-registry-svcnamespace: registry
spec:ports:- name: httpport: 5000targetPort: http- name: http-metricsport: 5001targetPort: http-metricsselector:app.kubernetes.io/name: docker-registrytype: ClusterIP

创建 statefulset

---
apiVersion: apps/v1
kind: StatefulSet
metadata:labels:app.kubernetes.io/name: docker-registryname: docker-registrynamespace: registry
spec:replicas: 1selector:matchLabels:app.kubernetes.io/name: docker-registryserviceName: docker-registry-svctemplate:metadata:labels:app.kubernetes.io/name: docker-registryspec:affinity:podAntiAffinity:preferredDuringSchedulingIgnoredDuringExecution:- podAffinityTerm:labelSelector:matchLabels:app.kubernetes.io/name: docker-registrytopologyKey: kubernetes.io/hostnameweight: 1containers:- image: docker.m.daocloud.io/registry:2.8.3livenessProbe:failureThreshold: 60initialDelaySeconds: 5periodSeconds: 10successThreshold: 1tcpSocket:port: httptimeoutSeconds: 1name: docker-registryports:- containerPort: 5000name: http- containerPort: 5001name: http-metricsreadinessProbe:failureThreshold: 60initialDelaySeconds: 5periodSeconds: 10successThreshold: 1tcpSocket:port: httptimeoutSeconds: 1resources:limits:cpu: 2000mmemory: 2.5Girequests:cpu: 100mmemory: 100MistartupProbe:failureThreshold: 60initialDelaySeconds: 5periodSeconds: 10successThreshold: 1tcpSocket:port: httptimeoutSeconds: 1volumeMounts:- mountPath: /etc/docker/registryname: config- mountPath: /authname: authterminationGracePeriodSeconds: 30volumes:- name: configsecret:secretName: docker-registry-cm- name: authsecret:secretName: docker-registry-auth

创建 ingress

没有 ingress 可以开 nodeport 来实现

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:annotations:nginx.ingress.kubernetes.io/proxy-body-size: 5Gname: docker-registrynamespace: registry
spec:ingressClassName: nginxrules:- host: registry.devops.icuhttp:paths:- backend:service:name: docker-registry-svcport:number: 5000path: /pathType: Prefix

验证 docker registry

/etc/docker/daemon.json 增加 registry 地址

"insecure-registries": ["ip:端口"]
# 或者
"insecure-registries": ["域名"]

登录 docker registry

docker login http://registry.devops.icu

修改 tag

docker tag docker.m.daocloud.io/registry:2.8.3 registry.devops.icu/registry:2.8.3

上传镜像

docker push registry.devops.icu/registry:2.8.3

docker registry 监控

grafana id:9621

在这里插入图片描述

prometheus 配置文件参考

    - job_name: docker-registrykubernetes_sd_configs:- role: endpointsrelabel_configs:- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name]regex: registry;docker-registry-svcaction: keep- source_labels: [__meta_kubernetes_pod_ip]regex: (.+)target_label: __address__replacement: ${1}:5001- source_labels: [__meta_kubernetes_endpoints_name]action: replacetarget_label: endpoint- source_labels: [__meta_kubernetes_pod_name]action: replacetarget_label: pod- source_labels: [__meta_kubernetes_service_name]action: replacetarget_label: service- source_labels: [__meta_kubernetes_namespace]action: replacetarget_label: namespace

docker registry ui

Github 项目地址:Joxit/docker-registry-ui-2.5.7

相关的变量和参数详见:available-options

---
apiVersion: v1
kind: Service
metadata:labels:app.kubernetes.io/name: docker-registry-uiname: docker-registry-ui-svcnamespace: registry
spec:ports:- name: httpport: 8080protocol: TCPtargetPort: 8080selector:app.kubernetes.io/name: docker-registry-uitype: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:labels:app.kubernetes.io/name: docker-registry-uiname: docker-registry-uinamespace: registry
spec:replicas: 1selector:matchLabels:app.kubernetes.io/name: docker-registry-uitemplate:metadata:labels:app.kubernetes.io/name: docker-registry-uispec:containers:- env:- name: SINGLE_REGISTRYvalue: "true"- name: SHOW_CATALOG_NB_TAGSvalue: "true"- name: REGISTRY_SECUREDvalue: "true"- name: NGINX_PROXY_PASS_URLvalue: http://docker-registry-svc.registry.svc.cluster.local:5000- name: NGINX_PROXY_HEADER_Authorizationvalue: $http_authorizationimage: joxit/docker-registry-ui:2.5.7imagePullPolicy: IfNotPresentname: docker-registry-uisecurityContext:fsGroup: 101runAsUser: 101
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: docker-registry-uinamespace: registry
spec:ingressClassName: nginxrules:- host: registry.ui.devops.icuhttp:paths:- backend:service:name: docker-registry-ui-svcport:number: 8080path: /pathType: Prefix
http://www.lryc.cn/news/484588.html

相关文章:

  • 常用的生物医药专利查询数据库及网站(很全!)
  • 「QT」几何数据类 之 QPolygon 多边形类
  • 写给初学者的React Native 全栈开发实战班
  • 工作和学习遇到的技术问题
  • 如何解决JAVA程序通过obloader并发导数导致系统夯住的问题 | OceanBase 运维实践
  • Git零基础到入门
  • HTTP 1.0、HTTP 1.1 和 HTTP 2.0 区别
  • 解决 ElSelect 数据量大导致加载速度慢
  • 在 CentOS 系统中,您可以使用多种工具来查看网络速度和流量
  • 分布式----Ceph部署
  • 使用 PyTorch 实现 AlexNet 进行 MNIST 图像分类
  • Python爬虫项目 | 一、网易云音乐热歌榜歌曲
  • 【Linux】HTTP协议和HTTPS加密
  • Linux编辑/etc/fstab文件不当,不使用快照;进入救援模式
  • ubuntu升级postgres
  • vue2在el-dialog打开的时候使该el-dialog中的某个输入框获得焦点方法总结
  • SpringBoot(十七)创建多模块Springboot项目
  • Vue.js 高质量翻页功能的完整开发指南
  • android dvr黑屏
  • css文字间距撑满横向距离
  • 【Unity基础】对比OnCollisionEnter与OnTriggerEnter
  • 算法训练(leetcode)二刷第二十五天 | *134. 加油站、*135. 分发糖果、860. 柠檬水找零、*406. 根据身高重建队列
  • Springboot 整合 itext 实现PDF文件合并,识别图片则转成PDF拼接
  • TypeScript 中的 ! 和 ? 操作符
  • 开源三代示波器的高速波形刷新方案开源,支持VNC远程桌面,手机,Pad,电脑均可访问(2024-11-11)
  • 谷歌推出设备内置人工智能,实时向手机用户发出诈骗电话警报
  • AI换人脸facefusion项目口型同步‌API化改造及部署
  • 移动端问题
  • Linux网络——网络初识
  • 从华为到创业公司