搭建rancher-harbor

本文详细介绍了如何搭建Docker私有仓库,包括使用低版本Docker和Harbor的步骤,涉及用户认证、配置文件修改、证书生成等。接着,文章讲述了安装和配置Harbor的过程,包括下载、生成证书、修改配置以及启动。最后,提到了Rancher的部署,清理旧Rancher、拉取镜像以及启动Rancher服务,并展示了如何在Rancher中添加自定义集群和部署服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搭建Dokcer私有仓库(low版)

  • 授权需要用到
yum install httpd-tools -y
  • 创建用户名密码文件
mkdir -p /data/docker.registry/etc/registry/auth/
  • 创建管理员admin,存入密码文件
htpasswd -Bbn admin Theshy554 >> /data/docker.registry/etc/registry/auth/passwd
  • 设置docker配置文件
vim /etc/docker/daemon.json
{
  "registry-mirrors": ["http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn"],
  "insecure-registries": ["192.168.10.212:5000"]
}
  • 重新加载docker
systemctl daemon-reload
systemctl restart docker.service
  • 启动私有仓库容器
docker run -tid \
--name registry \
-h registry \
-p 5000:5000 \
--memory 512m \
--memory-swap -1 \
--restart always \
-v /data/docker.registry/var/lib/registry:/var/lib/registry \
-v /data/docker.registry/etc/registry/auth:/etc/registry/auth \
-e REGISTRY_AUTH=htpasswd \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/etc/registry/auth/passwd \
docker.io/registry
  • 访问私有仓库
http://192.168.10.212:5000/v2/_catalog
  • 镜像打标记
docker tag redis:latest 192.168.10.212:5000/redis_v1
  • 登录docker,否则会报没有权限
docker login -u admin -p Thehsy554 192.168.10.212:5000

# 退出
docker logout 192.168.10.212:5000
  • 提交带标签镜像到私有仓库
docker push 192.168.10.212:5000/redis_v1
  • 刷新页面查看即可
http://192.168.10.212:5000/v2/_catalog

搭建Harbor私有仓库(推荐)

  • 安装源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
		
yum clean all
yum makecache
  • 安装常用的软件
yum install -y vim net-tools wget -y 
  • 安装docker和docker-compose
# 安装最新版本的 Docker Engine 和容器
sudo yum install docker-ce docker-ce-cli containerd.io

# 启动 docker
sudo systemctl start docker
# 停止 docker
sudo systemctl stop docker
# 重启 docker
sudo systemctl restart docker
# 设置开机启动
sudo systemctl enable docker
# 查看 docker 状态
sudo systemctl status docker
# 查看 docker 内容器的运行状态
sudo docker stats
# 查看 docker 概要信息
sudo docker info
# 查看 docker 帮助文档
sudo docker --help

# 安装校验 
docker -v

# 编辑文件 daemon.json
vi /etc/docker/daemon.json
{
  "registry-mirrors": ["http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn"]
}
# 重新加载某个服务的配置文件
sudo systemctl daemon-reload
# 重新启动 docker
sudo systemctl restart docker

# 安装docker-compose 如有需要,修改上面 1.24.1 为指定版本号即可
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 安装完后执行
sudo chmod +x /usr/local/bin/docker-compose
# 安装校验
docker-compose -v
  • 安装OpenSSL
yum install openssl openssl-devel -y 
  • 下载Harbor
https://github.com/goharbor/harbor/releases
  • 解压haobor
tar -xf harbor-offline-installer-v2.3.3.tgz -C /usr/local/
cd /usr/local/harbor/
  • 加载镜像
docker load < harbor.v2.3.3.tar.gz
  • 生成ca证书
    • O代表组织
    • OU代表组织别名
    • CN代表域名,没有的可以用IP
[root@localhost harbor]# mkdir /opt/ssl
[root@localhost harbor]# cd /opt/ssl
[root@localhost ssl]# pwd
/opt/ssl
		
[root@localhost ssl]# openssl genrsa -out ca.key 4096
		
[root@localhost ssl]# openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=ShangHai/L=ShangHai/O=Oldboy/OU=Linux/CN=192.168.15.201" \
-key ca.key \
-out ca.crt
  • 生成服务器端证书
[root@localhost ssl]# openssl genrsa -out 192.168.15.201.key 4096
[root@localhost ssl]# openssl req -sha512 -new \
-subj "/C=CN/ST=ShangHai/L=ShangHai/O=Oldboy/OU=Linux/CN=192.168.15.201" \
-key 192.168.15.201.key \
-out 192.168.15.201.csr
  • 生成x509 v3服务文件
[root@localhost ssl]# cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:192.168.15.201
EOF
  • 使用该v3.ext文件为您的 Harbor 主机生成证书
# 将192.168.15.201 CRS 和 CRT 文件名中的 替换为 Harbor 主机名
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in 192.168.15.201.csr \
-out 192.168.15.201.crt
  • 将192.168.15.201.csr转换成192.168.15.201.cert,给予docker使用
openssl x509 -inform PEM -in 192.168.15.201.crt -out 192.168.15.201.cert
  • 创建docker证书存放目录
[root@localhost ssl]# mkdir -p /etc/docker/certs.d/192.168.15.201
		
[root@localhost ssl]# cp 192.168.15.201.key /etc/docker/certs.d/192.168.15.201/
[root@localhost ssl]# cp 192.168.15.201.cert /etc/docker/certs.d/192.168.15.201/
[root@localhost ssl]# cp ca.crt /etc/docker/certs.d/192.168.15.201/
		
[root@localhost ssl]# ll /etc/docker/certs.d/192.168.15.201/
total 12
-rw-r--r-- 1 root root 2053 Jul  6 20:32 192.168.15.201.cert
-rw-r--r-- 1 root root 3243 Jul  6 20:32 192.168.15.201.key
-rw-r--r-- 1 root root 2029 Jul  6 20:32 ca.crt
		
[root@localhost ssl]# systemctl restart docker
  • 修改Harbor的配置文件
[root@localhost harbor]# pwd
/usr/local/harbor

[root@localhost harbor]# cp harbor.yml.tmpl harbor.yml
[root@localhost harbor]# vim harbor.yml
hostname: 192.168.15.201
port: 80

https:
  # https port for harbor, default is 443
  port: 443
  certificate: /opt/ssl/192.168.15.201.crt
  private_key: /opt/ssl/192.168.15.201.key
  • 生成配置
[root@localhost harbor]# ./prepare 
  • 设置docker配置文件
vim /etc/docker/daemon.json
{
  "registry-mirrors": ["http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn"],
  "insecure-registries": ["192.168.10.231"]
}

# 重新加载某个服务的配置文件
sudo systemctl daemon-reload
# 重新启动 docker
sudo systemctl restart docker
  • 开始安装
[root@localhost harbor]# ./install.sh 
  • 访问HTTPS - Harbor
https://192.168.15.201/

用户名:admin
密码: Harbor12345
  • 新建项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 推送镜像到Harbor库
1、打tag
[root@localhost harbor]# docker pull nginx
[root@localhost harbor]# docker tag nginx:latest 192.168.10.231/keylion/nginx:20221117
[root@localhost harbor]# docker images
2、登录harbor
[root@localhost harbor]# docker login 192.168.15.201
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
  • 推送镜像到当前项目
docker push 192.168.10.231/keylion/nginx:20221117

在这里插入图片描述

  • docker重启,重新启动Harbor
[root@keylion harbor]# cd /home/harbor/
[root@keylion harbor]# ./install.sh 

搭建Rancher

  • 清除旧的Rancher
rm -rf /etc/cni \
       /etc/kubernetes \
       /opt/cni \
       /opt/rke \
       /run/secrets/kubernetes.io \
       /run/calico \
       /run/flannel \
       /var/lib/calico \
       /var/lib/etcd \
       /var/lib/cni \
       /var/lib/kubelet \
       /var/lib/rancher/rke/log \
       /var/log/containers \
       /var/log/pods \
       /var/run/calico
       
rm -f /var/lib/containerd/io.containerd.metadata.v1.bolt/meta.db
sudo systemctl restart containerd
sudo systemctl restart docker
  • 拉取rancher镜像
docker pull rancher/rancher:v2.5.16
  • docker启动(80和443留给ingress使用)
docker run --privileged -d \
  --restart=unless-stopped \
  --restart=always \
  --name=rancher \
  -v /home/rancher/data:/var/lib/rancher \
  -p 8080:80 -p 8443:443  rancher/rancher:v2.5.16
  • 等3分钟访问 https://ip:8443 即可
  • 进入页面添加自定义集群

在这里插入图片描述

在这里插入图片描述

  • 直接下一步
    • 1、角色选择全选
      2、高级选项里面的内网配置-输入与rancher同网段可达地址 
      	eg:rancher服务192.168.10.212,rancher-agent(内网地址) 192.168.10.230 (230必须是可以ping通的)
      3、copy 最下面的命令道上面填写的内网服务器里执行即可
      

在这里插入图片描述

  • 等待5-10分钟,再ranhcer页面查看即可
  • 创建好自定义集群

在这里插入图片描述

  • 点击Default

  • 部署服务

在这里插入图片描述

  • 配置私有镜像仓库

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 参数填写
    • 1、Dokcer镜像可以填写公有镜像,或者自己项目的私有镜像(私有镜像在前面push到镜像仓库) 地址为:ip/镜像名/tag
      2、命名空间可自定义后这里进行分类选择
      3、端口映射 填写容器端口即可
      4、启动
      

在这里插入图片描述

  • 访问
    • nginx为例,容器端口为80,外部随机映射为31526
      访问地址:192.168.10.212:31526
      

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BAwAnZea-1677575572045)(/Users/l-jiahui/Library/Application Support/typora-user-images/image-20221111152801236.png)]

  • 解决rancher和k8s集群ingress部署在同一台机器导致的80及443端口占用问题
1、集群k8s执行
kubectl edit daemonset nginx-ingress-controller -n ingress-nginx
2、增加参数
    containers:
      - args:
        - /nginx-ingress-controller
        - --default-backend-service=$(POD_NAMESPACE)/default-http-backend
        - --configmap=$(POD_NAMESPACE)/nginx-configuration
        - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
        - --udp-services-configmap=$(POD_NAMESPACE)/udp-services
        - --annotations-prefix=nginx.ingress.kubernetes.io
        # 增加以下两个参数参数(一个是http端口,一个是https端口)
        - --http-port=11080
        - --https-port=11443   
3、然后使用删除原来的 nginx-ingress-controller 这个 pod,删除后 k8s 会自动使用新的配置创建 pod,这样就可以了
  • 负载均衡
    • 创建自定义ingress报错
    Internal error occurred: failed calling webhook “validate.nginx.ingress.kubernetes.io
    
    • 解决方案
    进入kubectl控制台
    1.查看webhook
    kubectl get validatingwebhookconfigurations
    ingress-nginx-admission
    2.删除ingress-nginx-admission
    kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission
    
    • 创建负载均衡(引用链接)
    https://blog.csdn.net/fengyuyeguirenenen/article/details/124740648
    
根据引用中的内容,搭建Docker Rancher环境的步骤如下: 1. 准备工作,包括安装apt-get和ssh,修改下载源地址。 2. 安装Docker,并使用Docker安装MySQL和Rancher。 3. 进行Docker的操作,包括镜像操作和卸载Docker。 4. 连接到不同的镜像仓库,包括Docker官方的镜像仓库和阿里云镜像仓库。 根据引用中的内容,在搭建Rancher环境之前,需要规划好两台服务器的IP地址,并在其中一台服务器上安装RancherDocker,在另一台服务器上安装DockerDocker-compose。 根据引用中的内容,搭建Rancher环境的具体步骤如下: 1. 在已安装Docker的基础上启动Rancher服务器。Rancher服务器是一个Docker镜像,因此不需要额外安装软件,只需执行Docker命令下载并成功运行Rancher服务器镜像。 2. 启动容器并指定端口,如果没有rancher/server镜像,会自动下载。可以通过执行命令docker run -d --restart=always -p 8080:8080 rancher/server来查看镜像和容器的运行情况。 综上所述,搭建Docker Rancher环境的步骤包括准备工作、安装Docker、安装MySQL和Rancher、进行Docker操作、连接到不同的镜像仓库以及启动Rancher服务器。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [docker+rancher环境搭建rancher的使用](https://blog.csdn.net/qq_42268472/article/details/126798628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Docker+Rancher+Harbor搭建全过程](https://blog.csdn.net/sql_ican/article/details/81945023)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值