欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RancherV2.5.10+K8S部署文档

程序员文章站 2022-03-03 10:49:59
...

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                

 

等待安装完成,可以看到正常节点