Rancher(ha)2.0部署

Rancher2.0ha安装

环境

  • CentOS 7.5
  • Docker-ce 17.03
  • rke v0.1.11
  • kubectl Client v1.12.2, kubectl Server v1.11.3
  • helm Client v2.11.0, helm Server v2.11.0
主机名 IP 备注
k8s-master 10.176.56.232 负载均衡器,rancher url请求
k8s-node00 10.176.56.240 rancher node,etcd controlplane
k8s-node01 10.176.57.151 rancher node,worker
k8s-node01 10.176.57.152 rancher node,worker

注:ip随意,保证互通就行

1. 基础环境配置(所有节点)

1.1 hostname和hosts配置

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

[admin@k8s-master home]$ cat /etc/hostname 
k8s-master
[admin@k8s-master home]$ cat /etc/hosts
10.176.57.152 k8s-node02
10.176.57.151 k8s-node01
10.176.56.240 k8s-node00
10.176.56.232 k8s-master

1.2 CentOS关闭selinux

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

1.3 关闭防火墙(可选)或者放行相应端口

systemctl stop firewalld.service && systemctl disable firewalld.service
注:为了避免出现网络通信问题,此例我将防火墙直接关闭。如不选择关闭防火墙,可配置端口放行。端口放行可参考:https://www.cnrancher.com/docs/rancher/v2.x/cn/installation/references/

1.4 配置主机时间、时区、系统语言

修改时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

修改系统语言环境
sudo echo 'LANG="en_US.UTF-8"' >> /etc/profile;source /etc/profile

安装ntp服务
yum install ntp ntpdate -y

修改/etc/ntp.conf文件,将server0~server4全部注释然后添加自己或者其他的ntp服务器地址

#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 10.176.56.9 iburst

重启服务
systemctl restart ntpd.service

1.5 Kernel性能调优

cat >> /etc/sysctl.conf<<EOF
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.neigh.default.gc_thresh1=4096
net.ipv4.neigh.default.gc_thresh2=6144
net.ipv4.neigh.default.gc_thresh3=8192
EOF

保存配置
sysctl –p

2. Docker的安装与配置(所有节点)

2.1 修改系统源

sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
cat > /etc/yum.repos.d/CentOS-Base.repo << EOF

[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

生成缓存
sudo yum makecache

2.2 docker-ce 安装

yum install https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm  -y
yum install https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm  -y

把当前用户加入docker用户组

sudo usermod -aG dockerroot USERNAME
sudo systemctl restart docker
sudo chmod a+rw /var/run/docker.sock

注:USERNAME填写自己的用户名
注:因为CentOS的安全限制,通过RKE安装K8S集群时候无法使用root账户。所以,建议CentOS用户使用非root用户来运行docker

设置开机启动
sudo systemctl enable docker

2.3 docker-ce 配置

编辑/etc/docker/daemon.json文件

{
        "max-concurrent-downloads": 3,
        "max-concurrent-uploads": 5,
        "registry-mirrors": ["https://7bezldxe.mirror.aliyuncs.com/"],
        "storage-driver": "overlay2",
        "storage-opts": ["overlay2.override_kernel_check=true"],
        "log-driver": "json-file",
        "log-opts": {
            "max-size": "100m",
            "max-file": "3"
        }
}

有私有仓库的可加上自己的私有仓库 "insecure-registries": ["IP:PORT"]

3. 创建四层负载均衡(56.232节点)

3.1 推荐架构

3.2 必备工具

3.3 配置负载均衡器(56.232节点)

添加nginx源

vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

下载nginx
yum install -y nginx

配置/etc/nginx/nginx.conf文件

worker_processes 4;
worker_rlimit_nofile 40000;

events {
    worker_connections 8192;
}

http {
    server {
        listen         80;
        return 301 https://$host$request_uri;
    }
}

stream {
    upstream rancher_servers {
        least_conn;
        server 10.176.56.240:443 max_fails=3 fail_timeout=5s;
        server 10.176.57.151:443 max_fails=3 fail_timeout=5s;
        server 10.176.57.152:443 max_fails=3 fail_timeout=5s;
    }
    server {
        listen     443;
        proxy_pass rancher_servers;
    }
}

重新加载nginx服务
nginx -s reload

4. RKE安装kubernetes(56.232节点)

4.1 创建rancher-cluster.yml文件

[admin@k8s-master home]$ cat rancher-cluster.yml 
nodes:
  - address: 10.176.56.240
    user: admin
    role: [controlplane,etcd]
  - address: 10.176.57.151
    user: admin
    role: [worker]
  - address: 10.176.57.152
    user: admin
    role: [worker]

services:
  etcd:
    snapshot: true
    creation: 6h
    retention: 24h

如果您的节点有public and internal地址,建议设置internal_address:以便Kubernetes将其用于集群内通信

4.2 运行rke命令

下载rke_linux-amd64并放在和rancher-cluster.yml同目录下,修改rke_linux-amd64名称为rke

mv rke_linux-amd64 rke
chmod +x ./rke  
02.PNG

使用rke安装kubernetes
./rke up --config ./rancher-cluster.yml

rke.PNG

注:如果显示没有权限创建kube_config_rancher-cluster.yml文件,sudo也不能创建。可先手动创建一个kube_config_rancher-cluster.yml文件,并将其权限修改为普通用户可读写即可`

将kube_config_rancher-cluster.yml文件复制到HOME/.kube/config
cp kube_config_rancher-cluster.yml $HOME/.kube/config

将KUBECONFIG环境变量设置为kube_config_rancher-cluster.yml文件路径
export KUBECONFIG=$(pwd)/kube_config_rancher-cluster.yml

4.3 安装kubectl

下载kubectl_linux-amd64

确保kubectl二进制文件是可执行文件
chmod +x ./kubectl

将kubectl二进制文件移动到PATH路径下
sudo mv ./kubectl /usr/local/bin/kubectl

01.PNG

4.4 测试是否安装成功

rke-kubernetes.PNG

保存kube_config_rancher-cluster.yml和rancher-cluster.yml文件的副本,您将需要这些文件来维护和升级Rancher实例

5. 安装配置helm(56.232节点)

5.1 配置helm客户端访问权限

kubectl -n kube-system create serviceaccount tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller

Helm在集群上安装tiller服务以管理charts. 由于RKE默认启用RBAC, 因此我们需要使用kubectl来创建一个serviceaccount,clusterrolebinding才能让tiller具有部署到集群的权限

5.2 安装helm客户端

下载你需要的版本:https://github.com/helm/helm/releases

解压缩
tar -zxvf helm-v2.11.0-linux-amd64.tgz

使helm可执行
mv linux-amd64/helm /usr/local/bin/helm

在kube-system命名空间中创建ServiceAccount
kubectl -n kube-system create serviceaccount tiller

创建ClusterRoleBinding以授予tiller帐户对集群的访问权限
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller

5.3 安装Helm Server(Tiller)

helm init --service-account tiller --tiller-image registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.11.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

helm.PNG

查看tiller是否运行成功
kubectl get pods --namespace kube-system

tiller.PNG

6. helm安装rancher

6.1 添加chart仓库地址

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

6.2 安装证书管理器

helm install stable/cert-manager \
  --name cert-manager \
  --namespace kube-system

只有Rancher自动生成的证书和LetsEncrypt颁发的证书才需要cert-manager。如果是你自己的证书,可使用ingress.tls.source=secret参数指定证书,并跳过此步骤。可参考https://www.cnrancher.com/docs/rancher/v2.x/cn/installation/server-installation/ha-install/helm-rancher/rancher-install/

6.3 选择SSL配置方式并安装Rancher server(rancher自动生成证书)

helm install rancher-stable/rancher \
  --name rancher \
  --namespace cattle-system \
  --set hostname=k8s-master

内网环境可添加 --set proxy=" " 和 --set noProxy=" "来设置代理

6.4 为Agent Pod添加主机别名(/etc/hosts)

如果你没有内部DNS服务器而是通过添加/etc/hosts主机别名的方式指定的Rancher server域名,那么不管通过哪种方式(自定义、导入、Host驱动等)创建K8S集群,K8S集群运行起来之后,因为cattle-cluster-agent Pod和cattle-node-agent无法通过DNS记录找到Rancher server,最终导致无法通信。

export KUBECONFIG=xxx/xxx/xx.kubeconfig.yaml #指定kubectl配置文件
kubectl -n cattle-system patch  deployments cattle-cluster-agent --patch '{
    "spec": {
        "template": {
            "spec": {
                "hostAliases": [
                    {
                        "hostnames":
                        [
                            "k8s-master"
                        ],
                            "ip": "10.176.56.232"
                    }
                ]
            }
        }
    }
}'
export KUBECONFIG=xxx/xxx/xx.kubeconfig.yaml #指定kubectl配置文件
kubectl -n cattle-system patch  daemonsets cattle-node-agent --patch '{
    "spec": {
        "template": {
            "spec": {
                "hostAliases": [
                    {
                        "hostnames":
                        [
                            "k8s-master"
                        ],
                            "ip": "10.176.56.232"
                    }
                ]
            }
        }
    }
}'
连接不是私密连接.PNG

我没有域名服务器所有直接将ip加到了访问rancher的机器的hosts里面,出现不是安全连接,点击高级👉继续前往

rancher ui.PNG

rancher(ha).PNG

访问https://k8s-master,创建admin密码即可

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

推荐阅读更多精彩内容