總體步驟:
- 使用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免密配置,否則也會報錯。免密配置方法:http://blog.csdn.net/csdn_duomaomao/article/details/79164073 。
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
-
列顯示所有正在運作的容器 (i.e.READY
),3/3
顯示POD是STATUS
。Running
- Pods的
是STATUS
為Completed
,這些podsrun-one Jobs
應該為READY
。0/1
五、儲存配置檔案
儲存
kube_config_rancher-cluster.yml
和
rancher-cluster.yml
檔案的副本,您将需要這些檔案來維護和更新Rancher執行個體。
二- 安裝配置Helm
Helm是Kubernetes首選的包管理工具。Helm
charts
為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
- 建立
以授予tiller帳戶對叢集的通路權限ClusterRoleBinding
-
初始化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
-
用一個特定的命名空間(namespace)安裝;--tiller-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
以後,可以運作
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)。
2安裝證書管理器(可選)
注意:隻有Rancher自動生成的證書和LetsEncrypt頒發的證書才需要
cert-manager
。如果是你自己的證書,可使用
ingress.tls.source=secret
參數指定證書,并跳過此步驟。
Rancher依靠
Kubernetes Helm stable
倉庫中的cert-manager來頒發自簽名或LetsEncrypt證書.
從Helm stable目錄安裝
cert-manager
。
3.選擇SSL配置方式并安裝Rancher server
預設情況下,Rancher會自動生成
CA
根證書
并使用
cert-manager
頒發證書以通路Rancher server界面。
唯一的要求是将
hostname
配置為通路Rancher的域名位址,使用這種SSL證書配置方式需提前安裝證書管理器。
修改
hostname
成功:
版權聲明:本文為CSDN部落客「weixin_34352449」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/weixin_34352449/article/details/92005953