Rancher 2.x 生产环境HA(高可用)部署

Rancher官方中文文档:https://www.rancher.cn/docs/rancher/v2.x/cn/overview/

本次实验,为Ranche七层负载均衡Helm HA部署

一、环境准备

1、服务器配置

服务器使用腾讯云的虚拟机具体配置如下:

主机名称 系统版本 内网ip 公网ip 配 置
master1 CentOS 7.6 172.27.100.101 xxx 4C 16G
master2 CentOS 7.6 172.27.100.101 xxx 4C 16G
master3 CentOS 7.6 172.27.100.101 xxx 4C 16G

因使用7层负载均衡,需要一个LB,这里使用腾讯云的云负载均衡(实验环境可以使用nginx)

(1) 配置每台主机的hosts(/etc/hosts),添加host_ip $hostname到/etc/hosts文件中。

(2) 关闭selinux:

sudo sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/selinux/config

(3) 测试环境关闭防火墙或者开启相应端口,参考https://www.rancher.cn/docs/rancher/v2.x/cn/install-prepare/references/

填坑备注:这里我的内网是全部开了的,然而部署的时候有报错,需要开放对应端口让服务器的公网ip可以访问~(居然不走内网ip,不知道是什么情况~)

2、Docker安装及配置

正常安装Docker,唯一注意的地方是:因为CentOS的安全限制,通过RKE安装K8S集群时候无法使用root账户。CentOS用户使用非root用户来运docker

(1) 配置安装源

yum install ca-certificates ;
update-ca-trust;

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo-bak
cat << ‘EOF‘ > /etc/yum.repos.d/CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

EOF

(2) 安装Docker

# 定义用户名
NEW_USER=rancher
# 添加用户(可选)
sudo adduser $NEW_USER
# 为新用户设置密码
sudo passwd $NEW_USER
# 为新用户添加sudo权限
sudo echo "$NEW_USER ALL=(ALL) ALL" >> /etc/sudoers
# 卸载旧版本Docker软件
sudo yum remove docker               docker-client               docker-client-latest               docker-common               docker-latest               docker-latest-logrotate               docker-logrotate               docker-selinux               docker-engine-selinux               docker-engine               container*
# 定义安装版本
export docker_version=19.03.1
# step 1: 安装必要的一些系统工具
sudo yum update -y;
sudo yum install -y yum-utils device-mapper-persistent-data     lvm2 bash-completion;
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo;
# Step 3: 更新并安装 Docker-CE
sudo yum makecache all;
version=$(yum list docker-ce.x86_64 --showduplicates | sort -r|grep ${docker_version}|awk ‘{print $2}‘;
sudo yum -y install --setopt=obsoletes=0 docker-ce-${version} docker-ce-selinux-${version};
# 如果已经安装高版本Docker,可进行降级安装(可选)
yum downgrade --setopt=obsoletes=0 -y docker-ce-${version} docker-ce-selinux-${version};
# 把当前用户加入docker组
sudo usermod -aG docker $NEW_USER;
# 设置开机启动
sudo systemctl enable docker;

(3) 修改Docker配置

daemon.json默认位于/etc/docker/daemon.json,如果没有可手动创建,基于systemd管理的系统都是相同的路径。通过修改daemon.json来改过Docker配置,也是Docker官方推荐的方法。

1、配置私有仓库
Docker默认只信任TLS加密的仓库地址(https),所有非https仓库默认无法登陆也无法拉取镜像。insecure-registries字面意思为不安全的仓库,通过添加这个参数对非https仓库进行授信。可以设置多个insecure-registries地址,以数组形式书写,地址不能添加协议头(http)。
{
"insecure-registries": ["harbor.xxx.cn:30002"]
}

2、配置存储驱动
OverlayFS是一个新一代的联合文件系统,类似于AUFS,但速度更快,实现更简单。Docker为OverlayFS提供了两个存储驱动程序:旧版的overlay,新版的overlay2(更稳定)。

先决条件:

overlay2: Linux内核版本4.0或更高版本,或使用内核版本3.10.0-514+的RHEL或CentOS。
overlay: 主机Linux内核版本3.18+
支持的磁盘文件系统
ext4(仅限RHEL 7.1)
xfs(RHEL7.2及更高版本),需要启用d_type=true。

{
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"]
}

3、配置日志驱动
容器在运行时会产生大量日志文件,很容易占满磁盘空间。通过配置日志驱动来限制文件大小与文件的数量。 >限制单个日志文件为50M,最多产生3个日志文件
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}

最终配置文件如下:

{
"insecure-registries": ["harbor.xxx.cn:30002"]
}

{
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"]
}

{
"log-driver": "json-file",
"log-opts": {
    "max-size": "50m",
    "max-file": "3"
    }
}

3、安装RKE

Rancher Kubernetes Engine(RKE)是一款轻量级Kubernetes安装程序,支持在裸机和虚拟化服务器上安装Kubernetes。 RKE解决了Kubernettes社区中的一个常见问题,比如:安装复杂性。RKE支持多种平台运行,比如MacOS,linux,windows。
这里在master1上安装rke:

1、下载二进制文件
https://www.rancher.cn/docs/rancher/v2.x/cn/install-prepare/download/rke/

2、运行一下命令测试:

chmod +x rke_linux-amd64
./rke_linux-amd64 --version

4、安装kubectl

kubectl是一个CLI命令行工具,用于运行Kubernetes集群的命令。Rancher 2.x中的许多维护和管理都需要它。
这里在master1上安装kubectl:

1、下载二进制文件
https://www.rancher.cn/docs/rancher/v2.x/cn/install-prepare/download/kubernetes/

2、确保kubectl二进制文件是可执行文件。

chmod +x ./kubectl

3、将kubectl二进制文件移动到PATH路径下。

sudo mv ./kubectl /usr/local/bin/kubectl

4、配置kubectl
使用RKE创建Kubernetes集群时,RKE会在本地目录中创建一个包含认证信息的配置文件kube_config_rancher-cluster.yml,以使用kubectl或helm等工具连接到新集群。

可以将此文件复制到$HOME/.kube/config


cp kube_config_rancher-cluster.yml ~/.kube/config
export KUBECONFIG=$(pwd)/kube_config_rancher-cluster.yml

4、配置kubectl的shell补全

CentOS Linux上,您可能需要安装默认情况下未安装的bash-completion软件包。

yum install bash-completion -y

运行source <(kubectl completion bash)可将kubectl自动补全添加到当前shell,要使kubectl自动补全命令自动加载:

echo "source <(kubectl completion bash)" >> ~/.bashrc

二、安装

1、配置负载均衡器

使用腾讯***云负载均衡,导入域名ssl证书(此处的域名须有后面配置访问域名一致,我使用的是免费一年的ssl证书?(^?^)),把10443端口绑定到master1,master2,master3的80端口即可~
备注:需要开通对应的安全规则,即负载均衡的ip能访问master1、2、3的80端口

2、RKE安装K8S

(1) 在master1上创建rke安装文件rancher-cluster.yml

#vim rancher-cluster.yml

nodes:
  - address: xxx.xxx.xxx.xxx
    internal_address: 172.27.100.101
    user: rancher
    role: [controlplane,worker,etcd]
    hostname_override: master1
  - address: xxx.xxx.xxx.xxx
    internal_address: 172.27.100.102
    user: rancher
    role: [controlplane,worker,etcd]
    hostname_override: master2
  - address: xxx.xxx.xxx.xxx
    internal_address: 172.27.100.103
    user: rancher
    role: [controlplane,worker,etcd]
    hostname_override: master3

services:
  etcd:
    backup_config:
        enabled: true
        interval_hours: 6
        retention: 60

备注:
address 公共域名或IP地址
user 可以运行docker命令的用户
role 分配给节点的Kubernetes角色列表
internal_address 内部集群通信的私有域名或IP地址
开启了etcd的备份机制,每隔6小时备份一次,保存60天数据

(2) 创建K8S集群及测试

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

完成后,会创建一个文件kube_config_rancher-cluster.yml。这个文件包含kubectl和helm访问K8S的凭据。可以将此文件复制到$HOME/.kube/config,或者如果您正在使用多个Kubernetes集群,请将KUBECONFIG环境变量设置为kube_config_rancher-cluster.yml文件路径。

备注:保存好kube_config_rancher-cluster.yml和rancher-cluster.yml,之后的维护和升级需要用到!

export KUBECONFIG=$(pwd)/kube_config_rancher-cluster.yml
cp kube_config_rancher-cluster.yml /root/.kube/config/

使用kubectl get nodes测试:

3、安装和配置Helm

Helm是Kubernetes首选的包管理工具。Helmcharts为Kubernetes YAML清单文档提供模板语法。使用Helm,可以创建可配置的部署,而不仅仅是使用静态文件。Helm有两个部分:Helm客户端(helm)和Helm服务端(Tiller)。

(1) 配置Helm客户端访问权限

master1上,在上一步生成的kube_config_rancher-cluster.yml文件的同级目录下运行:

kubectl --kubeconfig=kube_configxxx.yml -n kube-system create serviceaccount tiller
kubectl --kubeconfig=kube_configxxx.yml create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller

备注:在kube-system命名空间中创建ServiceAccount;创建ClusterRoleBinding以授予tiller帐户对集群的访问权限;helm初始化tiller服务

(2) 安装Helm客户端

1、下载helm:
https://www.rancher.cn/docs/rancher/v2.x/cn/install-prepare/download/helm/

2、解压缩及配置:

tar -zxvf helm-v2.x.x-linux-amd64.tgz
helm在解压后的目录中找到二进制文件,并将其移动到所需的位置
mv linux-amd64/helm /usr/local/bin/helm && chmod +x /usr/local/bin/helm

(3) 安装Helm服务端(Tiller)

master1上,在上一步生成的kube_config_rancher-cluster.yml文件的同级目录下运行:

kubeconfig=xxx.yml

helm_version=`helm version |grep Client | awk -F""\" ‘{print $2}‘`
helm init --kubeconfig=$kubeconfig --service-account tiller --skip-refresh --tiller-image registry.cn-shanghai.aliyuncs.com/rancher/tiller:$helm_version 

备注:
1、RKE默认启用RBAC,所以在安装tiller时需要指定ServiceAccount。
2、helm init在缺省配置下,会去谷歌镜像仓库拉取gcr.io/kubernetes-helm/tiller镜像,在Kubernetes集群上安装配置Tiller;由于在国内可能无法访问gcr.io、storage.googleapis.com等域名,可以通过--tiller-image指定私有镜像仓库镜像。
3、helm init在缺省配置下,会利用https://kubernetes-charts.storage.googleapis.com作为缺省的stable repository地址,并去更新相关索引文件。在国内可能无法访问storage.googleapis.com地址, 可以通过--stable-repo-url指定chart国内加速镜像地址。
4、如果您是离线安装Tiller, 假如没有内部的chart仓库, 可通过添加--skip-refresh参数禁止Tiller更新索引。

4、Helm安装Rancher

(1) 添加Chart仓库地址

helm repo add rancher-stable https://releases.rancher.com/server-charts/stable

(2) 配置SSL并安装Rancher Server

SSL证书使用腾讯云提供的一年免费证书,自签名证书参考官网

export KUBECONFIG=/home/rancher/kube_config_rancher-cluster.yml
helm --kubeconfig=$KUBECONFIG install rancher-stable/rancher     --name rancher --namespace cattle-system     --set hostname=paas.yunjingtech.cn     --set tls=external

安装成功后,输入之前配置的域名即可~

备注:
登陆后查看,system空间,若cattle-cluster-agent Pod和cattle-node-agent无法正常运行,需要为其添加主机别名:

export kubeconfig=xxx/xxx/xx.kubeconfig.yml

kubectl --kubeconfig=$kubeconfig -n cattle-system     patch deployments rancher --patch ‘{
        "spec": {
            "template": {
                "spec": {
                    "hostAliases": [
                        {
                            "hostnames":
                            [
                                "xxx.cnrancher.com"
                            ],
                                "ip": "xxxxxx"
                        }
                    ]
                }
            }
        }
    }‘
export kubeconfig=xxx/xxx/xx.kubeconfig.yml

kubectl --kubeconfig=$kubeconfig -n cattle-system patch deployments cattle-cluster-agent --patch ‘{
    "spec": {
        "template": {
            "spec": {
                "hostAliases": [
                    {
                        "hostnames":
                        [
                            "demo.cnrancher.com"
                        ],
                            "ip": "xxxxxx"
                    }
                ]
            }
        }
    }
}‘
export kubeconfig=xxx/xxx/xx.kubeconfig.yml

kubectl --kubeconfig=$kubeconfig -n cattle-system patch  daemonsets cattle-node-agent --patch ‘{
    "spec": {
        "template": {
            "spec": {
                "hostAliases": [
                    {
                        "hostnames":
                        [
                            "xxx.rancher.com"
                        ],
                            "ip": "xxxxxx"
                    }
                ]
            }
        }
    }
}‘

rancher安装期间遇到的最大问题就是一些地方未配置安全组造成的!好在最后都解决了,之后会继续分享,rancher平台CICD的使用,部署持久性存储Ceph,部署Harbor、Gitlab、Nexus3等过程中遇到的问题及处理办法~~ (^U^)ノ~YO

原文地址:https://blog.51cto.com/bilibili/2440304

时间: 2024-11-10 16:06:50

Rancher 2.x 生产环境HA(高可用)部署的相关文章

第2节 Spark集群安装:1 - 3;第3节 Spark HA高可用部署:1 - 2

三. Spark集群安装 3.1 下载spark安装包 下载地址spark官网:http://spark.apache.org/downloads.html 这里我们使用 spark-2.1.3-bin-hadoop2.7版本. 3.2 规划安装目录 /export/servers 3.3 解压安装包 tar -zxvf spark-2.1.3-bin-hadoop2.7.tgz 3.4 重命名目录 mv spark-2.1.3-bin-hadoop2.7 spark 3.5 修改配置文件 配置

Spark HA高可用部署

1.说明: Spark Standalone 集群是Master--Slaves架构的集群模式,和大部分的Master--Slaves 结构集群一样,存在着Master单点故障的问题.Spark提供了两种解决方案去解决这个单点故障的问题: 方案一:基于文件系统的单点恢复 主要用于开发或测试环境,spark提供目录保存spark Application 和worker的注册信息,并将他们的恢复状态写入该目录中,这时,一旦Master发生故障,就可以通过重新启动Master进程(sbin/strar

OpenStack Mitaka HA高可用搭建

OpenStack Mitaka HA高可用搭建mini试看版version 1.0环境虚拟机列表:10.1.1.120 controller1 controller1.test.com10.1.1.121 controller2 controller2.test.com10.1.1.122 controller3 controller3.test.com10.1.1.133 compute1 compute1.test.com10.1.1.134 glance-backend backend.

CentOS7+Hadoop2.7.2(HA高可用+Federation联邦)+Hive1.2.1+Spark2.1.0 完全分布式集群安装

1       VM网络配置... 3 2       CentOS配置... 5 2.1             下载地址... 5 2.2             激活网卡... 5 2.3             SecureCRT. 5 2.4             修改主机名... 6 2.5             yum代理上网... 7 2.6             安装ifconfig. 8 2.7             wget安装与代理... 8 2.8       

搭建HA高可用集群

搭建HA高可用集群 一.搭建集群的准备环境 有三台机器,两台上装ricci,另外一台装luci Luci管理机:172.25.47.6 Ricci节点:172.25.47.4   172.25.47.5 Yum仓库: Yum仓库中要指向其他的一些包 注意:yum仓库一般是从Server目录中下载包,但是也有一些其他的包在其他的目录下,因此此次yum 源的配置会和以往不一样 Yum源中配置的是这几个模块: 防火墙方面: 永久关闭防火墙 Selinux方面: 由于这些套件是redhat自带的,所以可

HA高可用的搭建

HA 即 (high available)高可用,又被叫做双机热备,用于关键性业务. 简单理解就是,有两台机器A和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B机器继续提供服务.常用实现高可用的开源软件有heartbeat和keepalived,其中keepalived有负载均衡的功能.<ignore_js_op> HA高可用搭建目的及环境说明: 这次是为nginx服务搭建高可用集群. 环境说明:1台主服务器,一台备用服务器. 其中主服务器的eth0 192.168.2.77

【4】搭建HA高可用hadoop-2.3(部署配置HBase)

[1]搭建HA高可用hadoop-2.3(规划+环境准备) [2]搭建HA高可用hadoop-2.3(安装zookeeper) [3]搭建HA高可用hadoop-2.3(部署配置hadoop--cdh5.1.0) [4]搭建HA高可用hadoop-2.3(部署配置HBase) 部署配置habase (1)安装habase master1.slave1.slave2.slave3 #cd /opt #tar xf  hbase-0.98.1-cdh5.1.0.tar.gz #ln -s  hbas

Heartbeat学习笔记--HA高可用集群实现

一.部署环境: 服务器版本:CentOS6.5 双主热备模式: VIP:192.168.3.30(MASTER上) VIP:192.168.3.32(BACKUP上) 主机网络参数: 接口 MASTER BACKUP 说明 eth1 192.168.3.23 192.168.3.24 内网管理IP eth2 192.168.5.23 192.168.5.24 心跳线 eth3 192.168.2.23 192.168.2.24 外网(临时下载文件用) 网络拓扑: 二.需求分析: 通过Heartb

HA高可用

HA:高可用----------------------------------------------------------- 1.Quorum Journal Manager:群体日志管理 个数2n+1个,保证节点宕机次数为(n-1)/2;一般情况下,JNS在slave节点开启: 2.HA的namenode个数:一定是两个:nn1和nn2; 3.搭建HA步骤: 0.创建软连接:指向hadoop_cluster_HA 1.修改[hdfs-site.xml] <property> <n