总体步骤:

  1. 使用RKE安装Kubernetes
  2. 安装配置Helm与其服务器端部分Tiller
  3. Helm安装Rancher
  4. 配置负载均衡。

 

----------------------------------------------------------------------------

基本情况与要点:

本次安装用了三台服务器:
Rancher1:***.***.***.66

Rancher2:***.***.***.173

Rancher3:***.***.***.237

 

操作系统:centos7.5

Docker 版本:17.03.2-ce

kubernetes版本 v1.11.5

注:

RKE在Github上的readme中已有说明,Kubernetes1.8需要Docker 1.12.6、1.13.1、17.03,Kubernetes1.8不支持更高版本的Docker;

如果docker版本不对安装时会出现:Unsupported Docker version found [18.09.0], supported versions are [1.11.x 1.12.x 1.13.x 17.03.x]

 

 

主机名(hostname):

如果是克隆的系统一定要修改主机名,hostname主机名必须不同!

 

主机文件:

/etc/hosts要配置正确,一定要有127.0.0.1 localhost 这一项。Hosts文件中包含所有主机节点的IP和名称列表。使用vi进行编辑,不能使用中文全角的空格;

 

SELinux:

必须关闭!Ubuntu 16.04默认未安装,无需设置。CentOS7下可修改配置文件/etc/sysconfig/selinux,设置SELINUX=disabled ,重启后永久关闭。

 

IPV4转发:

必须开启!Ubuntu 16.04下默认已启用,无需设置。CentOS7 下可编辑配置文件/etc/sysctl.conf,设置启用转发,

net.ipv4.ip_forward = 1             

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

执行sudo sysctl -p 立刻生效。

 

防火墙:

开放集群主机节点之间6443、2379、2380端口,如果是刚开始试用,可以先关闭防火墙;Ubuntu默认未启用UFW防火墙,无需设置。也可手工关闭:sudo ufw disable

 

禁用SWAP:

一定要禁用swap,否则kubelet组件无法运行,永久禁用swap可以直接修改/etc/fstab文件,注释掉swap项。swapoff -a 只是临时禁用,下次关机重启又恢复原样;

启用Cgroup:

修改配置文件/etc/default/grub,启用cgroup内存限额功能,配置两个参数:

GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

 

注意:要执行sudo update-grub 更新grub,然后重启系统后生效。

 

SSH免密登录:

RKE通过SSH tunnel进行安装部署,需要事先建立RKE到各节点的SSH免密登录。如果集群中有5个节点,需要在RKE机器上执行1遍秘钥生成命令ssh-keygen +5次公钥分发命令ssh-copy-id user1@节点IP。如果执行RKE的本机也要加入到K8S集群中,也要使用ssh-copy-id user1@本机IP,将公钥分发到本机,对本机执行ssh免密配置,否则也会报错。免密配置方法: 。

 

RKE部署用户:

 

1、RKE部署用户是cluster.yml配置文件中的用户,也就是上述能ssh免密登录到其他机器的用户;

2、CentOS7不能用root用户,Ubuntu既可用root也可用普通用户;

3、如果使用普通用户进行RKE安装,要将普通用户(如user01)加入到docker组,命令:sudo usermod -aG docker user01 注意:重启系统以后才能生效,只重启Docker服务是不行的!重启后,user01用户也可以直接使用docker run命令。

4、在Ubuntu上使用apt安装完docker后,会自动创建docker用户组,无需手工创建docker组,只需要将部署RKE的用户(如user01)加入到docker组即可,查看是否存在docker组、以及user01用户是否在docker组中,可以直接查看/etc/group文件;

  • 使用RKE安装Kubernetes

 

 



1.创建rancher-cluster.yml文件

nodes:

  - address: ***.***.***.66

    internal_address: ***.***.***.246

    user: dockeruser

    role: [controlplane,worker,etcd]

  - address: ***.***.***.173

    internal_address: ***.***.***.71

    user: dockeruser

    role: [controlplane,worker,etcd]

  - address: ***.***.***.237

    internal_address: ***.***.***.243

    user: dockeruser

    role: [controlplane,worker,etcd]

 

services:

  etcd:

    snapshot: true

    creation: 6h

    retention: 24h

 

 



2.运行RKE命令

 

https://www.cnrancher.com/docs/rancher/v2.x/cn/installation/download/#rancher-rke

 

下载RKE 到服务器,

运行    ./rke_linux-amd64 up --config ./rancher-cluster.yml

 

完成后,它应显示:Finished building Kubernetes cluster successfully

生产环境选择centos 生产环境使用rancher吗_重启

 

 

 



3.测试集群

RKE应该已经创建了一个文件kube_config_rancher-cluster.yml。这个文件包含kubectl和helm访问K8S的凭据。

 

注意:如果你使用的文件不叫rancher-cluster.yml, 那么这个kube config配置文件将被命名为kube_config_<FILE_NAME>.yml。

 

您可以将此文件复制到$HOME/.kube/config,或者如果你正在使用多个Kubernetes集群,请将KUBECONFIG环境变量设置为kube_config_rancher-cluster.yml文件路径。

export KUBECONFIG=$(pwd)/kube_config_rancher-cluster.yml

通过kubectl测试您的连接,并查看您的所有节点是否处于Ready状态。

 

生产环境选择centos 生产环境使用rancher吗_重启_02

 

 



4、检查集群Pod的运行状况

  • Pods是Running或者Completed状态。
  • READY列显示所有正在运行的容器 (i.e. 3/3),STATUS显示POD是Running
  • Pods的STATUSCompletedrun-one Jobs,这些podsREADY应该为0/1

生产环境选择centos 生产环境使用rancher吗_生产环境选择centos_03

 



五、保存配置文件

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

 

 

 

 



二- 安装配置Helm

Helm是Kubernetes首选的包管理工具。Helmcharts为Kubernetes YAML清单文档提供模板语法。使用Helm,我们可以创建可配置的部署,而不仅仅是使用静态文件。有关创建自己的charts的更多信息,请查看https://helm.sh/文档。Helm有两个部分:Helm客户端(helm)和Helm服务端(Tiller)。



1、配置Helm客户端访问权限

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

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

 

kubectl -n kube-system create serviceaccount tiller

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

生产环境选择centos 生产环境使用rancher吗_重启_04

 

 

 

 

 



2、安装Helm客户端

Helm客户端,本次安装直接安装到了本地电脑 windows/mac/linux 安装方法见官网:

https://www.cnrancher.com/docs/rancher/v2.x/cn/installation/server-installation/ha-install/helm-rancher/helm-install/

 

我是用的windows包管理器choco直接安装 如图:

 

choco install kubernetes-helm

生产环境选择centos 生产环境使用rancher吗_重启_05



3.安装Helm Server(Tiller)

Helm的服务器端部分Tiller,通常运行在Kubernetes集群内部。但是对于开发,它也可以在本地运行,并配置为与远程Kubernetes集群通信。



1、快捷集群内安装



安装tiller到集群中最简单的方法就是运行helm init。这将验证helm本地环境设置是否正确(并在必要时进行设置)。然后它会连接到kubectl默认连接的K8S集群(kubectl config view)。一旦连接,它将安装tillerkube-system命名空间中。

helm init自定义参数:

  • --canary-image 参数安装金丝雀版本;
  • --tiller-image 安装特定的镜像(版本);
  • --kube-context 使用安装到特定集群;
  • --tiller-namespace 用一个特定的命名空间(namespace)安装;

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

执行以下命令在Rancher中安装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

 

生产环境选择centos 生产环境使用rancher吗_docker_06

 

helm init以后,可以运行kubectl get pods --namespace kube-system并看到Tiller正在运行。

一旦安装了Tiller,运行helm version会显示客户端和服务器版本。(如果它仅显示客户端版本, helm则无法连接到服务器, 使用kubectl查看是否有任何tiller Pod 正在运行。)

除非设置--tiller-namespaceTILLER_NAMESPACE参数,否则Helm将在命名空间kube-system中查找Tiller。

 

 

 



三 - Helm安装Rancher



1、添加Chart仓库地址

使用helm repo add命令添加Rancher chart仓库地址,访问Rancher tag和Chart版本

替换<CHART_REPO>为您要使用的Helm仓库分支(即latest或stable)。

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

生产环境选择centos 生产环境使用rancher吗_生产环境选择centos_07



2安装证书管理器(可选)

注意:只有Rancher自动生成的证书和LetsEncrypt颁发的证书才需要cert-manager。如果是你自己的证书,可使用ingress.tls.source=secret参数指定证书,并跳过此步骤。

Rancher依靠Kubernetes Helm stable仓库中的cert-manager来颁发自签名或LetsEncrypt证书.

从Helm stable目录安装cert-manager

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

生产环境选择centos 生产环境使用rancher吗_重启_08

 



3.选择SSL配置方式并安装Rancher server

默认情况下,Rancher会自动生成CA根证书并使用cert-manager颁发证书以访问Rancher server界面。

唯一的要求是将hostname配置为访问Rancher的域名地址,使用这种SSL证书配置方式需提前安装证书管理器。

修改hostname

helm install rancher-stable/rancher 
\
--name rancher 
\
--namespace cattle-system 
\
--set hostname
=
rancher.my.org

 

生产环境选择centos 生产环境使用rancher吗_生产环境选择centos_09

 

 

 

 

成功:

 

生产环境选择centos 生产环境使用rancher吗_数据库_10