容器管理平台 Rancher 介绍
文章目录前言一、Rancher 概述二、Rancher Server 架构三、安装指南四、安装 Helm五、安装 Ingress-nginx5.1 拉取镜像5.2 修改 yaml 文件5.3 安装 Ingress-nginx六、安装 Rancher 2.5.9 HA6.1 添加 Helm Chart 仓库6.2 为 Rancher 创建命名空间6.3 安装证书管理器(1) 创建 cert-mana
文章目录
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
- Github 网址:https://github.com/kubernetes/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
更多推荐
所有评论(0)