Rancher 使用指南
Rancher 是什么?
Rancher 是供采用容器的团队使用的完整软件堆栈。它解决了管理多个Kubernetes集群的运营和安全挑战,并为DevOps团队提供用于运行容器化工作负载的集成工具。
- Rancher 是一个 Kubernetes 管理工具,让你能在任何地方和任何提供商上部署和运行集群。
- Rancher 可以创建来自 Kubernetes 托管服务提供商的集群,创建节点并安装 Kubernetes,或者导入在任何地方运行的现有 Kubernetes 集群。
- Rancher 基于 Kubernetes 添加了新的功能,包括统一所有集群的身份验证和 RBAC,让系统管理员从一个位置控制全部集群的访问。
- 此外,Rancher 可以为集群和资源提供更精细的监控和告警,将日志发送到外部提供商,并通过应用商店(Application Catalog)直接集成 Helm。如果你拥有外部 CI/CD 系统,你可以将其与 Rancher 对接。没有的话,你也可以使用 Rancher 提供的 Fleet 自动部署和升级工作负载。
- Rancher 是一个 全栈式 的 Kubernetes 容器管理平台,为你提供在任何地方都能成功运行 Kubernetes 的工具。
详细可查看 https://ranchermanager.docs.rancher.com/zh/getting-started/overview
Rancher 与 OpenShift / Kubesphere 主要区别对比
OpenShift 与 Rancher 本质上都是基于 k8s 进行功能扩展,形态更接近 K8S Dashboard,而不是容器平台。
如果熟悉 k8s 且对 k8s 有完全的掌控力,选择哪个都可以。
Rancher
-
Rancher 侧重运维,DevOps 领域功能较少。
-
Rancher 的重心还是在多集群管理方面,支持 4 种类型
- 从提供 K8S 托管服务的云厂商创建集群
- 导入已有的集群
- 使用云厂商提供的主机创建集群
- 使用已有的主机创建集群
- 另外 Rancher 提供了开源的跨集群通信方案 Submariner
-
Rancher 的主要功能:
-
Rancher 优点
- 采用图形化方式:
易用的 Web 管理界面,在 Docker 易用性的基础上,再一次降低了使用容器技术部署容器应用的难度。 - 支持多种调度器:
通过环境模板,很容易地创建和部署 Cattle、Swarm、K8S、Mesos 容器集群管理调度平台。 - 管理主机集群:
管理对象是多台主机的集群,而不仅仅是单台容器主机,创建和管理几台、几十台应用服务器集群,只需要Ctrl+C、Ctrl+V,复制粘贴就解决了。 - 内置应用商店:
使用其中的 WordPress 模板,创建一个 WordPress 博客系统,只需点点鼠标,部署难度不高于申请一个免费的电子邮箱! - 资源弹性分配:
内置应用负载均衡器,"服务"最小只需 1 个容器实例,当负载不够/或过剩时,只需点点鼠标,增加/减少"服务"中容器的实例数,即可解决问题,应用系统具有天生的弹性扩容能力。
- 采用图形化方式:
-
不足
- K8S 部署的问题:
由于国内网络和国外网络访问的问题,在国内部署 K8S 集群,有点不方便; - 应用商店的问题:
默认的 Rancher 官方认证和社区贡献的应用商店内容有限,应用还不够丰富,基本上都是网络和存储等基础的应用;个别应用部署后,无法通过相同的操作,再部署同样的另一套应用,比如 Rancher NFS;
- K8S 部署的问题:
OpenShift
-
OpenShift 侧重应用。
OpenShift 在 k8s 基础上扩展了一些功能,如构建镜像、主机组管理等,其他如监控、告警、日志等等。
DevOps 领域相关功能均使用开源方案且无扩展增强。
-
一些内置的功能特性如下:
- Operator 市场
- 自研服务与发现 Route
- 构建镜像
- 集成 Promethus 监控告警
- 机器(主机)管理
-
Openshift 的主要功能:
Kubesphere 对比 Rancher 和 OpenShift
KubeSphere定位是以应用为中心的容器平台,提供简单易用的操作界面,一定程度上降低了学习成本,同时集成了原生istio等功能,更加符合开发的使用习惯。总的来说Rancher注重于对K8s的管理,KubeSphere对应用的管理。
-
优点
- 贴近原生 K8S,运维人员无需学习新东西,kubesphere 更像是 k8s 的前端。
- 图形化强,直观,美观,赏心悦目。
- 便于没有运维能力的开发人员,学习成本低,零基础运维。
- 集成灰度发布,镜像构建器,S2I,prometheus,istio,Jenkins, ES, sonarqube,日志,事件查询,操作审计,资源消费统计,监控等等自动功能,能够称之为"云原生全栈系统",无需开发人员另外学习这些运维技术。
- 商业版相对于 openshift 经济实惠得多。
- 相对于 rancher 客户服务好,因为是国产产品,符合国情,而且客户服务沟通无障碍,rancher 商业版网上信息较少。
-
缺点
- 多集群管理逊色于 rancher 和 openshift,多集群功能是 3.0 版本才新增的。
- rancher 提供了极其简便的K8s部署及管理能力。
- kubesphere 安装比较麻烦,困难,特别是离线安装。
- 起步晚,系统稳定程度比不上 rancher 和 openshift。
- 国际影响力不强,K8S 发行版位列第三,github 上没有 rancher 和 openshift 知名。
- 相对 rancher 比较消耗资源。
- 客户服务和技术支持当然没有商业版的 OpenShift 牛,但是 OpenShift 价格不菲,系统稳定性需求大于预算限制的用户建议 openshift,反之则酌情考虑 kubesphere 或 rancher。
Rancher 安装
本次我们按照官网安装本地版的rancher
-
准备Linux主机
准备一台已安装64位Ubuntu 20.04或18.04的Linux主机(或其他Rancher所支持的Linux发行版),要求至少4GB内存。在该主机上安装Rancher支持的Docker版本。 -
运行Server
在主机上执行以下Docker命令,完成Rancher的安装与运行:bashsudo docker run --privileged -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:stable
之后,打开浏览器,输入
https://<安装容器的主机名或IP地址>
,您即可以访问Rancher Server的UI了。跟随用户界面给您的引导,即可设置完成您的第一个Rancher集群。 -
查找登录密码
bash
[root@node-138 ~]# docker logs container-id 2>&1 | grep "Bootstrap Password:"
[root@node-138 ~]# docker logs f12 2>&1 | grep "Bootstrap Password:"
2023/10/10 02:13:38 [INFO] Bootstrap Password: c5mnjh6rsj96v8d2xnpgbnmgkhx82zgvzfvf2twz4fwvm29qkwqqvc
- 登录
password:SrNCv6wOkN6bzVaA
登陆成功后,需要手动配置新的密码和url,这些都跳过,继续,自动跳转到dashboard
- 体验
创建个nginx的服务进行体验
进入rancher容器
bash
f1201320cf49:/var/lib/rancher # crictl ps
WARN[0000] runtime connect using default endpoints: [unix:///run/k3s/containerd/containerd.sock unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead.
WARN[0000] image connect using default endpoints: [unix:///run/k3s/containerd/containerd.sock unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead.
CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID POD
f7e7a5175fadc 61395b4c586da About an hour ago Running container-0 0 b8bfc5e898216 nginx-vfcw6
e623538be0d03 ead0a4a53df89 2 hours ago Running coredns 3 80d1409730642 coredns-59b4f5bbd5-dx6tz
f1201320cf49:/var/lib/rancher # crictl images
WARN[0000] image connect using default endpoints: [unix:///run/k3s/containerd/containerd.sock unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead.
IMAGE TAG IMAGE ID SIZE
docker.io/library/nginx latest 61395b4c586da 70.5MB
docker.io/rancher/mirrored-coredns-coredns 1.10.1 ead0a4a53df89 53.6MB
docker.io/rancher/mirrored-pause 3.6 6270bb605e12e 686kB
f1201320cf49:/var/lib/rancher # curl 127.0.0.1:80
<a href="https://127.0.0.1/">Found</a>.
可以看到容器是contarinerd,服务可以正常开启