近几天在研究一件安装k8s,安装过程中由于会安装大量的docker,kubernetes相关软件,整个安装过程会非常长,很多时候都会超时,为了加速安装过程,因而选择自己本地搭建YUM仓库,并定期同步最新版本和版本变更消息。
1、修改yum源为阿里云源
1.1、备份系统自带的yum源
tar -zcvf CentOS-bk.tar.gz /etc/yum.repos.d/CentOS-*
1.2、修改yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
1.3、检验阿里云源是否正常
yum repolist
2、安装yum相关的软件
yum install -y wget make cmake gcc gcc-c++ pcre-devel zlib-devel openssl openssl-devel createrepo yum-utils
yum-utils:reposync同步工具
createrepo:编辑yum库工具
plugin-priorities:控制yum源更新优先级工具,这个工具可以用来控制进行yum源检索的先后顺序,建议可以用在client端。
3、根据源标识同步源到本地目录
3.1、创建本地目录
mkdir /mirror
3.2、同步到本地目录
$ reposync -r docker-ce-stable kubernetes -p /mirror
warning: /mirror/kubernetes/Packages/29e7806d1d54cc0eea2963f4ab276778526538816c88c963ece7d1a05fd80792-cri-tools-1.0.0_beta.1-0.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 3e1ba8d5: NOKEY ETA
29e7806d1d54cc0eea2963f4ab276778526538816c88c963ece7d1a05fd80792-cri-tools-1.0.0_beta.1-0.x86_64.rpm 的公钥尚未安装
(1/678): 29e7806d1d54cc0eea2963f4ab276778526538816c88c963ece7d1a05fd80792-cri-tools-1.0.0_beta.1-0.x86_64.rpm | 4.0 MB 00:00:36
(2/678): e253c692a017b164ebb9ad1b6537ff8afd93c35e9ebc340a52c5bd42425c0760-cri-tools-1.11.0-0.x86_64.rpm | 4.2 MB 00:00:44
......
注:不用担心没有创建相关目录,系统自动创建相关目录,并下载,时间较长请耐心等待。
可以使用下面命令同步全部源
$ reposync -p / mirror
也可以用 repo -r —repoid=repoid 指定要查询的repo id,可以指定多个(# reposync -r docker-ce-stable -p /mirror #这里同步base目录到本地)
3.3、更新新的rpm包
# reposync -np /mirror
3.4、创建索引
createrepo -po /mirror/docker-ce-stable/ /mirror/docker-ce-stable/
createrepo -po /mirror/kubernetes/ /mirror/kubernetes/
3.5、更新源数据
createrepo --update /mirror/docker-ce-stable
createrepo --update /mirror/kubernetes
3.6、创建定时任务脚本
# vim /data/shell/docker_yum_update.sh
#!/bin/bash
echo 'Updating Aliyum Source'
DATETIME=`date +%F_%T`
exec > /var/log/aliyumrepo_$DATETIME.log
reposync -r docker-ce-stable kubernetes -p /mirror
if [ $? -eq 0 ];then
createrepo --update /mirror/docker-ce-stable
createrepo --update /mirror/kubernetes
echo "SUCESS: $DATETIME aliyum_docker_yum update successful"
else
echo "ERROR: $DATETIME aliyum_docker_yum update failed"
fi
将脚本加入到定时任务中
# crontab -e
# Updating Aliyum Source
00 13 * * 6 [ $(date +%d) -eq $(cal | awk 'NR==3{print $NF}') ] && /bin/bash /data/shell/docker_yum_update.sh
4、安装nginx开启目录权限保证本地机器可以直接本地yum源
4.1、创建运行账户
# groupadd nginx
# useradd -r -g nginx -s /bin/false -M nginx
# yum install nginx -y
4.2、修改nginx 配置文件
# vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080;
server_name localhost;
root /mirror ; #这里是yum源存放目录
location / {
autoindex on; #打开目录浏览功能
autoindex_exact_size off; # off:以可读的方式显示文件大小
autoindex_localtime on; # on/off:是否以服务器的文件时间作为显示的时间
charset utf-8,gbk; #展示中文文件名
index index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
由于我的IP地址是172.17.3.143,而且80端口被占用,因而改变80端口为8080,因而本地YUM 仓库访问地址为172.17.3.143:8080
5、客户端创建repo文件
5.1、修改客户端服务器yum仓库地址
修改master,worker三台服务器的docker和kubernetes安装源为本地YUM仓库地址。
vim kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://172.17.3.143:8080/kubernetes/
enabled=1
gpgcheck=0
vim docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=http://172.17.3.143:8080/docker-ce-stable/
enabled=1
gpgcheck=0
5.2、更新本地yum仓库,重新索引
yum update