https://www.zhihu.com/question/309076492/answer/579260940
https://cloud.tencent.com/developer/article/1444257
https://www.cnblogs.com/varden/p/15013794.html


前言

  Rancher 是为使用容器的公司打造的容器管理平台。Rancher 简化了使用 Kubernetes 的流程,开发者可以随处运行 Kubernetes(Run Kubernetes Everywhere),满足 IT 需求规范,赋能 DevOps 团队。


一、Rancher 概述

  Rancher 有分为 v1 和 v2 版本,都是提供容器调度与编排,不同之处在于在 k8s 盛行之前有许多人都搞过容器编排,所以 rancher v1 上会有几种不同的编排模式,例如 cattle,swarm,kubernetes。从这里可以看出 Rahcner v1 时代,它给自己的定位是各种编排工具的上层,也就是 k8s 的上层,然后你再通过它去管理 k8s。因为 k8s 后来发展得势不可挡,所以 Rancher v2 应运而生,移除了其他类型的编排工具,只剩下 k8s。

2.0 包含许多新功能,例如:

  • 内置 CI/CD
  • 告警和日志收集
  • 多集群管理
  • Rancher Kubernetes Engine(RKE)
  • 与云 Kubernetes 服务(如 GKE,EKS 和 AKS)集成

  Rancher 这种做法放在云厂商就是:阿里云的 k8s 服务,谷歌的 k8s 服务亚马逊的 k8s 服务,他们都以 k8s 为底层核心调度系统,然后开发一些方便企业开发运维的工具。所以企业内部测试环境一般可以直接使用 rancher 去管理 k8s 或者使用 Rancher 去初始化一个 k8s 集群。如果要自建私有云,也可以考虑使用 Rancher,当然云厂商也有私有云的容器集群解决方案,可自行选择。

官网:
https://docs.rancher.cn/
docs:
https://rancher.com/docs/rancher/v2.6/en/
https://docs.rancher.cn/docs/rancher2.5/overview/_index/


二、Rancher Server 架构

  Rancher Server 由认证代理(Authentication Proxy)、Rancher API Server、集群控制器(Cluster Controller)、etcd 节点和集群 Agent(Cluster Agent) 组成。除了集群 Agent 以外,其他组件都部署在 Rancher Server 中。

  您可以在单个节点或高可用的 Kubernetes 集群上安装 Rancher。由于单节点安装只适用于开发和测试环境,而且单节点和高可用集群之间无法进行数据迁移,所以我们建议您从一开始就使用高可用的 Kubernetes 集群来部署 Rancher Server,而且您需要分开部署运行 Rancher Server 的集群和运行自己业务的下游集群。

  用户通过 Rancher Server 管控 Rancher 部署的 Kubernetes 集群(RKE 集群)和托管的 Kubernetes 集群的(EKS)集群的流程。以用户下发指令为例,指令的流动路径如下:

  • 首先,用户通过 Rancher UI(即 Rancher 控制台) Rancher 命令行工具(Rancher CLI)输入指令;直接调用 Rancher API 接口也可以达到相同的效果。
  • 用户通过 Rancher 的代理认证后,指令会进一步下发到 Rancher Server 。
  • 与此同时,Rancher Server 也会执行容灾备份,将数据备份到 etcd 节点。
  • 然后 Rancher Server 把指令传递给集群控制器。集群控制器把指令传递到下游集群的 Agent,最终通过 Agent 把指令下发到指定的集群中。

如果 Rancher Server 出现问题,我们也提供了备用方案,您可以通过授权集群端点管理集群。

  考虑到性能表现和安全因素,我们建议您使用两个 Kubernetes 集群,分开部署 Rancher Server 和工作负载。部署 Rancher Server 后,您可以创建或导入集群,然后在这些集群上运行您的工作负载。

具体参考:
https://docs.rancher.cn/docs/rancher2.5/overview/architecture-recommendations/_index


三、安装指南

在 v2.4 之前的 Rancher 中,Rancher 服务器需要运行在 RKE Kubernetes 集群上。
在 Rancher v2.4.x 中,Rancher 需要运行在 RKE Kubernetes 集群或 K3s Kubernetes 集群上。
在 Rancher v2.5 中,Rancher 可以运行在任何 Kubernetes 集群上。

安装参考:
https://docs.rancher.cn/docs/rancher2.5/installation/_index

前置准备
安装 K8S 集群(参考:kubeadm 安装 k8s-1.21.2
安装 Ingress-nginx(参考:基于 K8S 1.21.2 集群安装 Ingress-Nginx 0.48.1
安装 helm(参考:安装 Helm 3

四、安装 Helm

master 节点

[root@master ~]# wget http://101.34.22.188/k8s/helm-v3.6.3-linux-amd64.tar.gz &> /dev/null
[root@master ~]# tar xf helm-v3.6.3-linux-amd64.tar.gz 
[root@master ~]# mv linux-amd64/helm /usr/local/bin/
[root@master ~]# chmod +x /usr/local/bin/helm
[root@master ~]# echo 'source <(helm completion bash)' >> /etc/profile
[root@master ~]# source /etc/profile
[root@master ~]# helm version
version.BuildInfo{Version:"v3.6.3", GitCommit:"d506314abfb5d21419df8c7e7e68012379db2354", GitTreeState:"clean", GoVersion:"go1.16.5"}

五、安装 Ingress-nginx

Ingress-nginx version k8s supported version Alpine Version Nginx Version
v0.48.1 1.21, 1.20, 1.19 3.13.5 1.20.1
v0.47.0 1.21, 1.20, 1.19 3.13.5 1.20.1
v0.46.0 1.21, 1.20, 1.19 3.13.2 1.19.6

5.1 拉取镜像

以下操作需要在 K8S 集群所有机器都执行

docker pull registry.cn-hangzhou.aliyuncs.com/kubernetes-fan/ingress-nginx:v0.48.1
docker images

将从阿里云拉取的镜像,打个 tag 标签,更改为官方镜像名

#如果可以访问外网不用这么麻烦
docker tag registry.cn-hangzhou.aliyuncs.com/kubernetes-fan/ingress-nginx:v0.48.1 k8s.gcr.io/ingress-nginx/controller:v0.48.1
docker images

将从阿里云镜像仓库拉取的镜像删除

docker rmi registry.cn-hangzhou.aliyuncs.com/kubernetes-fan/ingress-nginx:v0.48.1
docker images

在这里插入图片描述

5.2 修改 yaml 文件

master 节点

#wget http://101.34.22.188/k8s/yaml/deploy.yaml
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.48.1/deploy/static/provider/baremetal/deploy.yaml

#将原文件下行内容
image: k8s.gcr.io/ingress-nginx/controller:v0.48.1@sha256:e9fb216ace49dfa4a5983b183067e97496e7a8b307d2093f4278cd550c303899
#修改为如下内容
image: k8s.gcr.io/ingress-nginx/controller:v0.48.1

修改后的内容如下:

......
318     spec:
319       dnsPolicy: ClusterFirst
320       containers:
321         - name: controller
322           image: k8s.gcr.io/ingress-nginx/controller:v0.48.1	#这里
323           imagePullPolicy: IfNotPresent
324           lifecycle:
325             preStop:
326               exec:
327                 command:
328                   - /wait-shutdown
......

5.3 安装 Ingress-nginx

master 节点

kubectl apply -f deploy.yaml
kubectl get pods -o wide -n ingress-nginx
kubectl get service -n ingress-nginx
curl http://IP:PORT

在这里插入图片描述

六、安装 Rancher 2.5.9 HA

6.1 添加 Helm Chart 仓库

[root@master ~]# helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
"rancher-stable" has been added to your repositories

6.2 为 Rancher 创建命名空间

[root@master ~]# kubectl create ns cattle-system
namespace/cattle-system created

6.3 安装证书管理器

这里使用 Rancher 生成的证书,不使用外部证书。
cert-manager 证书管理器官网:https://cert-manager.io/

(1) 创建 cert-manager 命名空间

[root@master ~]# kubectl create ns cert-manager
namespace/cert-manager created

(2) 添加 Jetstack Helm 存储库

[root@master ~]# helm repo add jetstack https://charts.jetstack.io
"jetstack" has been added to your repositories

(3) 更新本地 Helm 图表存储库缓存

[root@master ~]# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "jetstack" chart repository
...Successfully got an update from the "rancher-stable" chart repository
Update Complete. ⎈Happy Helming!

(4) 安装 cert-manager 自定义所需的自定义资源

#wget http://101.34.22.188/k8s/yaml/cert-manager.crds.yaml
[root@master ~]# kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.4.0/cert-manager.crds.yaml
customresourcedefinition.apiextensions.k8s.io/certificaterequests.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/certificates.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/challenges.acme.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/clusterissuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/issuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/orders.acme.cert-manager.io created

(5) 安装 cert-manager

helm install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.4.0

在这里插入图片描述

(6) 验证 cert-manager 证书管理器是否安装成功

[root@master ~]# kubectl get pods --namespace cert-manager
NAME                                       READY   STATUS    RESTARTS   AGE
cert-manager-5d7f97b46d-qqkgt              1/1     Running   0          82s
cert-manager-cainjector-69d885bf55-bpnpp   1/1     Running   0          82s
cert-manager-webhook-54754dcdfd-zcbjj      1/1     Running   0          82s

6.4 安装 Rancher HA

(1) 使用 helm 安装 Rancher

helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=rancher.my.org \
--set replicas=3 \
--version 2.5.9

--set hostname 自己要设置的域名
--version 安装的 Rancher 版本
删除参考:https://blog.csdn.net/qq_42997214/article/details/120994019

在这里插入图片描述

(2) 查看 Rancher 安装 过程

[root@master ~]# kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
Waiting for deployment "rancher" rollout to finish: 1 of 3 updated replicas are available...
Waiting for deployment "rancher" rollout to finish: 2 of 3 updated replicas are available...
......

(3) 查看 Rancher 的 pod 状态

[root@master ~]# kubectl get pods -o wide -n cattle-system
NAME                               READY   STATUS      RESTARTS   AGE   IP               NODE     NOMINATED NODE   READINESS GATES
helm-operation-cd4h4               0/2     Completed   0          16m   10.244.140.78    node02   <none>           <none>
helm-operation-gjrjn               0/2     Completed   0          17m   10.244.196.136   node01   <none>           <none>
helm-operation-qmj2t               0/2     Completed   0          17m   10.244.140.75    node02   <none>           <none>
helm-operation-zbn5m               2/2     Running     0          18m   10.244.196.135   node01   <none>           <none>
rancher-5dfdd779dc-fs2rx           1/1     Running     0          21m   10.244.140.70    node02   <none>           <none>
rancher-5dfdd779dc-nk8lf           1/1     Running     0          21m   10.244.196.133   node01   <none>           <none>
rancher-5dfdd779dc-x22cl           1/1     Running     0          21m   10.244.140.71    node02   <none>           <none>
rancher-webhook-6cccfd96b5-tk2xr   1/1     Running     0          16m   10.244.140.77    node02   <none>           <none>

6.5 访问 Rancher UI 页面

(1) 查看 Ingress-nginx 映射出来的端口

[root@master ~]# kubectl get service -n ingress-nginx
NAME                                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             NodePort    10.99.125.52    <none>        80:30421/TCP,443:30741/TCP   48m
ingress-nginx-controller-admission   ClusterIP   10.104.56.126   <none>        443/TCP                      48m

(2) 配置 hosts 文件

两个文件:
linux 系统:/etc/hosts
windows 主机:C:\Windows\System32\drivers\etc\hosts

添加映射:

#因为 Ingress-nginx 的 Type 类型是 NodePort,所以 hosts 文件配置映射,可以选 K8S 机器中任意一台 IP 即可
192.168.10.100 rancher.my.org

(3) 访问 Rancher-UI

访问

https://rancher.my.org:PORT/

在这里插入图片描述
设置新密码,其他默认
在这里插入图片描述
其余参考:
基于 K8S 1.21.2 集群安装 Rancher 2.5.9 HA

Logo

云原生社区为您提供最前沿的新闻资讯和知识内容

更多推荐