RancherV2.5.10+K8S部署文档
1. RancherV2.5.10+K8S部署文档
作者 版本 修改内容 发布日期
一. 环境说明
1. rancher简介
Rancher 是为使用容器的公司打造的容器管理平台。Rancher 简化了使用 Kubernetes 的流程,开发者可以随处运行 Kubernetes(Run Kubernetes Everywhere),满足 IT 需求规范,赋能 DevOps 团队。 rancher1.x 支持docker compose、swarm、kubernates等集成,镜像名为rancher/server。
rancher2.15支持kubernates,镜像名为rancher/rancher。
2.环境部署说明
主机名 IP地址 系统版本 内核版本
kmaster01 10.82.232.39 CentOS7.4 3.10.0-693.el7.x86_64
knode01 10.82.232.42 Centos7.4 3.10.0-693.el7.x86_64
3.软件版本
软件名 版本 安装方式 安装主机
docker V19.3.9 源码安装 所有机器
k8s v1.18.20 rancher拉取镜 所有主机
二. 服务部署
1. 安装DOCKER
基础环境准备
# 创建目录 (根据磁盘大小创建目录)
mkdir -p /app/appdeploy
# 下载docker安装包
cd /app/appdeploy
https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz
# 解压
tar -xf docker-19.03..9.tgz
# 复制执行文件
cp /app/appdeploy/docker/* /usr/bin/
# 验证安装版本
docker --version
配置systemd启动
vim /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
#执行启动
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
DOCKER基础配置
# 配置docker镜像源
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://97bsbqhh.mirror.aliyuncs.com"],
"insecure-registries":["10.82.244.40"],
"data-root": "/app/appdeploy/docker/data"
}
# 创建docker数据存储目录(避免docker过大引起默认路径空间不够)
mkdir -p /app/appdeploy/docker/data
# 重启docker
systemctl daemon-reload
systemctl restart docker
# 配置docker公司私有镜像源
docker login 10.82.244.40
注: 提示账号密码地方,输入自己的工号及密码
2. 基础镜像部署到私有仓库
Rancher 镜像导入
# 由于公司服务器没有网络,需要先在自己本地虚拟机里面把所有镜像拉下来
1. 下载rancher需要的镜像列表及脚本 (官方已提供)
https://github.com/rancher/rancher/releases/download/v2.5.10/rancher-images.txt
https://github.com/rancher/rancher/releases/download/v2.5.10/rancher-save-images.sh
https://github.com/rancher/rancher/releases/download/v2.5.10/rancher-load-images.sh
2. 本地虚拟机使用脚本拉取镜像,以上三个文件同一个目录下
sh rancher-save-images.sh --image-list rancher-images.txt
注: 时间会很长,拉取有150多个镜像,保存完成以后会生成一个 rancher-images.tar.gz
3.把生成的镜像上传到kmatser机器(rancher-images.tar.gz)
注: 由于内网不能直接上传,需使用公司提供的ftp上传下载,方式如下:
## 公司内网FTP 使用方式
http://ftwk.sf-express.com/bin/view/IT%E5%9F%BA%E7%A1%80%E6%9E%B6%E6%9E%84/%E7%B3%BB%E7%BB%9F%E8%BF%90%E7%BB%B4/%E6%AD%A6%E6%B1%89%E7%BD%91%E7%BB%9C%E9%97%B4%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93%E8%A7%84%E5%88%99%E4%B8%8E%E4%BD%BF%E7%94%A8%E6%8C%87%E5%BC%95/
4. 在kmaster机器加载镜像
docker load -i rancher-images.tar.gz
# 导入完毕以后,查看镜像
docker image ls
# 查看镜像中是否包含flannel-0.15.1版本及rke-1.75版本,如果没有自行下载导入
docker load -i flannel_v0.15.1.tar
docker load -i rke-tools_v1.75.tar
推送rancher 镜像到私有仓库
1. 登录http://10.82.244.40/harbor/sign-in ,使用自己的工号及密码
2. 创建公共镜像仓库rancher
3. 编写传送脚本
cat rancher-push-images.sh
#!/bin/bash
## 镜像上传说明
# 须要先在镜像仓库中建立 rancher 项目
# 根据实际状况更改如下私有仓库地址
# 定义日志
workdir=`pwd`
log_file=${workdir}/sync_images_$(date +"%Y-%m-%d").log
logger()
{
log=$1
cur_time='['$(date +"%Y-%m-%d %H:%M:%S")']'
echo ${cur_time} ${log} | tee -a ${log_file}
}
images_hub() {
while true; do
read -p "输入镜像仓库地址(不加http/https): " registry
read -p "输入镜像仓库用户名: " registry_user
read -p "输入镜像仓库用户密码: " registry_password
echo "您设置的仓库地址为: ${registry},用户名: ${registry_user},密码: xxx"
read -p "是否确认(Y/N): " confirm
if [ $confirm != Y ] && [ $confirm != y ] && [ $confirm == '' ]; then
echo "输入不能为空,从新输入"
else
break
fi
done
}
images_hub
echo "镜像仓库 $(docker login -u ${registry_user} -p ${registry_password} ${registry})"
images=$(docker images -a | grep -v TAG | awk '{print $1 ":" $2}')
namespace=rancher
docker_push() {
for imgs in $(echo ${images}); do
n=$(echo ${imgs} | awk -F"/" '{print NF-1}')
#若是镜像名中没有/,那么此镜像必定是library仓库的镜像;
if [ ${n} -eq 0 ]; then
img_tag=${imgs}
#namespace=rancher
#重命名镜像
docker tag ${imgs} ${registry}/${namespace}/${img_tag}
#删除原始镜像
#docker rmi ${imgs}
#上传镜像
docker push ${registry}/${namespace}/${img_tag}
#若是镜像名中有一个/,那么/左侧为项目名,右侧为镜像名和tag
elif [ ${n} -eq 1 ]; then
img_tag=$(echo ${imgs} | awk -F"/" '{print $2}')
#namespace=$(echo ${imgs} | awk -F"/" '{print $1}')
#重命名镜像
docker tag ${imgs} ${registry}/${namespace}/${img_tag}
#删除旧镜像
#docker rmi ${imgs}
#上传镜像
docker push ${registry}/${namespace}/${img_tag}
#若是镜像名中有两个/,
elif [ ${n} -eq 2 ]; then
img_tag=$(echo ${imgs} | awk -F"/" '{print $3}')
#namespace=$(echo ${imgs} | awk -F"/" '{print $2}')
#重命名镜像
docker tag ${imgs} ${registry}/${namespace}/${img_tag}
#删除旧镜像
#docker rmi ${imgs}
#上传镜像
docker push ${registry}/${namespace}/${img_tag}
else
#标准镜像为四层结构,即:仓库地址/项目名/镜像名:tag,如不符合此标准,即为非有效镜像。
echo "No available images"
fi
done
}
docker_push
4. 执行脚本推送
sh rancher-push-images.sh rancher
注: 推送完成可以去镜像仓库看到镜像
3.安装RANCHER
安装rancher
# Kmater 机器安装
mkdir -p /app/appdeploy/rancher/
docker run -d --privileged --restart=unless-stopped -p 8880:80 -p 8843:443 -e CATTLE_SYSTEM_DEFAULT_REGISTRY=10.82.244.40 -e CATTLE_SYSTEM_CATALOG=bundled -v /app/appdeploy/rancher/rancher:/var/lib/rancher -v /app/appdeploy/rancher/auditlog:/var/log/auditlog 10.82.244.40/rancher/rancher:v2.5.10
# 完成安装以后浏览器输入登录
https://10.82.232.39:8843/
# 登录界面设置密码选择集群模式(由于公司google浏览器登录有问题,请使用edge)
# 创建集群sftest (并配置为仓库为私有仓库)
安装K8S
# 安装kmaster节点
选择集群-Registration Cmd->(勾选所有) -> 复制执行命令
在kmaster节点上执行:
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run 10.82.244.40/rancher/rancher-agent:v2.5.10 --server https://10.82.232.39:8843 --token 5dkz8p6zqtbw2bblts594tcwzz5259rglzjc88gzvspzcs4wjhwrzx --ca-checksum c20103b4e741187ddc5f089f48a6a1fe7807b7c2d7a90c7154a7d7516c7606b4 --etcd --controlplane --worker
# 安装work节点
选择集群-Registration Cmd->(勾选所有) -> 复制执行命令
在knode节点上执行:
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run 10.82.244.40/rancher/rancher-agent:v2.5.10 --server https://10.82.232.39:8843 --token 5dkz8p6zqtbw2bblts594tcwzz5259rglzjc88gzvspzcs4wjhwrzx --ca-checksum c20103b4e741187ddc5f089f48a6a1fe7807b7c2d7a90c7154a7d7516c7606b4 --worker
等待安装完成,可以看到正常节点