您好,登錄后才能下訂單哦!
Rancher官方中文文檔:https://www.rancher.cn/docs/rancher/v2.x/cn/overview/
本次實(shí)驗(yàn),為Ranche七層負(fù)載均衡Helm HA部署
服務(wù)器使用騰訊云的虛擬機(jī)具體配置如下:
主機(jī)名稱 | 系統(tǒng)版本 | 內(nèi)網(wǎng)ip | 公網(wǎng)ip | 配 置 |
---|---|---|---|---|
master1 | CentOS 7.6 | 172.27.100.101 | xxx | 4C 16G |
master2 | CentOS 7.6 | 172.27.100.101 | xxx | 4C 16G |
master3 | CentOS 7.6 | 172.27.100.101 | xxx | 4C 16G |
因使用7層負(fù)載均衡,需要一個LB,這里使用騰訊云的云負(fù)載均衡(實(shí)驗(yàn)環(huán)境可以使用nginx)
(1) 配置每臺主機(jī)的hosts(/etc/hosts),添加host_ip $hostname到/etc/hosts文件中。
(2) 關(guān)閉selinux:
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
(3) 測試環(huán)境關(guān)閉防火墻或者開啟相應(yīng)端口,參考https://www.rancher.cn/docs/rancher/v2.x/cn/install-prepare/references/
填坑備注:這里我的內(nèi)網(wǎng)是全部開了的,然而部署的時候有報錯,需要開放對應(yīng)端口讓服務(wù)器的公網(wǎng)ip可以訪問~(居然不走內(nèi)網(wǎng)ip,不知道是什么情況~)
正常安裝Docker,唯一注意的地方是:因?yàn)镃entOS的安全限制,通過RKE安裝K8S集群時候無法使用root賬戶。CentOS用戶使用非root用戶來運(yùn)docker。
yum install ca-certificates ;
update-ca-trust;
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo-bak
cat << 'EOF' > /etc/yum.repos.d/CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
EOF
# 定義用戶名
NEW_USER=rancher
# 添加用戶(可選)
sudo adduser $NEW_USER
# 為新用戶設(shè)置密碼
sudo passwd $NEW_USER
# 為新用戶添加sudo權(quán)限
sudo echo "$NEW_USER ALL=(ALL) ALL" >> /etc/sudoers
# 卸載舊版本Docker軟件
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
container*
# 定義安裝版本
export docker_version=19.03.1
# step 1: 安裝必要的一些系統(tǒng)工具
sudo yum update -y;
sudo yum install -y yum-utils device-mapper-persistent-data \
lvm2 bash-completion;
# Step 2: 添加軟件源信息
sudo yum-config-manager --add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo;
# Step 3: 更新并安裝 Docker-CE
sudo yum makecache all;
version=$(yum list docker-ce.x86_64 --showduplicates | sort -r|grep ${docker_version}|awk '{print $2}');
sudo yum -y install --setopt=obsoletes=0 docker-ce-${version} docker-ce-selinux-${version};
# 如果已經(jīng)安裝高版本Docker,可進(jìn)行降級安裝(可選)
yum downgrade --setopt=obsoletes=0 -y docker-ce-${version} docker-ce-selinux-${version};
# 把當(dāng)前用戶加入docker組
sudo usermod -aG docker $NEW_USER;
# 設(shè)置開機(jī)啟動
sudo systemctl enable docker;
daemon.json默認(rèn)位于/etc/docker/daemon.json,如果沒有可手動創(chuàng)建,基于systemd管理的系統(tǒng)都是相同的路徑。通過修改daemon.json來改過Docker配置,也是Docker官方推薦的方法。
1、配置私有倉庫
Docker默認(rèn)只信任TLS加密的倉庫地址(https),所有非https倉庫默認(rèn)無法登陸也無法拉取鏡像。insecure-registries字面意思為不安全的倉庫,通過添加這個參數(shù)對非https倉庫進(jìn)行授信??梢栽O(shè)置多個insecure-registries地址,以數(shù)組形式書寫,地址不能添加協(xié)議頭(http)。
{
"insecure-registries": ["harbor.xxx.cn:30002"]
}
2、配置存儲驅(qū)動
OverlayFS是一個新一代的聯(lián)合文件系統(tǒng),類似于AUFS,但速度更快,實(shí)現(xiàn)更簡單。Docker為OverlayFS提供了兩個存儲驅(qū)動程序:舊版的overlay,新版的overlay2(更穩(wěn)定)。
先決條件:
overlay2: Linux內(nèi)核版本4.0或更高版本,或使用內(nèi)核版本3.10.0-514+的RHEL或CentOS。
overlay: 主機(jī)Linux內(nèi)核版本3.18+
支持的磁盤文件系統(tǒng)
ext4(僅限RHEL 7.1)
xfs(RHEL7.2及更高版本),需要啟用d_type=true。
{
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"]
}
3、配置日志驅(qū)動
容器在運(yùn)行時會產(chǎn)生大量日志文件,很容易占滿磁盤空間。通過配置日志驅(qū)動來限制文件大小與文件的數(shù)量。 >限制單個日志文件為50M,最多產(chǎn)生3個日志文件
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}
最終配置文件如下:
{
"insecure-registries": ["harbor.xxx.cn:30002"],
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"],
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}
Rancher Kubernetes Engine(RKE)是一款輕量級Kubernetes安裝程序,支持在裸機(jī)和虛擬化服務(wù)器上安裝Kubernetes。 RKE解決了Kubernettes社區(qū)中的一個常見問題,比如:安裝復(fù)雜性。RKE支持多種平臺運(yùn)行,比如MacOS,linux,windows。
這里在master1上安裝rke:
1、下載二進(jìn)制文件
https://www.rancher.cn/docs/rancher/v2.x/cn/install-prepare/download/rke/
2、運(yùn)行一下命令測試:
chmod +x rke_linux-amd64
./rke_linux-amd64 --version
kubectl是一個CLI命令行工具,用于運(yùn)行Kubernetes集群的命令。Rancher 2.x中的許多維護(hù)和管理都需要它。
這里在master1上安裝kubectl:
1、下載二進(jìn)制文件
https://www.rancher.cn/docs/rancher/v2.x/cn/install-prepare/download/kubernetes/
2、確保kubectl二進(jìn)制文件是可執(zhí)行文件。
chmod +x ./kubectl
3、將kubectl二進(jìn)制文件移動到PATH路徑下。
sudo mv ./kubectl /usr/local/bin/kubectl
4、配置kubectl
使用RKE創(chuàng)建Kubernetes集群時,RKE會在本地目錄中創(chuàng)建一個包含認(rèn)證信息的配置文件kube_config_rancher-cluster.yml,以使用kubectl或helm等工具連接到新集群。
可以將此文件復(fù)制到$HOME/.kube/config
cp kube_config_rancher-cluster.yml ~/.kube/config
export KUBECONFIG=$(pwd)/kube_config_rancher-cluster.yml
4、配置kubectl的shell補(bǔ)全
CentOS Linux上,您可能需要安裝默認(rèn)情況下未安裝的bash-completion軟件包。
yum install bash-completion -y
運(yùn)行source <(kubectl completion bash)可將kubectl自動補(bǔ)全添加到當(dāng)前shell,要使kubectl自動補(bǔ)全命令自動加載:
echo "source <(kubectl completion bash)" >> ~/.bashrc
使用騰訊***云負(fù)載均衡,導(dǎo)入域名ssl證書(此處的域名須有后面配置訪問域名一致,我使用的是免費(fèi)一年的ssl證書?(^?^)),把10443端口綁定到master1,master2,master3的80端口即可~
備注:需要開通對應(yīng)的安全規(guī)則,即負(fù)載均衡的ip能訪問master1、2、3的80端口
#vim rancher-cluster.yml
nodes:
- address: xxx.xxx.xxx.xxx
internal_address: 172.27.100.101
user: rancher
role: [controlplane,worker,etcd]
hostname_override: master1
- address: xxx.xxx.xxx.xxx
internal_address: 172.27.100.102
user: rancher
role: [controlplane,worker,etcd]
hostname_override: master2
- address: xxx.xxx.xxx.xxx
internal_address: 172.27.100.103
user: rancher
role: [controlplane,worker,etcd]
hostname_override: master3
services:
etcd:
backup_config:
enabled: true
interval_hours: 6
retention: 60
備注:
address 公共域名或IP地址
user 可以運(yùn)行docker命令的用戶
role 分配給節(jié)點(diǎn)的Kubernetes角色列表
internal_address 內(nèi)部集群通信的私有域名或IP地址
開啟了etcd的備份機(jī)制,每隔6小時備份一次,保存60天數(shù)據(jù)
#rke up --config ./rancher-cluster.yml
完成后,會創(chuàng)建一個文件kube_config_rancher-cluster.yml。這個文件包含kubectl和helm訪問K8S的憑據(jù)??梢詫⒋宋募?fù)制到$HOME/.kube/config,或者如果您正在使用多個Kubernetes集群,請將KUBECONFIG環(huán)境變量設(shè)置為kube_config_rancher-cluster.yml文件路徑。
備注:保存好kube_config_rancher-cluster.yml和rancher-cluster.yml,之后的維護(hù)和升級需要用到!
export KUBECONFIG=$(pwd)/kube_config_rancher-cluster.yml
cp kube_config_rancher-cluster.yml /root/.kube/config/
使用kubectl get nodes測試:
Helm是Kubernetes首選的包管理工具。Helmcharts為Kubernetes YAML清單文檔提供模板語法。使用Helm,可以創(chuàng)建可配置的部署,而不僅僅是使用靜態(tài)文件。Helm有兩個部分:Helm客戶端(helm)和Helm服務(wù)端(Tiller)。
master1上,在上一步生成的kube_config_rancher-cluster.yml文件的同級目錄下運(yùn)行:
kubectl --kubeconfig=kube_configxxx.yml -n kube-system create serviceaccount tiller
kubectl --kubeconfig=kube_configxxx.yml create clusterrolebinding tiller \
--clusterrole cluster-admin --serviceaccount=kube-system:tiller
備注:在kube-system命名空間中創(chuàng)建ServiceAccount;創(chuàng)建ClusterRoleBinding以授予tiller帳戶對集群的訪問權(quán)限;helm初始化tiller服務(wù)
1、下載helm:
https://www.rancher.cn/docs/rancher/v2.x/cn/install-prepare/download/helm/
2、解壓縮及配置:
tar -zxvf helm-v2.x.x-linux-amd64.tgz
helm在解壓后的目錄中找到二進(jìn)制文件,并將其移動到所需的位置
mv linux-amd64/helm /usr/local/bin/helm && chmod +x /usr/local/bin/helm
master1上,在上一步生成的kube_config_rancher-cluster.yml文件的同級目錄下運(yùn)行:
kubeconfig=xxx.yml
helm_version=`helm version |grep Client | awk -F""\" '{print $2}'`
helm init --kubeconfig=$kubeconfig \
--service-account tiller --skip-refresh \
--tiller-image registry.cn-shanghai.aliyuncs.com/rancher/tiller:$helm_version
備注:
1、RKE默認(rèn)啟用RBAC,所以在安裝tiller時需要指定ServiceAccount。
2、helm init在缺省配置下,會去谷歌鏡像倉庫拉取gcr.io/kubernetes-helm/tiller鏡像,在Kubernetes集群上安裝配置Tiller;由于在國內(nèi)可能無法訪問gcr.io、storage.googleapis.com等域名,可以通過--tiller-image指定私有鏡像倉庫鏡像。
3、helm init在缺省配置下,會利用https://kubernetes-charts.storage.googleapis.com作為缺省的stable repository地址,并去更新相關(guān)索引文件。在國內(nèi)可能無法訪問storage.googleapis.com地址, 可以通過--stable-repo-url指定chart國內(nèi)加速鏡像地址。
4、如果您是離線安裝Tiller, 假如沒有內(nèi)部的chart倉庫, 可通過添加--skip-refresh參數(shù)禁止Tiller更新索引。
helm repo add rancher-stable \
https://releases.rancher.com/server-charts/stable
SSL證書使用騰訊云提供的一年免費(fèi)證書,自簽名證書參考官網(wǎng)
export KUBECONFIG=/home/rancher/kube_config_rancher-cluster.yml
helm --kubeconfig=$KUBECONFIG install rancher-stable/rancher --name rancher --namespace cattle-system --set hostname=paas.yunjingtech.cn --set tls=external
安裝成功后,輸入之前配置的域名即可~
備注:
登陸后查看,system空間,若cattle-cluster-agent Pod和cattle-node-agent無法正常運(yùn)行,需要為其添加主機(jī)別名:
export kubeconfig=xxx/xxx/xx.kubeconfig.yml
kubectl --kubeconfig=$kubeconfig -n cattle-system \
patch deployments rancher --patch '{
"spec": {
"template": {
"spec": {
"hostAliases": [
{
"hostnames":
[
"xxx.cnrancher.com"
],
"ip": "xxxxxx"
}
]
}
}
}
}'
export kubeconfig=xxx/xxx/xx.kubeconfig.yml
kubectl --kubeconfig=$kubeconfig -n cattle-system \
patch deployments cattle-cluster-agent --patch '{
"spec": {
"template": {
"spec": {
"hostAliases": [
{
"hostnames":
[
"demo.cnrancher.com"
],
"ip": "xxxxxx"
}
]
}
}
}
}'
export kubeconfig=xxx/xxx/xx.kubeconfig.yml
kubectl --kubeconfig=$kubeconfig -n cattle-system \
patch daemonsets cattle-node-agent --patch '{
"spec": {
"template": {
"spec": {
"hostAliases": [
{
"hostnames":
[
"xxx.rancher.com"
],
"ip": "xxxxxx"
}
]
}
}
}
}'
rancher安裝期間遇到的最大問題就是一些地方未配置安全組造成的!好在最后都解決了,之后會繼續(xù)分享,rancher平臺CICD的使用,部署持久性存儲Ceph,部署Harbor、Gitlab、Nexus3等過程中遇到的問題及處理辦法~~ (^U^)ノ~YO
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。