RKE离线安装Rancher集群-2.4.8

1、准备节点

先决条件

kubernetes 安装 (推荐)
  • 操作系统:CentOS 7.8.2003 (Core) 3.10.0-1127.el7.x86_64(最小化安装)
    基本初始化:安装必要工具,关闭selinux,firewalld
yum install vim wget telnet net-tools -y
systemctl disable firewalld
systemctl stop firewalld
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
ntpdate ntp.aliyun.com
Docker安装
  • yum安装
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo systemctl start docker
sudo systemctl enable docker

私有仓库
  • 选用harbor仓库(用于同步镜像)
  • 配置私有仓库及加速地址
vim /etc/docker/daemon.json
{
    "registry-mirrors":["https://zka0zo66.mirror.aliyuncs.com"],
        "insecure-registries": ["https://harbor.ddc.com","https://registry.ddc.com"]

}
CLI工具
  • kubectl:kubernetes命令行工具
  • rke:Rancher
    Kubernetes引擎,用于构建集群的Cli。
  • helm:Kubernetes的软件包管理。

2.同步镜像到私有镜像仓库

先决条件

  • 浏览https://github.com/rancher/rancher/releases,查找对应的版本,不要下载标记为 rc 或 Pre-release 的版本,因为它们在生产环境下是不稳定的。
  • 从发行版 Assets 部分下载以下文件:
Release文件 描述
rancher-images.txt 此文件包含安装 Rancher、创建集群和运行 Rancher 工具所需的镜像列表。
rancher-save-images.sh 这个脚本会从 DockerHub 中拉取在文件rancher-images.txt中描述的所有镜像,并将它们保存为文件rancher-images.tar.gz。
rancher-load-images.sh 这个脚本会载入文件rancher-images.tar.gz中的镜像,并将它们推送到您自己的私有镜像库。
  • 收集及保存所需要的镜像
# 对镜像列表进行排序和唯一化,以去除重复的镜像源。
sort -u rancher-images.txt -o rancher-images.txt
# 对镜像列表进行排序和唯一化,以去除重复的镜像源。
chmod +x rancher-save-images.sh
# 执行脚本rancher-save-images.sh并以--image-list ./rancher-images.txt 作为参数,创建所需镜像的压缩包
./rancher-save-images.sh --image-list ./rancher-images.txt
  • 推送镜像到私有仓库
# 登录私有仓库
docker login <REGISTRY.YOURDOMAIN.COM:PORT>
# 添加rancher-load-images.sh文件的可执行权限
chmod +x rancher-load-images.sh
# 使用脚本 rancher-load-images.sh提取rancher-images.tar.gz文件中的镜像,根据文件rancher-images.txt中的镜像列表对提取的镜像文件重新打 tag 并推送到您的私有镜像库中。
./rancher-load-images.sh --image-list ./rancher-images.txt --registry <REGISTRY.YOURDOMAIN.COM:PORT>`

3.安装 Kubernetes 集群

创建 RKE 配置文件

在可以访问主机节点上的端口 22 / tcp 和 6443 / tcp 的系统上,使用以下示例创建一个名为rancher-cluster.yml的新文件。该文件是 Rancher Kubernetes Engine 的配置文件(RKE 配置文件)

使用您创建的3 个节点的 IP 地址或 DNS 名称,替换下面的代码示例中的值。

RKE选项

选项 必选 描述
address ✔️ 离线环境中节点的 DNS 或 IP
user ✔️ 可以在节点上执行 docker 命令的用户
roule ✔️ 给节点分配的 Kubernetes 角色列表
internal_address 可选 离线环境中节点的内部 DNS 或内网 IP
ssh_key_path 用来登录节点的 SSH 私钥文件路径(默认值为~/.ssh/id_rsa)
vim rancher-cluster.yml
nodes:
  - address: 10.10.3.187 # 离线环境节点 IP
    internal_address: 172.31.7.22 # 节点内网 IP
    user: rancher
    role: ["controlplane", "etcd", "worker"]
    ssh_key_path: /home/user/.ssh/id_rsa
  - address: 10.10.3.254 # 离线环境节点 IP
    internal_address: 172.31.13.132 # 节点内网 IP
    user: rancher
    role: ["controlplane", "etcd", "worker"]
    ssh_key_path: /home/user/.ssh/id_rsa
  - address: 10.10.3.89 # 离线环境节点 IP
    internal_address: 172.31.3.216 # 节点内网 IP
    user: rancher
    role: ["controlplane", "etcd", "worker"]
    ssh_key_path: /home/user/.ssh/id_rsa

private_registries:
  - url: <REGISTRY.YOURDOMAIN.COM:PORT> # 私有镜像库地址
    user: rancher
    password: "*********"
    is_default: true)

执行RKE

rke up --config ./rancher-cluster.yml

保存文件

故障排查和升级集群时,需要用到以下文件,请将它们的的副本保存在安全的位置:

  • rancher-cluster.yml:RKE 配置文件
  • kube_config_rancher-cluster.yml:Kubeconfig 文件
  • rancher-cluster.rkestate:Kubernetes 集群状态文件
it@ITdeMacBook-Pro ~/rancher-rke (master)> kubectl --kubeconfig ./kube_config_rancher-cluster.yml get pods --all-namespaces
NAMESPACE       NAME                                      READY   STATUS      RESTARTS   AGE
ingress-nginx   default-http-backend-c5858f787-h4hls      1/1     Running     0          7m54s
ingress-nginx   nginx-ingress-controller-6wftp            1/1     Running     0          7m57s
ingress-nginx   nginx-ingress-controller-hgvpk            1/1     Running     0          7m57s
ingress-nginx   nginx-ingress-controller-rpp8n            1/1     Running     0          7m57s
kube-system     canal-bx256                               2/2     Running     0          8m39s
kube-system     canal-gh76k                               2/2     Running     0          8m39s
kube-system     canal-nxgkm                               2/2     Running     0          8m39s
kube-system     coredns-65cc9c4f59-76whl                  1/1     Running     0          8m8s
kube-system     coredns-65cc9c4f59-k5t5k                  1/1     Running     0          8m29s
kube-system     coredns-autoscaler-84578cd8d5-kbfnk       1/1     Running     0          8m27s
kube-system     metrics-server-6759fcbd77-l4zbw           1/1     Running     0          8m12s
kube-system     rke-coredns-addon-deploy-job-tx84n        0/1     Completed   0          8m35s
kube-system     rke-ingress-controller-deploy-job-2tz74   0/1     Completed   0          8m7s
kube-system     rke-metrics-addon-deploy-job-2bsp4        0/1     Completed   0          8m25s
kube-system     rke-network-plugin-deploy-job-427bb       0/1     Completed   0          8m41s

4.安装Rancher

添加 Helm Chart 仓库

从可以访问 Internet 的系统中,获取最新的 Rancher Helm Chart,然后将内容复制到可以访问 Rancher Server 集群的系统中。

  1. 如果您还没有在有互联网访问的系统上进行 helm 初始化。请运行下面的命令。注意:请参考Helm 版本要求来选择一个 Helm 版本来安装 Rancher。
helm init -c
  1. 使用helm repo add来添加仓库,不同的地址适应不同的 Rancher 版本,请替换命令中的<CHART_REPO>,替换为latest,stable或alpha。
  • latest: 推荐在尝试新功能时使用。
  • stable: 推荐生产环境中使用。(推荐)
  • alpha: 未来版本的实验性预览。

helm repo add rancher-<CHART_REPO> https://releases.rancher.com/server-charts/<CHART_REPO>

  1. 获取最新的 Rancher Chart,您会看到对应的 tgz 文件下载到本地。

helm fetch rancher-<CHART_REPO>/rancher

SSL 配置

  1. 添加TLS密文
kubectl -n cattle-system create secret tls tls-rancher-ingress \
  --cert=tls.crt \
  --key=tls.key
  1. 使用私有CA签发证书
kubectl -n cattle-system create secret generic tls-ca \
  --from-file=cacerts.pem=./cacerts.pem

配置 Rancher Helm 模板

    helm template rancher ./rancher-<VERSION>.tgz --output-dir . \
   --namespace cattle-system \
   --set hostname=<RANCHER.YOURDOMAIN.COM> \
   --set rancherImage=<REGISTRY.YOURDOMAIN.COM:PORT>/rancher/rancher \
   --set ingress.tls.source=secret \
   --set privateCA=true \
   --set systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT> \ # 自v2.2.0可用,设置默认的系统镜像仓库
   --set useBundledSystemChart=true # 自v2.3.0可用,使用内嵌的 Rancher system charts

安装 Rancher

kubectl create namespace cattle-system
kubectl -n cattle-system apply -R -f ./rancher

Nginx配置实例

  • 将 IP_NODE1, IP_NODE2 和 IP_NODE3 替换为您的集群节点的 IP 地址。
  • 将出现的两个FQDN替换为 Rancher 的 DNS 名称。
  • 将/certs/fullchain.pem和/certs/privkey.pem分别替换为服务器证书和服务器证书密钥的位置。

NGINX 配置示例一

worker_processes 4;
worker_rlimit_nofile 40000;

events {
    worker_connections 8192;
}

stream {
    upstream rancher_servers_http {
        least_conn;
        server <IP_NODE_1>:80 max_fails=3 fail_timeout=5s;
        server <IP_NODE_2>:80 max_fails=3 fail_timeout=5s;
        server <IP_NODE_3>:80 max_fails=3 fail_timeout=5s;
    }
    server {
        listen 80;
        proxy_pass rancher_servers_http;
    }

    upstream rancher_servers_https {
        least_conn;
        server <IP_NODE_1>:443 max_fails=3 fail_timeout=5s;
        server <IP_NODE_2>:443 max_fails=3 fail_timeout=5s;
        server <IP_NODE_3>:443 max_fails=3 fail_timeout=5s;
    }
    server {
        listen     443;
        proxy_pass rancher_servers_https;
    }

}

NGINX 配置示例二

vim /etc/nginx.conf
worker_processes 4;
worker_rlimit_nofile 40000;

events {
    worker_connections 8192;
}

http {
    upstream rancher {
        server IP_NODE_1:80;
        server IP_NODE_2:80;
        server IP_NODE_3:80;
    }

    map $http_upgrade $connection_upgrade {
        default Upgrade;
        ''      close;
    }

    server {
        listen 443 ssl http2;
        server_name FQDN;
        ssl_certificate /certs/fullchain.pem;
        ssl_certificate_key /certs/privkey.pem;

        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://rancher;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            # 这里将允许您在 Rancher UI 中打开命令行窗口时,窗口可以保留最多15分钟。没有这个参数时,默认值为1分钟,一分钟后在Rancher中的shell会自动关闭。
            proxy_read_timeout 900s;
            proxy_buffering off;
        }
    }

    server {
        listen 80;
        server_name FQDN;
        return 301 https://$server_name$request_uri;
    }
}

将 NGINX 作为 Docker 容器运行

除了可以将 NGINX 作为软件包安装在操作系统上外,您也可以将其作为 Docker 容器运行。将已编辑的示例 NGINX 配置另存为/etc/nginx.conf并运行以下命令启动 NGINX 容器:

docker run -d --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  -v /etc/nginx.conf:/etc/nginx/nginx.conf \
  nginx:1.14
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351