RKE 安装 rancher HA server 一般要有4台机器, 一台是lvs、nginx代理机器,3台为K8S机器,做etc、rancher server。
版本:
- docker: 19.03.5
- rancher server: 2.4.5
- kubrctl: 1.18.5
- rke: 1.0.10
- helm:2.16.6
机器列表
IP | 主机名 | 备注 |
---|---|---|
192.168.5.100 | bigdata00.shining.com | k8s、etcd、rancher server |
192.168.5.101 | bigdata01.shining.com | k8s、etcd、rancher server |
192.168.5.103 | bigdata03.shining.com | k8s、etcd、rancher server |
192.168.5.237 | rancher.shining.com | nginx |
centos7 永久修改主机名,使用命令:
1 | hostnamectl set-hostname xxx |
安装 RKE
Rancher Kubernetes Engine(RKE)是一款轻量级Kubernetes安装程序,支持在裸机和虚拟化服务器上安装Kubernetes。 RKE解决了Kubernettes社区中的一个常见问题,比如:安装复杂性。RKE支持多种平台运行,比如MacOS,linux,windows。
50.100 机器上安装
1、下载二进制文件
1 | https://github.com/rancher/rke/releases/latest |
现在稳定版本是 1.0.10
下载
1 | wget https://github.com/rancher/rke/releases/download/v1.0.10/rke_linux-amd64 |
安装kubectl
kubectl是一个CLI命令行工具,用于运行Kubernetes集群的命令。Rancher 2.x中的许多维护和管理都需要它。
这里在5.100上安装kubectl:
kubectl 安装方式:
1 | wget https://storage.googleapis.com/kubernetes-release/release/v1.18.5/kubernetes-client-linux-amd64.tar.gz |
配置kubectl的shell补全
CentOS Linux上,您可能需要安装默认情况下未安装的bash-completion软件包。
1 | yum install bash-completion -y |
运行source <(kubectl completion bash)可将kubectl自动补全添加到当前shell,要使kubectl自动补全命令自动加载:
1 | echo "source <(kubectl completion bash)" >> ~/.bashrc |
退出,重新登录一下即可。
使用 RKE 安装 kubernetes
下面使用 RKE(Kubernetes Engine) 安装高可用的 Kubernetes。
rancher server 之间建立 ssh 信任
我们目前有三台服务器用作 local 集群,首先要确保我们主机能够通过 ssh 访问到另外两台主机并执行相关操作。
创建用户rancher
注意:使用rke安装kubernetes时,不能以root用户执行。必须是一个普通用户才行!!!
在5.100、5.101、5.103执行以下命令:
1 | useradd rancher |
授权docker权限
在5.100、5.101、5.103执行以下命令:
使用root账号登录
1 | #将登陆用户rancher加入到docker用户组中 |
ssh信任
在5.100、5.101、5.103执行以下命令:
1 | 每台机器上的rancher用户都执行 |
编写 rancher-cluster.yml 文件
在5.100上执行
注意:以rancher用户执行。
1 | $ vi rancher-cluster.yml |
备注:
- address 公共域名或IP地址
- user 可以运行docker命令的用户
- role 分配给节点的Kubernetes角色列表
- internal_address 内部集群通信的私有域名或IP地址
- 开启了etcd的备份机制,每隔6小时备份一次,保存60天数据
运行 RKE 构建 kubernetes 集群
在5.100上执行
注意:以rancher用户执行。
1 | $ rke up --config ./rancher-cluster.yml |
以上输出,表示安装成功了。
执行成功会在当前目录生成2个文件,分别是rancher-cluster.rkestate和kube_config_rancher-cluster.yml
文件说明
1 | rancher-cluster.yml:RKE集群配置文件。 |
错误集锦
1 | WARN[0000] Failed to set up SSH tunneling for host [192.168.5.103]: Can't retrieve Docker Info: error during connect: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/info: Unable to access node with address [10.212.20.97:22] using SSH. Please check if you are able to SSH to the node using the specified SSH Private Key and if you have configured the correct SSH username. Error: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain |
ssh信任没有做好,请确保是普通用户执行rke。不能是root用户
1 | Failed to get job complete status for job rke-network-plugin-deploy-job in namespace kube-system |
重新执行一遍 rke_linux-amd64 up –config ./rancher-cluster.yml即可。
docker 和系统代理 (如果需要代理上网的话, docker需要拉取镜像,本机也需要出去下载yaml文件)
1 | vim /etc/systemd/system/docker.service.d//http-proxy.conf |
设置环境变量
在5.100上执行
注意:以rancher用户执行。
1 | mkdir ~/.kube |
查看node
1 | $ kubectl get node |
如果需要root用户执行kubectl,切换到root用户,执行以下命令
1 | mkdir ~/.kube |
查看 k8s pod
1 | $ kubectl get pods -A |
安装和配置Helm
Helm是Kubernetes首选的包管理工具。Helmcharts为Kubernetes YAML清单文档提供模板语法。使用Helm,可以创建可配置的部署,而不仅仅是使用静态文件。Helm有两个部分:Helm客户端(helm)和Helm服务端(Tiller)。
配置Helm客户端访问权限
在5.100上执行,下面提到的所有命令,都可以在root用户执行了。
1 | kubectl -n kube-system create serviceaccount tiller |
备注:在kube-system命名空间中创建ServiceAccount;创建ClusterRoleBinding以授予tiller帐户对集群的访问权限;helm初始化tiller服务
安装Helm客户端
1 | wget https://get.helm.sh/helm-v2.16.6-linux-amd64.tar.gz |
安装Helm服务端(Tiller)
1 | helm_version=`helm version |grep Client | awk -F""\" '{print $2}'` |
备注:
1、RKE默认启用RBAC,所以在安装tiller时需要指定ServiceAccount。
2、helm init在缺省配置下,会去谷歌镜像仓库拉取gcr.io/kubernetes-helm/tiller镜像,在Kubernetes集群上安装配置Tiller;由于在国内可能无法访问gcr.io、storage.googleapis.com等域名,可以通过–tiller-image指定私有镜像仓库镜像。
3、helm init在缺省配置下,会利用https://kubernetes-charts.storage.googleapis.com作为缺省的stable repository地址,并去更新相关索引文件。在国内可能无法访问storage.googleapis.com地址, 可以通过–stable-repo-url指定chart国内加速镜像地址。
4、如果您是离线安装Tiller, 假如没有内部的chart仓库, 可通过添加–skip-refresh参数禁止Tiller更新索引。
遇到问题:
1 | helm status |
image 没有下来的话, 可以改为其他镜像地址
1 | helm init --service-account tiller --skip-refresh --tiller-image jessestuart/tiller:$helm_version --upgrade |
如果没起来。可以
1 | helm init --upgrade |
如果报错信息:
1 | This command needs 1 argument: chart name |
那么需要添加 –name 参数 : 如
1 | helm init --service-account --name tiller |
Helm安装Rancher
添加Chart仓库地址
1 | helm repo add rancher-stable \ |
1 | 配置SSL |
仅在使用 Rancher 生成的证书 ingress.tls.source=rancher 或 Let’s Encrypt 颁发的证书 ingress.tls.source=letsEncrypt时才需要 cert-manager。
这些说明来自官方的 cert-manager 文档。
1 | # 安装 CustomResourceDefinition 资源 |
安装完 cert-manager 后,您可以通过检查 cert-manager 命名空间中正在运行的 Pod 来验证它是否已正确部署:
1 | $ kubectl get pods --namespace cert-manager |
通过helm安装rancher
1 | helm install rancher-stable/rancher --name rancher --namespace cattle-system --set hostname=rancher.shining.com --set ingress.tls.source=rancher |
注意:这里指定了hostname=rancher.shining.com,必须使用域名访问才行。
查看rancher 运行状况:
1 | kubectl get pods --namespace cattle-system |
可以临时配置域名解析,或hosts方式访问,后期可以配置到DNS中 , agent添加到server中都需要这个域名。
编辑主机 hosts
1 | 192.168.5.100 rancher.shining.com |
注释,5.100、5.101、5.103 指向任何一台机器都可以访问。
访问页面:
1 | https://rancher.shining.com |
页面提示设置密码,rangcher就配置好了。
nginx 代理配置:
nginx是作为前端访问的代理地址, 祈祷负载作用。agent 也会通过这么域名访问到server的
5.237 机器上配置 nginx。
添加repo 源
1 | vim /etc/yum.repos.d/nginx.repo |
安装
1 | yum install -y nginx |
修改配置文件: vim /etc/nginx/nginx.conf
1 | user nginx; |
启动nginx
1 | systemctl start nginx |
以后域名地址解析到 5.237 机器上就可以访问了。当然nginx也可以安装到集群中,或其他负载方式。
Q&A
1、执行以下命令为Rancher Server容器配置hosts:
1 | [rancher@5.100 ~]$ kubectl -n cattle-system patch deployments rancher --patch '{ |
2、在Rancher Web UI中依次进入local集群/system项目,在cattle-system命名空间中查看是否有cattle-cluster-agent Pod和cattle-node-agent pod被创建。如果有创建则进行下面的步骤,没有创建则等待;
cattle-cluster-agent pod
1 | [rancher@5.100 ~]$ kubectl -n cattle-system \ |
cattle-node-agent pod
1 | [rancher@node1 ~]$ kubectl -n cattle-system \ |
相关文章:
rancher 官网: https://rancher2.docs.rancher.cn/docs/installation/k8s-install/helm-rancher/_index
腾讯云文档 : https://cloud.tencent.com/developer/article/1638170