一、首先确保k3s已经安装完成
这里就不讲k3s安装了,可以点击查看上一篇k3s在线安装

二、环境准备
1.先确保安装了 kubectl 命令工具
2.先确保安装了Helm 命令工具,如未安装点击查看安装方法

三、添加 Helm Chart 仓库

helm repo add rancher-stable https://releases.rancher.com/server-charts/stable

上面两个stable表示对应的仓库,可替换成如下
stable: 推荐生产环境中使用。(推荐)
latest 推荐在尝试新功能时使用
alpha 未来版本的实验性预览。

helm 安装zookeeper集群 helm安装rancher_k3s


四、为 Rancher 创建 Namespace

kubectl create namespace cattle-system

需要定义一个 Kubernetes Namespace,在 Namespace 中安装由 Chart
创建的资源。这个命名空间的名称为cattle-system:

helm 安装zookeeper集群 helm安装rancher_DNS_02

五、安装 cert-manager(使用自己的证书或外部负载均衡可忽略该步)

仅在使用 Rancher 生成的证书 ingress.tls.source=rancher 或 Let’s Encrypt 颁发的证书
ingress.tls.source=letsEncrypt时才需要 cert-manager。

1.安装 CustomResourceDefinition 资源

kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.16.1/cert-manager.crds.yaml

helm 安装zookeeper集群 helm安装rancher_DNS_03

如果您正在运行 Kubernetes v1.15 或更低版本,
则需要在上方的 kubectl apply 命令中添加--validate=false标志
否则您将在 cert-manager 的 CustomResourceDefinition 资源中收到与x-kubernetes-preserve-unknown-fields 字段有关的验证错误。
这是一个良性错误,是由于 kubectl 执行资源验证的方式造成的

2.为 cert-manager 创建命名空间

kubectl create namespace cert-manager

helm 安装zookeeper集群 helm安装rancher_k3s_04

3.添加 Jetstack Helm 仓库

helm repo add jetstack https://charts.jetstack.io

helm 安装zookeeper集群 helm安装rancher_k3s_05

4.更新本地 Helm chart 仓库缓存

helm repo update

helm 安装zookeeper集群 helm安装rancher_DNS_06

  1. 安装 cert-manager Helm chart
helm install  cert-manager jetstack/cert-manager --namespace cert-manager --version v0.15.0

helm 安装zookeeper集群 helm安装rancher_DNS_07

注意:如果出现如下错误,肯定是kubeconfig 配置文件没有修改,无法访问到k3s集群

helm 安装zookeeper集群 helm安装rancher_DNS_08

该配置文件具体如何配置可查看上一篇k3s安装的文章

6.验证它是否已正确部署

kubectl get pods --namespace cert-manager

helm 安装zookeeper集群 helm安装rancher_helm 安装zookeeper集群_09

六、通过 Helm 安装 Rancher

安装时先将对应的域名解析

方式 一:使用 Rancher 生成的自签名证书

如果需要安装指定版本的 Rancher,请使用–version选项,
例如:–version 2.3.6
如果您在安装 alpha 版本,需要把 --devel 选项添加到下面命令中

helm install rancher rancher-stable/rancher --namespace cattle-system --set hostname=rancher.my.org

将hostname设置为您指向负载均衡器的 DNS 名称。
hostname=rancher.my.org 表示设置hostname为rancher.my.org

方式 二:使用 Let’s Encrypt 证书

如果您在安装 alpha 版本,需要把 --devel 选项添加到下面命令中

helm install rancher rancher-stable/rancher --namespace cattle-system  --set hostname=rancher.my.org  --set ingress.tls.source=letsEncrypt --set letsEncrypt.email=me@example.org

参数解释:
将 hostname 设置为公共 DNS 记录。
hostname=rancher.my.org 表示设置hostname为rancher.my.org
将 ingress.tls.source 选项设置为 letsEncrypt,
ingress.tls.source=letsEncrypt 表示使用 Let’s Encrypt 证书
将 letsEncrypt.email 设置为可通讯的电子邮件地址,方便发送通知(例如证书到期的通知)。
letsEncrypt.email=dev@demo.com 表示邮箱为dev@demo.com

方式三:使用您已有的证书

使用您自己的证书来创建 Kubernetes 密文,以供 Rancher 使用,
hostname选项必须与服务器证书中的Common Name或Subject Alternative Names条目匹配,否则 Ingress 控制器将无法正确配置。

如果您使用的是私有 CA 证书,请在命令中增加 --set privateCA=true。
如果您在安装 alpha 版本,需要把 --devel 选项添加到下面命令中。

helm install rancher rancher-stable/rancher --namespace cattle-system --set hostname=rancher.my.org --set ingress.tls.source=secret

helm 安装zookeeper集群 helm安装rancher_k3s_10

参数解释:
将 hostname 设置为公共 DNS 记录。
hostname=rancher.my.org 表示设置hostname为rancher.my.org
将 ingress.tls.source 选项设置为 secret,
设置 hostname。
将 ingress.tls.source 选项设置为 secret。

七、验证 Rancher Server 是否已成功部署

kubectl -n cattle-system rollout status deploy/rancher

helm 安装zookeeper集群 helm安装rancher_helm 安装zookeeper集群_11


注意:如果看到以下错误: error: deployment “rancher” exceeded its progress deadline, 您可以通过运行以下命令来检查 deployment 的状态:

kubectl -n cattle-system get deploy rancher

卸载rancher 命令如下

helm uninstall rancher -n=cattle-system

查看安装状态

kubectl describe deployments.apps -n=cattle-system rancher

八、到此rancher就ok了,等待rancher安装启动完成即可

rancher启动后完成后可通过域名访问rancher界面