(史上最强)K8s集群外独立Harbor服务器的安装

Posted 我想学建模

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(史上最强)K8s集群外独立Harbor服务器的安装相关的知识,希望对你有一定的参考价值。

1、安装方式

         harbor有两种安装方式,一种是用docker-compose启动官方打包好的离线安装包; 二是用helm chart的形式在k8s上来运行harbor。经过我们自己的实践,helm chart安装失败了所以我们选择了第一种方法离线安装。而且你的harbor如果是安装在k8s上的话,就会有一种很微妙的关系,k8s的镜像是从harbor中拉取的,harbor又是搭载在k8s上的一旦其中一个出现问题,就会导致另外一个也出现问题。

2、前期准备

我们准备了一台最小版的centos7.6服务器,开始安装所需要的docker,docker-compose等。

        ①centos环境准备

#关闭防火墙: 或者阿里云开通安全组端口访问
systemctl stop firewalld
systemctl disable firewalld

#关闭 selinux: 
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0

#关闭 swap:
swapoff -a  #临时 
sed -ri 's/.*swap.*/#&/' /etc/fstab  #永久

#将桥接的 IPv4 流量传递到 iptables 的链:
# 修改 /etc/sysctl.conf
# 如果有配置,则修改
sed -i "s#^net.ipv4.ip_forward.*#net.ipv4.ip_forward=1#g"  /etc/sysctl.conf
sed -i "s#^net.bridge.bridge-nf-call-ip6tables.*#net.bridge.bridge-nf-call-ip6tables=1#g"  /etc/sysctl.conf
sed -i "s#^net.bridge.bridge-nf-call-iptables.*#net.bridge.bridge-nf-call-iptables=1#g"  /etc/sysctl.conf
sed -i "s#^net.ipv6.conf.all.disable_ipv6.*#net.ipv6.conf.all.disable_ipv6=1#g"  /etc/sysctl.conf
sed -i "s#^net.ipv6.conf.default.disable_ipv6.*#net.ipv6.conf.default.disable_ipv6=1#g"  /etc/sysctl.conf
sed -i "s#^net.ipv6.conf.lo.disable_ipv6.*#net.ipv6.conf.lo.disable_ipv6=1#g"  /etc/sysctl.conf
sed -i "s#^net.ipv6.conf.all.forwarding.*#net.ipv6.conf.all.forwarding=1#g"  /etc/sysctl.conf
# 可能没有,追加
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding = 1"  >> /etc/sysctl.conf
# 执行命令以应用
sysctl -p

        ②安装docker:

#1、安装docker
##1.1、卸载旧版本
sudo yum remove docker \\
	docker-client \\
	docker-client-latest \\
	docker-common \\
	docker-latest \\
	docker-latest-logrotate \\
	docker-logrotate \\
	docker-engine
##1.2、安装基础依赖
yum install -y yum-utils \\
device-mapper-persistent-data \\
lvm2

##1.3、配置docker yum源
sudo yum-config-manager \\
--add-repo \\
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

##1.4、安装并启动 docker
yum install -y docker-ce-19.03.8 docker-ce-cli-19.03.8 containerd.io
systemctl enable docker
systemctl start docker

##1.5、配置docker加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://hub-mirror.c.163.com/"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

        ③安装python环境

yum install python-setuptools gcc python-devel -y

        ④安装openssl,我这里自带了,就没装。

        ⑤安装docker-compose

        在docker-compose的官网找到linux的安装教程如下:

        运行如下命令下载并安装当前稳定版本的 Docker-compose:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

        查看安装好后的版本

docker-compose --version

3、开始安装

        ①下载安装包

        首先我重新启动了

一台服务器用来安装harbor

## 创建目录及下载harbor离线包
mkdir /data && cd /data
wget https://github.com/goharbor/harbor/releases/download/v2.2.0/harbor-offline-installer-v2.2.0.tgz
tar xf harbor-offline-installer-v2.2.0.tgz && rm harbor-offline-installer-v2.2.0.tgz

        第一行命令创建data文件夹来存储harbor的所有目录文件,这个data仅供harbor使用。第二行下载harbor安装包,第三行解压,在解压完成过后,会询问你是否删除安装包输入y删除即可。

         ②修改配置  

cd harbor
cp harbor.yml.tmpl harbor.yml
    5  hostname: *********
    17 certificate: /data/harbor/ssl/tls.cert
    18 private_key: /data/harbor/ssl/tls.key
    34 harbor_admin_password: *******

        第一步我们进到harbor文件夹,复制harbor.yml.tmpl为harbor.yml,然后修改其中的配置。要修改配置的地方我都写出来了。hostname最好使用域名,但是要是没有域名也可以使用ip地址。一定要记住修改默认密码不然会有安全隐患。

        ③创建harbor访问域名证书

mkdir /data/harbor/ssl && cd /data/harbor/ssl
openssl genrsa -out tls.key 2048
openssl req -new -x509 -key tls.key -out tls.cert -days 360 -subj /CN=*********

         第一步创建ssl文件夹用来存储证书,第二步生成key,最后一步使用生成的key自签证书。

days后面是你自签证书的有效时间可以自行修改。'CN='后面就写你自己的IP地址或者你自己的域名。

        生成完成之后显示如下

         故harbor.yml中certificate填写为如上tls.cert的文件目录地址:/data/harbor/ssl/tls.cert

         故harbor.yml中private_key填写为如上tls.key的文件目录地址:/data/harbor/ssl/tls.key

        ④开始安装

        第一步进到harbor文件夹下,然后就可以用以下命令开始安装。

./install.sh

        出现以下界面,就说明你已经安装成功了! 

         ⑤调试检测    

        第一步:输入以下命令检查组件是否运行。

docker-compose ps

        全部状态都是healthy说明已经安装成功。 

         第二步:如果你的harbor网址是使用域名的话,那么在你的电脑上配置本地host,在C:\\windows\\System32\\drivers\\etc\\hosts中添加你自己的域名。

        格式为:harbor安装的服务器地址(空格)域名或者IP地址,这样配置过后就可以在网页中直接打开harbor页面

 输入账号密码登录即可。

         第三步:尝试上传镜像。首先在另外一台服务器上添加本地hosts

echo '10.0.1.204 harbor.boge.com' >> /etc/hosts

        因为我们的证书是自签的是不受到其他机器信任的,所以我们要在我们要使用harbor的服务器上放上我们的证书,才能调度上面的pod,才能拉取镜像。使用下面的代码,在要使用harbor的服务器上保存证书,其中*的部分使用你自己的域名或者是IP地址。

mkdir -p /etc/docker/certs.d/*********
scp 10.0.1.204:/data/harbor/ssl/tls.cert /etc/docker/certs.d/***********/ca.crt

        然后使用如下语句登录harbor,如果没有使用80端口一定要用IP地址加上你的端口号,冒号之后填端口号,查看自己harbor.yml里http或https里的端口详情。

docker login ********:******

        然后尝试ping 你的网页看时候能够ping通。可以ping同就下一步。寻找一个镜像上传。

        最后我们使用docker tag语句给本地镜像重命名。然后按照以下格式上传。其中星号部分是你的域名或者IP地址。注意注意注意!如果你没有使用80端口要在你的IP地址之后加上你的端口号不然会上传不上去。至于怎么查看你的端口,在你的harbor服务器的harbor文件夹下有我们之前的配置文件harbor.yml,打开在里面会有。如下图所示

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 *************:****/library/pause:3.1

       第四步,当我们尝试docker login时,遇到了如下错误:

         经反复搜资料得知,要在使用harbor的服务器(我们这里使用harbor的服务器是k8s的master节点,要上传镜像至harbor)上修改docker.service。

vim  /usr/lib/systemd/system/docker.service

        注释掉原本的这一段:ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

        添加如下的代码:

ExecStart=/usr/bin/dockerd --insecure-registry https://192.168.76.131:4430

        修改完毕后显示如下         

        ⑥登录成功

        修改完毕后再次尝试登录,docker login harbor的ip+端口,如下就是登陆成功。

         最后就是上传镜像,使用docker push如下

         最后一步:检查镜像。 我们在harbor的library中检查我们的镜像是否上传成功。

 

         可以看到上传成功!

至此Harbor的安装与测试就大功告成了!

以上是关于(史上最强)K8s集群外独立Harbor服务器的安装的主要内容,如果未能解决你的问题,请参考以下文章

K8s集群使用容器镜像仓库Harbor

Kubernetes简易部署!

Kubernetes简易部署!

kubeadm部署k8s+docker+Flannel+dashboard+Harbor仓库

kubeadm部署k8s+docker+Flannel+dashboard+Harbor仓库

kubeadm部署k8s+docker+Flannel+dashboard+Harbor仓库