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入门级介绍及架构详解

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

    2023年04月26日
    浏览(45)
  • 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日
    浏览(41)
  • 玩转 PI 系列-如何在 Rockchip Arm 开发板上安装 Docker Tailscale K3s Cilium?

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

    2024年02月17日
    浏览(114)
  • 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日
    浏览(72)
  • kubernetes快速入门之K3S

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

    2024年03月10日
    浏览(90)
  • k3s部署全过程kuboard管理界面

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

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

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

    2023年04月09日
    浏览(39)
  • 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日
    浏览(44)
  • K3s vs K8s:轻量级对决 - 探索替代方案

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

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

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

    2024年01月16日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包