生產環境高可用rancher搭建步驟

整體步驟:node

  1. 使用RKE安裝Kubernetes
  2. 安裝配置Helm與其服務器端部分Tiller
  3. Helm安裝Rancher
  4. 配置負載均衡。

 

----------------------------------------------------------------------------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文件;

  • 使用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狀態。

 

 

 

四、檢查集羣Pod的運行情況

  • Pods是Running或者Completed狀態。
  • READY列顯示全部正在運行的容器 (i.e. 3/3),STATUS顯示POD是Running
  • Pods的STATUSCompletedrun-one Jobs,這些podsREADY應該爲0/1

 

5、保存配置文件

保存kube_config_rancher-cluster.ymlrancher-cluster.yml文件的副本,您將須要這些文件來維護和升級Rancher實例。

 

 

 

 

二- 安裝配置Helm

HelmKubernetes首選的包管理工具。HelmchartsKubernetes YAML清單文檔提供模板語法。使用Helm,咱們能夠建立可配置的部署,而不只僅是使用靜態文件。有關建立本身的charts的更多信息,請查看https://helm.sh/文檔。Helm有兩個部分:Helm客戶端(helm)Helm服務端(Tiller)

一、配置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

 

 

 

 

 

二、安裝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)。一旦鏈接,它將安裝tillerkube-system命名空間中。

helm init自定義參數:

  • --canary-image 參數安裝金絲雀版本;
  • --tiller-image 安裝特定的鏡像(版本);
  • --kube-context 使用安裝到特定集羣;
  • --tiller-namespace 用一個特定的命名空間(namespace)安裝;

注意:1RKE默認啓用RBAC,因此在安裝tiller時須要指定ServiceAccount
2helm 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

 

 

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

一、添加Chart倉庫地址

使用helm repo add命令添加Rancher chart倉庫地址,訪問Rancher tagChart版本

替換<CHART_REPO>爲您要使用的Helm倉庫分支(lateststable)。

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

 

 

 

 

 

成功:

 

相關文章
相關標籤/搜索