整體步驟: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
成功: