k8s - docker/containerd拉取私有仓库镜像

本文介绍了在Kubernetes(k8s)集群使用Containerd运行时如何从内部Harbor私有仓库拉取镜像。针对两种方案进行了讨论,重点在于详细解释了如何为每个用户设置namespace级别的secret,以实现用户隔离并解决http TLS验证问题。通过创建用户、Base64编码密码、创建secret和pod YAML配置,成功实现了在Containerd中拉取私有仓库镜像。
摘要由CSDN通过智能技术生成

背景:
公司内部搭建Harbor作为镜像仓库,k8s底层为containerd运行时,此时需要拉取私有仓库镜像有两种方案:

  • 第一种,在containerd的配置文件内配上harbor的admin管理员账号的认证信息,那么不管仓库是否是私有,管理员都可以拉取该仓库下的镜像。但是有个弊端,就是如果不同用户的话,只要知道别人的仓库名称和镜像名称等信息,那么底层实际上是可以用别人仓库下的镜像的,这就无法做到用户隔离了。
  • 第二种,每个用户都对应一个namespace,在namespace下创建secret用于记录该用户的harbor账号及密码,用于拉取镜像时通过验证。这里大家可以参考一下官网的文档
    • https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/pull-image-private-registry/
    • https://kubernetes.io/zh-cn/docs/concepts/configuration/secret/#secret-types

我这边的需求是第二种才满足,但是看官方文档上的,是对docker运行时的应用,这就导致在containerd运行时的时候,需要踩一些坑。

问题点1:harbor走的是http,而不是https,所以需要解决tls验证的问题
解决方法:
在这里插入图片描述

特别注意!!!:这里的配置文件,你的k8s集群上每个节点都要改,不要漏了

vi /etc/containerd/config.toml
修改配置文件


这里我把配置文件直接贴进来

disabled_plugins = []
imports = []
oom_score = 0
plugin_dir = ""
required_plugins = []
root = "/var/lib/containerd"
state = "/run/containerd"
temp = ""
version = 2

[cgroup]
  path = ""

[debug]
  address = ""
  format = ""
  gid = 0
  level = ""
  uid = 0

[grpc]
  address = "/run/containerd/containerd.sock"
  gid = 0
  max_recv_message_size = 16777216
  max_send_message_size = 16777216
  tcp_address = ""
  tcp_tls_ca = ""
  tcp_tls_cert = ""
  tcp_tls_key = ""
  uid = 0

[metrics]
  address = ""
  grpc_histogram = false

[plugins]

  [plugins."io.containerd.gc.v1.scheduler"]
    deletion_threshold = 0
    mutation_threshold = 100
    pause_threshold = 0.02
    schedule_delay = "0s"
    startup_delay = "100ms"

  [plugins."io.containerd.grpc.v1.cri"]
    device_ownership_from_security_context = false
    disable_apparmor = false
    disable_cgroup = false
    disable_hugetlb_controller = true
    disable_proc_mount = false
    disable_tcp_service = true
    enable_selinux = false
    enable_tls_streaming = false
    enable_unprivileged_icmp = false
    enable_unprivileged_ports = false
    ignore_image_defined_volumes = false
    max_concurrent_downloads = 3
    max_container_log_line_size = 16384
    netns_mounts_under_state_dir = false
    restrict_oom_score_adj = false
    sandbox_image = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RayCheungQT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值