天天看點

生産環境高可用rancher搭建步驟二- 安裝配置Helm三 - Helm安裝Rancher

總體步驟:

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

----------------------------------------------------------------------------

基本情況與要點:

本次安裝用了三台伺服器:

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

生産環境高可用rancher搭建步驟二- 安裝配置Helm三 - Helm安裝Rancher

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狀态。

生産環境高可用rancher搭建步驟二- 安裝配置Helm三 - Helm安裝Rancher

4、檢查叢集Pod的運作狀況

  • Pods是

    Running

    或者

    Completed

    狀态。
  • READY

    列顯示所有正在運作的容器 (i.e. 

    3/3

    ),

    STATUS

    顯示POD是

    Running

  • Pods的

    STATUS

    Completed

    run-one Jobs

    ,這些pods

    READY

    應該為

    0/1

生産環境高可用rancher搭建步驟二- 安裝配置Helm三 - Helm安裝Rancher

五、儲存配置檔案

儲存

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

  • 建立

    ClusterRoleBinding

    以授予tiller帳戶對叢集的通路權限
  • helm

    初始化

    tiller

    服務

kubectl -n kube-system create serviceaccount tiller

kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller

生産環境高可用rancher搭建步驟二- 安裝配置Helm三 - Helm安裝Rancher

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

生産環境高可用rancher搭建步驟二- 安裝配置Helm三 - Helm安裝Rancher

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:

生産環境高可用rancher搭建步驟二- 安裝配置Helm三 - Helm安裝Rancher

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)。

生産環境高可用rancher搭建步驟二- 安裝配置Helm三 - Helm安裝Rancher

2安裝證書管理器(可選)

注意:隻有Rancher自動生成的證書和LetsEncrypt頒發的證書才需要

cert-manager

。如果是你自己的證書,可使用

ingress.tls.source=secret

參數指定證書,并跳過此步驟。

Rancher依靠

Kubernetes Helm stable

倉庫中的cert-manager來頒發自簽名或LetsEncrypt證書.

從Helm stable目錄安裝

cert-manager

生産環境高可用rancher搭建步驟二- 安裝配置Helm三 - Helm安裝Rancher

3.選擇SSL配置方式并安裝Rancher server

預設情況下,Rancher會自動生成

CA

根證書

并使用

cert-manager

頒發證書以通路Rancher server界面。

唯一的要求是将

hostname

配置為通路Rancher的域名位址,使用這種SSL證書配置方式需提前安裝證書管理器。

修改

hostname

生産環境高可用rancher搭建步驟二- 安裝配置Helm三 - Helm安裝Rancher

成功:

生産環境高可用rancher搭建步驟二- 安裝配置Helm三 - Helm安裝Rancher

版權聲明:本文為CSDN部落客「weixin_34352449」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_34352449/article/details/92005953