整体步骤:node
----------------------------------------------------------------------------linux
基本状况与要点:git
本次安装用了三台服务器:
Rancher1:***.***.***.66github
Rancher2:***.***.***.173docker
Rancher3:***.***.***.237windows
操做系统:centos7.5centos
Docker 版本:17.03.2-ceapi
kubernetes版本 v1.11.5服务器
注:负载均衡
RKE在Github上的readme中已有说明,Kubernetes1.8须要Docker 1.12.六、1.13.一、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 马上生效。
防火墙:
开放集群主机节点之间644三、237九、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免密配置,不然也会报错。免密配置方法:http://blog.csdn.net/csdn_duomaomao/article/details/79164073 。
RKE部署用户:
一、RKE部署用户是cluster.yml配置文件中的用户,也就是上述能ssh免密登陆到其余机器的用户;
二、CentOS7不能用root用户,Ubuntu既可用root也可用普通用户;
三、若是使用普通用户进行RKE安装,要将普通用户(如user01)加入到docker组,命令:sudo usermod -aG docker user01 注意:重启系统之后才能生效,只重启Docker服务是不行的!重启后,user01用户也能够直接使用docker run命令。
四、在Ubuntu上使用apt安装完docker后,会自动建立docker用户组,无需手工建立docker组,只须要将部署RKE的用户(如user01)加入到docker组便可,查看是否存在docker组、以及user01用户是否在docker组中,能够直接查看/etc/group文件;
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 |
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
。
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状态。
Running
或者Completed
状态。READY
列显示全部正在运行的容器 (i.e. 3/3
),STATUS
显示POD是Running
。STATUS
是Completed
为run-one Jobs
,这些podsREADY
应该为0/1
。
保存kube_config_rancher-cluster.yml
和rancher-cluster.yml
文件的副本,您将须要这些文件来维护和升级Rancher实例。
Helm是Kubernetes首选的包管理工具。Helmcharts
为Kubernetes YAML清单文档提供模板语法。使用Helm,咱们能够建立可配置的部署,而不只仅是使用静态文件。有关建立本身的charts
的更多信息,请查看https://helm.sh/文档。Helm有两个部分:Helm客户端(helm)和Helm服务端(Tiller)。
Helm在集群上安装tiller
服务以管理charts
. 因为RKE默认启用RBAC, 所以咱们须要使用kubectl
来建立一个serviceaccount
,clusterrolebinding
才能让tiller
具备部署到集群的权限。
ServiceAccount
;ClusterRoleBinding
以授予tiller账户对集群的访问权限helm
初始化tiller
服务
kubectl -n kube-system create serviceaccount tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
Helm客户端,本次安装直接安装到了本地电脑 windows/mac/linux 安装方法见官网:
我是用的windows包管理器choco直接安装 如图:
choco install kubernetes-helm
Helm的服务器端部分Tiller,一般运行在Kubernetes集群内部。可是对于开发,它也能够在本地运行,并配置为与远程Kubernetes集群通讯。
安装tiller
到集群中最简单的方法就是运行helm init
。这将验证helm
本地环境设置是否正确(并在必要时进行设置)。而后它会链接到kubectl
默认链接的K8S集群(kubectl config view
)。一旦链接,它将安装tiller
到kube-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.io
、
storage.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
helm init
之后,能够运行kubectl get pods --namespace kube-system
并看到Tiller正在运行。
一旦安装了Tiller,运行helm version会显示客户端和服务器版本。(若是它仅显示客户端版本, helm则没法链接到服务器, 使用kubectl
查看是否有任何tiller Pod 正在运行。)
除非设置--tiller-namespace
或TILLER_NAMESPACE
参数,不然Helm将在命名空间kube-system
中查找Tiller。
使用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>
注意:只有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
默认状况下,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
成功: