容器管理平台 Rancher 介绍

94 篇文章 9 订阅
31 篇文章 3 订阅


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 versionk8s supported versionAlpine VersionNginx Version
v0.48.11.21, 1.20, 1.193.13.51.20.1
v0.47.01.21, 1.20, 1.193.13.51.20.1
v0.46.01.21, 1.20, 1.193.13.21.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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值