kubernetes (一)使用Rancher搭建集群


目錄

 

如何快速高效部署K8s集群

Rancher是什么

為什么是Rancher

1.0、安裝Rancher

1.1、環境

1.2、選擇Rancher版本

1.3、拉取鏡像

2.0、容器啟動高級選項

2.1、SSL加密方式訪問Rancher

默認自簽名證書:

自定義自簽名證書:

2.2、啟用API審核日志

2.3、Air Gap

2.4、持久化數據

3.0、啟動容器

4.0、訪問UI

5.0、Rancher多節點HA部署

5.1、准備:

5.2、部署需求:

HA 節點

MySQL數據庫

外部負載均衡服務器

5.3、HA模式下的RANCHER SERVER節點


 

如何快速高效部署K8s集群

眾所周知的K8s集群的部署非常麻煩而且坑又多,為了提升效率必須借助一些工具

Rancher是什么

Rancher是一個開源的企業級容器管理平台。通過Rancher,企業再也不必自己使用一系列的開源軟件去從頭搭建容器服務平台。Rancher提供了在生產環境中使用的管理Docker和Kubernetes的全棧化容器部署與管理平台。

為什么是Rancher

目前創建K8S集群的安裝程序最受歡迎的有Kops,Kubespray,kubeadm,rancher,以及個人提供的腳本集等。

(對於Kubernetes容器化的方式運行,容災恢復比在物理機優秀。所以忽略二進制部署在物理機上)

  • Kops和Kubespary在國外用的比較多,國內因為GFW原因使用不多。
  • kubeadm是Kubernetes官方提供的k8s部署工具,不過不支持HA,且支持的docker版本、K8S版本也有限,因此也不是生產首選的安裝程序。
  • Rancher2016年的新起之秀,可以做到極簡快速部署管理Docker,並支持多種編排方式:Cattle、Kubernetes、Mesos、Swarm等。通過修改鏡像庫的方式可以實現在國內的使用。所以我們選擇Rancher作為Docker管理部署框架。

 

Kubernetes官方文檔:https://kubernetes.io/docs/reference/

Kubernetes官方Git地址:https://github.com/kubernetes/kubernetes

Rancher官方地址: https://www.cnrancher.com/

 

1.0、安裝Rancher

1.1、環境

Centos7.4 

docker 18.06.1-ce

Rancher 2.0
三台服務器

k8s-master  192.168.146.50

k8s-node1  192.168.146.51

k8s-node1  192.168.146.52

1.2、選擇Rancher版本

Rancher Server 鏡像版本有兩個latest 和stable

Tag Description
rancher/rancher:latest 最新的開發版本。這些版本是通過我們的CI自動化框架進行驗證。這些版本不推薦用於生產環境。
rancher/rancher:stable 最新的穩定版本。這個標簽是生產建議。
rancher/rancher:<v2.X.X> 你可以安裝特定版本的Rancher,在DockerHub上查看那些tag可用。

Notes:

不要使用任何帶有 rc{n} 前綴的release,這些是Rancher測試團隊使用的

本文使用rancher/server:v2.0.0-beta4

1.3、拉取鏡像

[root@K8s-master ~]# docker pull registry.docker-cn.com/rancher/server:v2.0.0-beta4 
v2.0.0-beta4: Pulling from rancher/server
f56c16792d1e: Pull complete 
e2f3fcbcaacd: Pull complete 
29f1503c00f8: Pull complete 
b5ce6675ff39: Pull complete 
a29a9bdc981f: Pull complete 
4758641d8c60: Pull complete 
a30a6a05c4ed: Pull complete 
1ec93119bf5e: Pull complete 
74bc3b84fcb6: Pull complete 
567d9245728b: Pull complete 
Digest: sha256:09507919e8c16395393ab170b3129d3919ab6797d8f7fc1bdfc94cb4f989c151
Status: Downloaded newer image for registry.docker-cn.com/rancher/server:v2.0.0-beta4

2.0、容器啟動高級選項

2.1、SSL加密方式訪問Rancher

處於安全的目的,我們選擇通過https方式

SSL可以保護所有Rancher網絡通信,例如登錄或與群集交互時。

證書生成方式:

  • 默認自簽名證書
  • 自定義自簽名證書

默認自簽名證書:

#直接暴露端口運行就可以

docker run -d --restart=unless-stopped  -p 80:80 -p 443:443  rancher/rancher:latest

自定義自簽名證書:

使用功能OpenSSl生成

#生成根證書私鑰(pem文件)                                                                                                   
openssl genrsa -out cakey.pem 2048                                                                                        
#生成根證書簽發申請文件(csr文件)                                                                                           
openssl req -new -key cakey.pem -out ca.csr -subj "/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myCA"   
#自簽發根證書(cer文件)                                                                                                     
openssl x509 -req -days 365 -sha1 -extensions v3_ca -signkey cakey.pem -in ca.csr -out  cacert.pem
#生成服務端私鑰                                                                                                            
openssl genrsa -out key.pem 2048                                                                                          
#生成證書請求文件                                                                                                          
openssl req -new -key key.pem -out server.csr -subj "/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myServer"
#使用根證書簽發服務端證書                                                                                                  
openssl x509 -req -days 365 -sha1 -extensions v3_req -CA cacert.pem -CAkey cakey.pem -CAserial ca.srl -CAcreateserial -in server.csr -out cert.pem
#使用CA證書驗證server端證書                                                                                                
openssl verify -CAfile cacert.pem  cert.pem

 容器啟動

docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
-v /<CERT_DIRECTORY>/<FULL_CHAIN.pem>:/etc/rancher/ssl/cert.pem \
-v /<CERT_DIRECTORY>/<PRIVATE_KEY.pem>:/etc/rancher/ssl/key.pem \
-v /<CERT_DIRECTORY>/<CA_CERTS.pem>:/etc/rancher/ssl/cacerts.pem \
rancher/rancher:latest

 

2.2、啟用API審核日志

API審核日志記錄通過Rancher服務器進行的所有用戶和系統事務。

默認情況下,API審核日志會在rancher容器內寫入/ var / log / auditlog。將該目錄共享為卷並設置AUDIT_LEVEL以啟用日志。

docker run -d --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  -v /var/log/rancher/auditlog:/var/log/auditlog \
  -e AUDIT_LEVEL=1 \
  rancher/rancher:latest

 

2.3、Air Gap

If you are visiting this page to complete an air gap installation, you must pre-pend your private registry URL to the server tag when running the installation command in the option that you choose. Add <REGISTRY.DOMAIN.COM:PORT> with your private registry URL in front of rancher/rancher:latest.

Example:

 <REGISTRY.DOMAIN.COM:PORT>/rancher/rancher:latest

--取值官網,不過沒有弄明白作用是什么。。

2.4、持久化數據

持久性數據位於容器中的/var/lib/rancher

docker run -d --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  -v /host/rancher:/var/lib/rancher \
  rancher/rancher:latest

 

3.0、啟動容器

啟用ssl,api審核,數據持久化

#環境准備
[root@K8s-master ~]# mkdir -p /home/rancher/{cert,log,data}
#生成證書過程省略
[root@K8s-master /home/rancher/cert]# ll
總用量 28
-rw-r--r-- 1 root root 1216 1月  25 15:10 cacert.pem
-rw-r--r-- 1 root root 1013 1月  25 15:10 ca.csr
-rw-r--r-- 1 root root 1679 1月  25 15:10 cakey.pem
-rw-r--r-- 1 root root   17 1月  25 15:11 ca.srl
-rw-r--r-- 1 root root 1224 1月  25 15:11 cert.pem
-rw-r--r-- 1 root root 1675 1月  25 15:10 key.pem
-rw-r--r-- 1 root root 1017 1月  25 15:10 server.csr
#生成容器
[root@K8s-master ~]#docker run -d --restart=unless-stopped \
	-p 8090:80 -p 8443:443 \
	-v /home/rancher/cert/cert.pem:/etc/rancher/ssl/cert.pem \
	-v /home/rancher/cert/key.pem:/etc/rancher/ssl/key.pem \
    -v /home/rancher/cert/cacert.pem:/etc/rancher/ssl/cacerts.pem \
	-v /home/rancher/log/auditlog:/var/log/auditlog \
	-e AUDIT_LEVEL=1 \
	-v /home/rancher/data/rancher:/var/lib/rancher \
	registry.docker-cn.com/rancher/server:v2.0.0-beta4

等待容器啟動完成訪問對應IP的端口

4.0、訪問UI

權限管理,2.X 在第一次登錄就會提示你寫入密碼

 

通過右下角更改語言

 

相對於1.6 認證減少了 ,現在只有兩項了

而且好像默認這是了允許本地數據庫中的賬號訪問

 

Rancher部署就先到這里了。

 

說一下HA吧

5.0、Rancher多節點HA部署

在高可用(HA)的模式下運行Rancher Server與使用外部數據庫運行Rancher Server一樣簡單,需要暴露一個額外的端口,添加額外的參數到啟動命令中,並且運行一個外部的負載均衡就可以了。

HA Rancher安裝了第4層負載均衡器,描述了入口控制器的SSL終止

Rancher HA

 

--取值官網

 

5.1、准備:

  • kubectl - Kubernet中的命令行工具。
  • rke - Rancher Kubernetes Engine,用於構建Kubernetes集群的cli。
  • helm - Kubernetes的包管理。

note:

v2.12.0和cert-manager存在問題,請使用Helm v2.12.1或更高版本

5.2、部署需求:

  • HA 節點

    • 1GB內存
    • 9345, 8080 端口需要在各個節點之間能夠互相訪問
    • 所有安裝有支持的Docker版本的現代Linux發行版 RancherOS, Ubuntu, RHEL/CentOS 7 都是經過嚴格的測試。
      • 對於 RHEL/CentOS, 默認的 storage driver, 例如 devicemapper using loopback, 並不被Docker推薦。 請參考Docker的文檔去修改使用其他的storage driver。
      • 對於 RHEL/CentOS, 如果你想使用 SELinux, 你需要 安裝額外的 SELinux 組件.
  • MySQL數據庫

    • 至少 1 GB內存
    • 每個Rancher Server節點需要50個連接 (例如:3個節點的Rancher則需要至少150個連接)
    • MYSQL配置要求
      • 選項1: 用默認COMPACT選項運行Antelope
      • 選項2: 運行MySQL 5.7,使用Barracuda。默認選項ROW_FORMAT需設置成Dynamic
  • 外部負載均衡服務器

    • 負載均衡服務器需要能訪問Rancher Server節點的 8080 端口

 

在每個需要加入Rancher Server HA集群的節點上,運行以下命令:

docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 rancher/server \
     --db-host DB_host.com --db-port 3306 --db-user username --db-pass password --db-name cattle \
     --advertise-address <Node IP>

note:

每個節點的<Node IP> 唯一,這個IP會被添加到HA的設置中。

如果你修改了 -p 8080:8080 並在host上暴露了一個不一樣的端口,你需要添加 --advertise-http-port <host_port> 參數到命令中。

 

5.3、HA模式下的RANCHER SERVER節點

如果你的Rancher Server節點上的IP修改了,你的節點將不再存在於Rancher HA集群中。

你必須停止在--advertise-address配置了不正確IP的Rancher Server容器並啟動一個使用正確IP地址的Rancher Server的容器。

 

note:

每一個Rancher Server節點需要有4 GB 或者8 GB的堆空間,意味着需要8 GB或者16 GB內存

MySQL數據庫需要有高性能磁盤

對於一個完整的HA,建議使用一個有副本的Mysql數據庫。另一種選擇則是使用Galera集群並強制寫入一個MySQL節點。

 

參考:

https://rancher.com/docs/rancher/v2.x/en/overview/

https://my.oschina.net/wenzhenxi/blog/1822075

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM