总体步骤:
- 使用RKE安装Kubernetes
- 安装配置Helm与其服务器端部分Tiller
- Helm安装Rancher
- 配置负载均衡。
----------------------------------------------------------------------------
基本情况与要点:
本次安装用了三台服务器:
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
。
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状态。
4、检查集群Pod的运行状况
- Pods是
Running
或者Completed
状态。 READY
列显示所有正在运行的容器 (i.e.3/3
),STATUS
显示POD是Running
。- Pods的
STATUS
是Completed
为run-one Jobs
,这些podsREADY
应该为0/1
。
五、保存配置文件
保存kube_config_rancher-cluster.yml
和rancher-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
来创建一个serviceaccount
,clusterrolebinding
才能让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
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
3.安装Helm Server(Tiller)
Helm的服务器端部分Tiller,通常运行在Kubernetes集群内部。但是对于开发,它也可以在本地运行,并配置为与远程Kubernetes集群通信。
1、快捷集群内安装
安装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安装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>
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
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
成功: