k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes
  AWkq7aIjuRwO 2023年11月02日 57 0

本次使用Kubernetes1.26.3版本,Kubernetes在1.24以后就使用containerd作为容器,并不再使用docker

操作系统:Centos7.9或Ubuntu18.04

CentOS7.9

cat >  install.sh << EOF
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
sudo yum makecache fast
sudo yum -y install docker-ce
sudo service docker start
EOF
sh install.sh
#安装dockers

以上是centos的安装方式

Ubuntu18.04

Ubuntu更新完apt源后直接

apt -y install docker.io

以下步骤Ubuntu与CentOS都一致

因为Docker是个国外的网站,所以下载镜像地址会比较慢,推荐使用阿里云的镜像加速器

https://cr.console.aliyun.com/cn-hangzhou/instances

k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes_docker

下载docker-compose

https://github.com/docker

k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes_containerd_02

下载个1.22的吧

https://github.com/docker/compose/releases/tag/1.22.0

k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes_kubernetes_03

wget https://github.com/docker/compose/releases/download/1.22.0/docker-compose-Linux-x86_64
#下载docker-compose
#这是下载了个命令
#然后将这条命令  移动到 /usr/bin/改名为docker-compose
mv docker-compose-Linux-x86_64 /usr/bin/docker-compose
#然后给他执行权限
chmod +x /usr/bin/docker-compose

去下载harbor仓库

https://github.com/

搜索harbor

点进去

https://github.com/goharbor/harbor/tags

选个版本 找个老版本2.5.2的

https://github.com/goharbor/harbor/releases/tag/v2.5.2

https://github.com/

github官网搜索harbor

k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes_kubernetes_04

k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes_containerd_05

就这个

https://github.com/goharbor/harbor

k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes_docker_06

tag就是版本的意思

来这里面下载尽量不要下载-rc的这种

k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes_docker_07

点这个v2.5.0

安装包

校验码

online 是在线 他就是个下载包 而不是软件包 他是一边下载一边装

offine 是离线 这个是软件包 里面包含你所有所依赖的包都有 下载完后 只需要加载就行了 我们一般下载 offine 右键复制链接地址 然后wget 下载

k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes_linux_08

#找个目录 
cd /usr/src
wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgz
#下载 
tar xf harbor-offline-installer-v2.5.2.tgz
#解压
cd harbor/
#进入解压的目录
mkdir certs
#创建个证书
#创建ca证书私钥
openssl genrsa -out ca.key 4096

#生成ca证书
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=guoguo.com" \
-key ca.key \
-out ca.crt

#创建私钥
openssl genrsa -out guoguo.com.key 4096


#创建证书请求文件  我的域名为guoguo.com  改为自己的域名
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=guoguo.com" \
-key guoguo.com.key \
-out guoguo.com.csr


#生成x509 v3扩展名文件  签发
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=guoguo.com
DNS.2=guoguo
DNS.3=images.guoguo.com
EOF


#生成证书  
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in guoguo.com.csr \
-out guoguo.com.crt
cd ..
#返回上一级harbor目录
cp harbor.yml.tmpl harbor.yml
#这是个模板 给他改个名字

[root@harbor harbor]# egrep -v "#|^$" harbor.yml
hostname: harbor.guoguo.com
#改为域名或者ip,如果改为ip的话
http:
  port: 80
https:
  port: 443
  certificate: /apps/harbor/certs/guoguo.com.crt
  private_key: /apps/harbor/certs/guoguo.com.key
  #这两条是证书和密钥目录,将上面创建的证书和密钥目录填上
harbor_admin_password: 123456
#这是admin的密码 我改为123456了
database:
  password: root123
  max_idle_conns: 100
  max_open_conns: 900
data_volume: /data
trivy:
  ignore_unfixed: false
  skip_update: false
  offline_scan: false
  insecure: false
jobservice:
  max_job_workers: 10
notification:
  webhook_job_max_retry: 10
chart:
  absolute_url: disabled
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor
_version: 2.5.0
proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy
upload_purging:
  enabled: true
  age: 168h
  interval: 24h
  dryrun: false

k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes_linux_09

#保存退出

./install.sh

#执行这个命令

docker-compose ps

#查看下
[root@harbor harbor]# docker-compose ps
      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) 

k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes_kubernetes_10

这个nginx是做的反向代理 反向代理到8080 代理到内核机器里面

如果说 我们需要修改一下harbor.yml文件 比如改个域名

这时候我们就要执行

下图这个文件

k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes_containerd_11

./prepare
#从新读取你的文件
#然后再执行 
docker-compose restart
#重启
#然后再
./install.sh


浏览器输入域名或者ip

如果属于域名需要修改下hosts文件

#位置在:
C:\Windows\System32\drivers\etc\hosts
192.168.1.10		harbor.guoguo.com
#加上这么一条内容,这样就能通过域名访问了

访问 账号admin 密码123456

浏览器打开

https://harbor.guoguo.com

k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes_harbor_12

新建个项目

k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes_linux_13

有主机上传下载的话 需要登录

登录之前要加

有主机上传下载的话 需要登录

登录之前要加

vim /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry harbor.guoguo.com

#注意一下 这个添加的ip是harbor 仓库的ip

--insecure-registry harbor.guoguo.com

因为端口是80 就不需要写端口了 默认就是80

k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes_containerd_14



systemctl daemon-reload 
systemctl restart docker

##加上面这条的意思是 因为是我们自己做的证书 他不信任 它默认去找https  找https 他就得验证你的证书  所以得加这么一条  
#注意同时/etc/hosts文件也要修改
vim /etc/hosts
192.168.1.10 harbor.guoguo.com

docker login harbor.guoguo.com

登录

用户名admin

密码 123456

docker logout

登出

下面将harbor加入到kubernetes集群,使创建pod的时候可以正常拉取镜像

K8s每个节点都要操作

需要修改hosts文件

vim /etc/hosts
harbor.guoguo.com 192.168.1.10
vim /etc/containerd/config.toml
#修改添加下面内容,域名需要写上自己的,还要写上harbor用户和密码,看下面图片
  [plugins."io.containerd.grpc.v1.cri".registry]
      config_path = ""

      [plugins."io.containerd.grpc.v1.cri".registry.auths]

      [plugins."io.containerd.grpc.v1.cri".registry.configs]
         [plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.guoguo.com".tls]
          insecure_skip_verify = true  # 是否跳过安全认证
        [plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.guoguo.com".auth]
          username = "admin"
          password = "123456"
      [plugins."io.containerd.grpc.v1.cri".registry.headers]

      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
       [plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor.guoguo.com"]
          endpoint = ["http://harbor.guoguo.com"]
#大概行号
139         [plugins."io.containerd.grpc.v1.cri".containerd.untrusted_workload_runtime.options]
140 
141     [plugins."io.containerd.grpc.v1.cri".image_decryption]
142       key_model = "node"
143 
144     [plugins."io.containerd.grpc.v1.cri".registry]
145       config_path = ""
146 
147       [plugins."io.containerd.grpc.v1.cri".registry.auths]
148 
149       [plugins."io.containerd.grpc.v1.cri".registry.configs]
150          [plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.guoguo.com".tls]
151           insecure_skip_verify = true  # 是否跳过安全认证
152         [plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.guoguo.com".auth]
153           username = "admin"
154           password = "123456"
155       [plugins."io.containerd.grpc.v1.cri".registry.headers]
156 
157       [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
158        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor.guoguo.com"]
159           endpoint = ["http://harbor.guoguo.com"]
160 
161     [plugins."io.containerd.grpc.v1.cri".x509_key_pair_streaming]
162       tls_cert_file = ""
163       tls_key_file = ""

k8s连接harbor仓库HTTPS拉取镜像,containerd,Kubernetes_docker_15

systemctl restart containerd
#重启containerd

到这里就完成了,需要做的是像harbor仓库上传镜像,镜像名字要求前面如果使用的域名那么就用域名如果是ip就用ip

比如我的是harbor.guoguo.com就写成

docker push harbor.guoguo.com/os/ubuntu:18.04
#这个是上传,上传之前需要登录到harbor仓库,上面步骤有登录的方法


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

AWkq7aIjuRwO