09-K3S 安装-私有镜像仓库配置参考

这篇具有很好参考价值的文章主要介绍了09-K3S 安装-私有镜像仓库配置参考。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 私有镜像仓库配置参考

K3s 默认使用 containerd 作为容器运行时,所以在 docker 上配置镜像仓库是不生效的[ 除非将容器运行时环境设置为Docker,本篇以containerd作为容器运行时环境 ]

K3s registry 配置目录为: /etc/rancher/k3s/registries.yaml。K3s 启动时,K3s 会检查 /etc/rancher/k3s/ 中是否存在 registries.yaml 文件,并指示 containerd 使用文件中定义的镜像仓库。如果你想使用一个私有的镜像仓库,那么你需要在每个使用镜像仓库的节点上以 root 身份创建这个文件。

请注意,server 节点默认是可以调度的。如果你没有在 server 节点上设置污点,那么将在它们上运行工作负载,请确保在每个 server 节点上创建 registries.yaml 文件。

1.1 镜像仓库配置文件

K3s 镜像仓库配置文件由两大部分组成:mirrorsconfigs

  • Mirrors 是一个用于定义专用镜像仓库的名称和 endpoint 的指令
  • Configs 部分定义了每个 mirror 的 TLS 和证书配置。对于每个 mirror,你可以定义auth/tls

containerd 使用了类似 Kubernetessvcendpoint 的概念,svc 可以理解为访问名称,这个名称会解析到对应的 endpoint 上。 也可以理解 mirror 配置就是一个反向代理,它把客户端的请求代理到 endpoint 配置的后端镜像仓库。mirror 名称可以随意填写,但是必须符合IP或域名的定义规则。并且可以配置多个 endpoint,默认解析到第一个 endpoint,如果第一个 endpoint 没有返回数据,则自动切换到第二个 endpoint,以此类推。

示例:

# mirrors 可以定义多个私有镜像仓库的名称
mirrors:
  "172.31.6.200:5000": # 私有镜像仓库的名称
    endpoint:
      - "http://172.31.6.200:5000"
      - "http://x.x.x.x:5000"
      - "http://y.y.y.y:5000"
  "rancher.ksd.top:5000": # 私有镜像仓库的名称
    endpoint:
      - "http://172.31.6.200:5000"
  "docker.io": # 私有镜像仓库的名称
    endpoint:
      - "https://fogjl973.mirror.aliyuncs.com"
      - "https://registry-1.docker.io"
# 类似于Kubernetes 的Service和Endpoint的关系

# configs 配置私有镜像仓库的相应的用户名和密码以及证书信息
configs:
  "172.31.6.200:5000":
    auth:
      username: admin
      password: Harbor@12345
    tls:
      cert_file: /home/ubuntu/harbor2.kingsd.top.cert
      key_file:  /home/ubuntu/harbor2.kingsd.top.key
      ca_file:   /home/ubuntu/ca.crt

可以通过 crictl pull 172.31.6.200:5000/library/alpinecrictl pull rancher.ksd.top:5000/library/alpine 获取到镜像,但镜像都是从同一个仓库获取到的。

root@rancher-server:/etc/rancher/k3s# systemctl restart k3s.service
root@rancher-server:/etc/rancher/k3s# crictl pull 172.31.6.200:5000/library/alpine
Image is up to date for sha256:a24bb4013296f61e89ba57005a7b3e52274d8edd3ae2077d04395f806b63d83e
root@rancher-server:/etc/rancher/k3s# crictl pull rancher.ksd.top:5000/library/alpine
Image is up to date for sha256:a24bb4013296f61e89ba57005a7b3e52274d8edd3ae2077d04395f806b63d83e

1.2 搭建 Harbor 私有镜像仓库

1.2.1 部署Harbor私有镜像仓库

# Step1: 安装Docker容器运行时环境
# 在 K3s 节点上安装 Docker。可以使用 Rancher 的一个Docker 安装脚本来安装 Docker:
$ curl https://releases.rancher.com/install-docker/19.03.sh | sh

# Step2: 配置镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://po13h3y1.mirror.aliyuncs.com","http://hub-mirror.c.163.com","https://mirror.ccs.tencentyun.com","http://f1361db2.m.daocloud.io"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker && sudo systemctl enable docker

# Step3: 安装Docker-Compose软件
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

# Step4: 使用Docker-Compose临时搭建一套Harbor
$ wget https://github.com/goharbor/harbor/releases/download/v2.6.2/harbor-offline-installer-v2.6.2.tgz
$ tar -zxvf harbor-offline-installer-v2.6.2.tgz && cd harbor

$ cp -av harbor.yml.tmpl harbor.yml
$ vim harbor.yml
hostname: reg.kubesphere.com
https: # 后续进行编写
harbor_admin_password: Harbor12345

1.2.2 Harbor 证书的TLS创建

$ mkdir -pv harbor/ssl ; cd harbor/ssl
$ cat > cfssl.sh <<EOF
#!/bin/bash
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod +x cfssl*
mv cfssl_linux-amd64          /usr/bin/cfssl
mv cfssljson_linux-amd64      /usr/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo
EOF
$ bash cfssl.sh
$ cat > ca-config.json <<EOF
{
    "signing": {
        "default": {
            "expiry": "87600h"
        },
        "profiles": {
            "kubernetes": {
                "expiry": "87600h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "server auth",
                    "client auth"
                ]
            }
        }
    }
}
EOF
$ cat > ca-csr.json <<EOF
{
        "CN": "kubernetes",
        "key": {
            "algo": "rsa",
            "size": 2048
        },
        "names": [
            {
                "C": "CN",
                "L": "Beijing",
                "ST": "Beijing"
            }
        ]
}
EOF
$ cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

$ cat > reg.kubesphere.com-csr.json <<EOF
{
    "CN": "reg.kubesphere.com",
    "hosts": [],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Beijing",
            "ST": "Beijing"
        }
    ]
}
EOF
$ cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes reg.kubesphere.com-csr.json | cfssljson -bare reg.kubesphere.com

2、Harbor启用HTTPS

$ vim ./harbor/harbor.yml
  https:
    port:443
    certificate: /root/harbor/ssl/reg.kubesphere.com.pem
    private_key: /root/harbor/ssl/reg.kubesphere.com-key.pem

1.2.3 部署 Harbor 镜像仓库

3、重新配置并部署Harbor

$ ./prepare
# ./install.sh 
$ docker-compose down
$ docker-compose up -d
$ docker-compose ps -a 
      Name                     Command                  State                                          Ports                                   
-----------------------------------------------------------------------------------------------------------------------------------------------harbor-core         /harbor/entrypoint.sh            Up (healthy)                                                                              
harbor-db           /docker-entrypoint.sh 96 13      Up (healthy)                                                                              
harbor-jobservice   /harbor/entrypoint.sh            Up (healthy)                                                                              
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp                                                  
harbor-portal       nginx -g daemon off;             Up (healthy)                                                                              
nginx               nginx -g daemon off;             Up (healthy)   0.0.0.0:80->8080/tcp,:::80->8080/tcp,                                      
                                                                    0.0.0.0:443->8443/tcp,:::443->8443/tcp                                     
redis               redis-server /etc/redis.conf     Up (healthy)                                                                              
registry            /home/harbor/entrypoint.sh       Up (healthy)                                                                              
registryctl         /home/harbor/start.sh            Up (healthy)

浏览器访问:http:s//<IP地址>也可以修改主机的host文件将IP地址 域名进行绑定。可以查看浏览器的证书。

默认用户名:admin

默认密码:Harbor12345

k3s 镜像仓库,# K3s,docker,运维,kubernetes

Harbor 镜像仓库可以正常使用,并且创建一个 k3s 的项目

k3s 镜像仓库,# K3s,docker,运维,kubernetes

# 上传镜像
$ cat /etc/docker/daemon.json
{
      "registry-mirrors": ["https://si7y70hh.mirror.aliyuncs.com"],
      "insecure-registries": ["reg.kubesphere.com","10.0.0.53"]
}

$ systemctl daemon-reload ; systemctl restart docker
$ docker login reg.kubesphere.com
Username: admin
Password: 123456

Login Succeeded

# 上传镜像
$ docker pull nginx && docker tag nginx:latest reg.kubesphere.com/k3s/nginx:latest
$ docker push reg.kubesphere.com/k3s/nginx:latest

k3s 镜像仓库,# K3s,docker,运维,kubernetes

1.24 基础环境

# K3s Master
$ curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \
  INSTALL_K3S_MIRROR=cn \
  INSTALL_K3S_VERSION="v1.21.14+k3s1" \
  K3S_TOKEN=rancher sh -s -

$ kubectl get nodes
NAME   STATUS   ROLES                  AGE   VERSION
k3s1   Ready    control-plane,master   38s   v1.21.14+k3s1

# 查看StorageClass存储类
$ kubectl get sc
NAME                   PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-path (default)   rancher.io/local-path   Delete          WaitForFirstConsumer   false                  42s

1.3 使用 TLS

1.3.1 证书颁发机构颁发的证书

cat >> /etc/rancher/k3s/registries.yaml <<EOF
mirrors:
  "reg.kubesphere.com":
    endpoint:
      - "https://reg.kubesphere.com"
configs:
  "reg.kubesphere.com":
    auth:
      username: admin
      password: 123456
EOF
# 重启K3s服务
$ systemctl restart k3s

# 拉取相应的镜像文件
$ crictl pull reg.kubesphere.com/k3s/nginx:latest

1.3.2 自签名证书

cat >> /etc/rancher/k3s/registries.yaml <<EOF
mirrors:
  "reg.kubesphere.com":
    endpoint:
      - "https://reg.kubesphere.com"
configs:
  "reg.kubesphere.com":
    auth:
      username: admin
      password: 123456
    tls:
      cert_file: /home/harbor/reg.kubesphere.com.cert
      key_file:  /home/harbor/reg.kubesphere.com.key
      ca_file:   /home/harbor/ca.crt
EOF

# 重启K3s服务
systemctl restart k3s

1.4 不使用 TLS(Http registry)

在没有 TLS 通信的情况下,需要为 endpoints 指定http://,否则将默认为 https

cat >> /etc/rancher/k3s/registries.yaml <<EOF
mirrors:
  "172.31.19.227:5000":
    endpoint:
      - "http://172.31.19.227:5000"
EOF

# 重启K3s服务
systemctl restart k3s

K3s 将会在 /var/lib/rancher/k3s/agent/etc/containerd/config.toml 中为 containerd 生成 config.toml。如果要对这个文件进行高级设置,你可以在同一目录中创建另一个名为 config.toml.tmpl 的文件,此文件将会代替默认设置。

1.5 配置 Mirror(镜像加速器)

cat >> /etc/rancher/k3s/registries.yaml <<EOF
mirrors:
  "docker.io":
    endpoint:
      - "https://po13h3y1.mirror.aliyuncs.com"
      - "http://hub-mirror.c.163.com"
      - "https://mirror.ccs.tencentyun.com"
      - "https://registry-1.docker.io"
      - "http://f1361db2.m.daocloud.io"
EOF

# 重启K3s服务
systemctl restart k3s

1.6 完整模板示例(Containerd)

mirrors:
  "harbor.kingsd.top":
    endpoint:
      - "https://harbor.kingsd.top"
  "harbor2.kingsd.top":
    endpoint:
      - "https://harbor2.kingsd.top"
  "172.31.19.227:5000":
    endpoint:
      - "http://172.31.19.227:5000"
  "docker.io":
    endpoint:
      - "https://fogjl973.mirror.aliyuncs.com"
      - "https://registry-1.docker.io"

configs:
  "harbor.kingsd.top":
    auth:
      username: admin
      password: Harbor@12345

  "harbor2.kingsd.top":
    auth:
      username: admin
      password: Harbor@12345
    tls:
      cert_file: /home/ubuntu/harbor2.kingsd.top.cert
      key_file:  /home/ubuntu/harbor2.kingsd.top.key
      ca_file:   /home/ubuntu/ca.crt

1.7 配置 Containerd

K3s 将会在/var/lib/rancher/k3s/agent/etc/containerd/config.toml中为 containerd 生成 config.toml。[ 建议不要直接对 containerd 的配置文件进行修改,格式十分的严格 ]

如果要对这个文件进行高级设置,你可以在同一目录中创建另一个名为 config.toml.tmpl 的文件,此文件将会代替默认设置。

config.toml.tmpl将被视为 Go 模板文件,并且config.Node结构被传递给模板。此模板示例介绍了如何使用结构来自定义配置文件。文章来源地址https://www.toymoban.com/news/detail-713330.html

到了这里,关于09-K3S 安装-私有镜像仓库配置参考的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【K3s】第1篇 K3s入门级介绍及架构详解

    【K3s】第1篇 K3s入门级介绍及架构详解

    https://docs.k3s.io/zh/architecture K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进行了高度优化。K3s 有以下增强功能: 打包为单个二进制文件。 使用基于 sqlite3 的轻量级存储后端作为默认存储机制。同时支持使用 etcd3、MySQL 和 PostgreSQL 作为存储机制。 封装

    2023年04月26日
    浏览(14)
  • K3S+Rancher

    查看系统版本 查看系统命令集 这是我系统配置情况 服务器清单 名称 IP 配置 系统 主-服务 192.168.23.171 4Cpu8G Ubuntu 20.04.6 副主-服务 192.168.23.103 4Cpu8G Ubuntu 20.04.6 代理-服务 192.168.23.248 4Cpu8G Ubuntu 20.04.6 外置均衡代理 192.168.23.205 4Cpu8G Ubuntu 20.04.6 修改/etc/apt/sources.list文件 修改主机服

    2024年01月18日
    浏览(12)
  • 玩转 PI 系列-如何在 Rockchip Arm 开发板上安装 Docker Tailscale K3s Cilium?

    玩转 PI 系列-如何在 Rockchip Arm 开发板上安装 Docker Tailscale K3s Cilium?

    618 买了几个便宜的 Purple PI OH 开发板 (500 块多一点买了 3 个🤑), 这个开发板类似树莓派,是基于 Rockchip(瑞芯微) 的 rx3566 arm64 芯片。如下: 买来是用作家庭服务器或家庭实验室的。主要考虑就是: 便宜 可玩性高 功耗低 散热小,运行安静 Arm64 现在生态还凑活 其配置如下

    2024年02月17日
    浏览(10)
  • kubernetes快速入门之K3S

    Kubernetes 是一个开源的容器编排引擎和容器集群管理工具,用来对容器化应用进行自动化部署、 扩缩和管理。 Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有8个字符。 Google 在 2014 年开源了 Kubernetes 项目。 Kubernetes 建立在 Google 大

    2024年03月10日
    浏览(11)
  • docker+k3s部署GZCTF

    k3s官网 gzctf官方部署文档地址 gzctf官网 name ip gzctfweb 192.168.8.100 k3s-master 192.168.8.101 k3s-slave 192.168.8.102 1、 k3s-master节点执行: systemctl enable --now k3s  # k3sserver自启 注意:在安装slave节点时,先在master节点用如下命令查看token cat /var/lib/rancher/k3s/server/node-token 2、 k3s-slave节点执行:

    2024年02月08日
    浏览(95)
  • k3s部署全过程kuboard管理界面

    k3s部署全过程kuboard管理界面

    # 安装k3s博客 ## 准备工作 1.准备俩台可以相互访问的服务器 2.需要先安装dockers 3.以下教程将使用VsCode+ssh插件来进行插件图 点击打开ssh操作界面 进入需要设置master节点的服务器中然后执行docker命令启动一个autok3s的容器并且需要将docker映射进去 注:如果选择使用docker做为k3s的

    2024年02月06日
    浏览(12)
  • k3s or RKE2 helm安装报错dial tcp 127.0.0.1:8080: connect: connection refused

    k3s or RKE2 helm安装报错dial tcp 127.0.0.1:8080: connect: connection refused

    1.报错: Error: INSTALLATION FAILED: Kubernetes cluster unreachable: Get \\\"http://127.0.0.1:8080/version\\\": dial tcp 127.0.0.1:8080: connect: connection refused 2.问题原因:         1.因为helm默认使用k8s的配置文件,默认位置为 ~/.kube/config.yml,因为是k3s所以配置文件要使用环境变量来指定: export KUBECONFIG=/etc/r

    2024年02月11日
    浏览(12)
  • K3S和 K8S 有何不同?

    K3s 是CNCF 认证的 Kubernetes 发行版和Sandbox项目,专为低资源环境而设计。由 Rancher Labs 维护着 K3s。 总的来说,K3s 提供了一个开销较小的 Kubernetes 集群设置,但仍然集成了 K8s 的大部分架构和功能。 以下是 K3s 成为轻量级发行版的原因: 打包为具有最小外部依赖性的单个二进制

    2023年04月09日
    浏览(9)
  • K3s vs K8s:轻量级对决 - 探索替代方案

    K3s vs K8s:轻量级对决 - 探索替代方案

    在当今云原生应用的领域中,Kubernetes(简称K8s)已经成为了无可争议的领导者。然而,随着应用规模的不断增长,一些开发者和运维人员开始感受到了K8s的重量级特性所带来的挑战。为了解决这一问题,一个名为K3s的新兴项目逐渐崭露头角。K3s被誉为轻量级的Kubernetes,它旨

    2024年02月14日
    浏览(11)
  • Minikube vs. kind vs. k3s vs k3d vs MicroK8s

    Minikube vs. kind vs. k3s vs k3d vs MicroK8s

    minikube 是一个 Kubernetes SIG 项目,已经启动三年多了。它采用生成虚拟机的方法,该虚拟机本质上是一个单节点 K8s 集群。由于支持大量管理程序,它可以在所有主要操作系统上使用。这也允许您并行创建多个实例。 从用户的角度来看,minikube 是一个非常适合初学者的工具。您

    2024年01月16日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包